日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

fluentd mysql_使用Fluentd + MongoDB构建实时日志收集系统

發(fā)布時(shí)間:2025/3/21 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fluentd mysql_使用Fluentd + MongoDB构建实时日志收集系统 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

日志處理場(chǎng)景

日志量大

日志分散不易進(jìn)行統(tǒng)一分析

難以添加有效監(jiān)控

系統(tǒng)實(shí)現(xiàn)

Fluentd(td-agent)

MongoDB

Python Script(PyMongo module)

Zabbix

解決方案

系統(tǒng)架構(gòu)

Fluentd+Mongodb+Python+zabbix

Fluentd實(shí)時(shí)收集LB日志,JSON化,存入中央Mongodb

Python程序查詢Mongodb數(shù)據(jù)進(jìn)行實(shí)時(shí)計(jì)算;計(jì)算結(jié)果存入zabbix;zabbix負(fù)責(zé)告警及圖形展現(xiàn)

Fluentd/Mongodb架構(gòu)圖

Fluentd介紹

Fluentd is an open source data collector for unified logging layer.

Fluentd allows you to unify data collection and consumption for a better use and understanding of data.

Fluentd是一個(gè)日志收集系統(tǒng),它的特點(diǎn)在于其各部分均是可定制化的,你可以通過(guò)簡(jiǎn)單的配置,將日志收集到不同的地方。

fluentd說(shuō)明

在不使用plugin的情況下Fluentd僅僅是將日志輸入轉(zhuǎn)化為JSON格式輸出的工具;各類plugin極大拓展了Fluentd的功能

Fluentd plugin最重要的有如下三種:

Input plugin 定義日志來(lái)源標(biāo)準(zhǔn)化,輸入的格式

Buffer plugin 定義fluentd緩存的配置以實(shí)現(xiàn)可靠性

Output Plugin 定義輸出的格式及目的地,可以是文件,網(wǎng)絡(luò),數(shù)據(jù)庫(kù),etc

Fluentd Input Plugin

http

讓fluentd從http client獲取數(shù)據(jù)

tail

tail是最常用的input plugin;

type?tail

path?/var/log/httpd-access.log?#tail監(jiān)聽的文件地址

tag?apache.access???????????????????#每個(gè)輸入需要一個(gè)特定標(biāo)簽以區(qū)別

format?apache|syslog|自定義正則???????#format可以靈活自定義

foward

將其他fluentd/fluent-cat命令的輸出作為該fluentd的輸入;

exec

通過(guò)執(zhí)行外部命令,以命令執(zhí)行的結(jié)果作為fluentd的輸入;

Fluentd Output Plugin

Ouput Plugin用于存儲(chǔ)Fluentd收集來(lái)的數(shù)據(jù);目前有很多開源的plugin,如:fluentd-flume,fluentd-splunk,fluentd-cassandra,fluentd-scribe,fluentd-mongodb

Output plugin中最完美的當(dāng)屬mongodb plugin,因?yàn)镕luentd/Mongodb都以JSON為基礎(chǔ);mongodb良好的插入查詢性能可以頂住海量日志實(shí)時(shí)分析的壓力;mongodb的capped collection很好的解決了日志定量輪轉(zhuǎn)的問(wèn)題

安裝部署

安裝

ubuntu 12.04 安裝,針對(duì)本版本,其他版本請(qǐng)看官網(wǎng)文檔

curl?-L?http://toolbelt.treasuredata.com/sh/install-ubuntu-precise-td-agent2.sh?|?sh

配置

如果你是使用上面的deb/rpm包安裝的Fluentd,那么配置文件位置在:/etc/td-agent/td-agent.conf,否則其位置應(yīng)該在:/etc/fluentd/fluentd.conf

首先我們編輯配置文件中的source來(lái)設(shè)置日志來(lái)源

type?tail

format?apache

path?/var/log/apache2/access_log

tag?mongo.apache

其中:

type tail: tail方式是 Fluentd 內(nèi)置的輸入方式,其原理是不停地從源文件中獲取新的日志。

format apache: 指定使用 Fluentd 內(nèi)置的 Apache 日志解析器。

path /var/log/apache2/access_log: 指定日志文件位置。

tag mongo.apache: 指定tag,tag被用來(lái)對(duì)不同的日志進(jìn)行分類

自定義format配置:

除了默認(rèn)的apache、json等f(wàn)armat配置,還可以通過(guò)寫正則來(lái)配置解析器,如:

format?/^(?[^?]*)?[^?]*?(?[^?]*)?\[(?[^\]]*)\]?"(?\S+)(?:?+(?[^?]*)?+\S*)?"?(?[^?]*)?(?[^?]*)(?:?"(?[^\"]*)"?"(?[^\"]*)")?$/

下面是fulentd自帶的apache解析器:

class?ApacheParser?

REGEXP?=?/^(?[^?]*)?[^?]*?(?[^?]*)?\[(?[^\]]*)\]?"(?\S+)(?:?+(?[^?]*)?+\S*)?"?(?[^?]*)?(?[^?]*)(?:?"(?[^\"]*)"?"(?[^\"]*)")?$/

TIME_FORMAT?=?"%d/%b/%Y:%H:%M:%S?%z"

。。。

https://github.com/fluent/fluentd/blob/710fc88ded9d8d5e12ee4bd4a02a1d5c86cadf4e/lib/fluent/parser.rb

下面再來(lái)編輯輸出配置,配置日志收集后存儲(chǔ)到MongoDB中

#?plugin?type

type?mongo

#?mongodb?db?+?collection

database?apache

collection?access

#?mongodb?host?+?port

host?localhost

port?27017

#?interval

flush_interval?10s

match標(biāo)簽后面可以跟正則表達(dá)式以匹配我們指定的tag,只有匹配成功的tag對(duì)應(yīng)的日志才會(huì)運(yùn)用里面的配置。配置中的其它項(xiàng)都比較好理解,看注釋就可以了,其中flush_interval是用來(lái)控制多長(zhǎng)時(shí)間將日志寫入MongoDB一次。

啟動(dòng)?fluentd(td-agent)

配置文件:?/etc/td-agent/td-agent.conf

啟動(dòng)命令:?sudo?/etc/init.d/td-agent?start

停止:?sudo?/etc/init.d/td-agent?stop

重啟:?sudo?/etc/init.d/td-agent?reload

以上主要對(duì)于fluentd作為重點(diǎn),對(duì)于mongo配置安裝和日志分析這里沒(méi)有敘述。

附:

apache/nginx access.log 說(shuō)明

訪問(wèn)日志access_log記錄了所有對(duì)Web服務(wù)器的訪問(wèn)活動(dòng)。

正如其名字所示,訪問(wèn)日志access_log記錄了所有對(duì)Web服務(wù)器的訪問(wèn)活動(dòng)。

下面是訪問(wèn)日志中一個(gè)典型的記錄:

10.1.1.95?-?e800?[18/Mar/2005:12:21:42?+0800]?"GET?/stats/awstats.pl?config=e800?HTTP/1.1"?200?899?"http://10.1.1.1/pv/"?"Mozilla/4.0?(compatible;?MSIE?6.0;?Windows?NT?5.1;?Maxthon)"

access日志組成:

這行內(nèi)容由9項(xiàng)構(gòu)成,上面的例子中有兩項(xiàng)空白,但整行內(nèi)容仍舊分成了9項(xiàng)。

第一項(xiàng)信息是遠(yuǎn)程主機(jī)的地址。如果你想知道這個(gè)IP地址的域名,可通過(guò)nslookup或者h(yuǎn)ost命令來(lái)查看。如果你想讓Apache自己找出這個(gè)IP 的主機(jī)名,可以打開這個(gè)開關(guān):HostnameLookups。(建議最好不要打開,會(huì)影響Apache記錄服務(wù)器日志的速度)

第二項(xiàng)是空白,用一個(gè)"-"占位符替代。實(shí)際上絕大多數(shù)時(shí)候這一項(xiàng)都是如此。這個(gè)位置用于記錄瀏覽者的標(biāo)識(shí),這不只是瀏覽者的登錄名字,而是瀏覽者的 email地址或者其他唯一標(biāo)識(shí)符。這個(gè)信息由identd返回,或者直接由瀏覽器返回。很早的時(shí)候,那時(shí)Netscape 0.9還占據(jù)著統(tǒng)治地位,這個(gè)位置往往記錄著瀏覽者的email地址。然而,由于有人用它來(lái)收集郵件地址和發(fā)送垃圾郵件,所以它未能保留多久,很久之前市 場(chǎng)上幾乎所有的瀏覽器就取消了這項(xiàng)功能。因此,到了今天,我們?cè)谌罩居涗浀牡诙?xiàng)看到email地址的機(jī)會(huì)已經(jīng)微乎其微了。

第三項(xiàng)也是e800。這個(gè)位置用于記錄瀏覽者進(jìn)行身份驗(yàn)證時(shí)提供的名字。當(dāng)然,如果網(wǎng)站的某些內(nèi)容要求用戶進(jìn)行身份驗(yàn)證,那么這項(xiàng)信息是不會(huì)空白的。但是,對(duì)于大多數(shù)網(wǎng)站來(lái)說(shuō),日志文件的大多數(shù)記錄中這一項(xiàng)仍舊是空白的。

日志記錄的第四項(xiàng)是請(qǐng)求的時(shí)間。這個(gè)信息用方括號(hào)包圍,而且采用所謂的"公共日志格式"或"標(biāo)準(zhǔn)英文格式"。因此,上例日志記錄表示請(qǐng)求的時(shí)間是2005年3月18日12:21:42。時(shí)間信息最后的"+0800"表示服務(wù)器所處時(shí)區(qū)位于UTC之后的8小時(shí)。

日志記錄的第五項(xiàng)信息或許是整個(gè)日志記錄中最有用的信息,它告訴我們服務(wù)器收到的是一個(gè)什么樣的請(qǐng)求。該項(xiàng)信息的典型格式是"METHOD RESOURCE PROTOCOL",即"方法 資源 協(xié)議"。

RESOURCE是指瀏覽者向服務(wù)器請(qǐng)求的文檔,或URL。在這個(gè)例子中,瀏覽者請(qǐng)求的是"/stats/awstats.pl?config=e800 "。

在上例中,METHOD是GET,其他經(jīng)常可能出現(xiàn)的METHOD還有POST和HEAD。此外還有不少可能出現(xiàn)的合法METHOD,但主要就是這三種。

PROTOCOL通常是HTTP,后面再加上版本號(hào)。

日志記錄的第六項(xiàng)信息是狀態(tài)代碼。它告訴我們請(qǐng)求是否成功,或者遇到了什么樣的錯(cuò)誤。大多數(shù)時(shí)候,這項(xiàng)值是200,它表示服務(wù)器已經(jīng)成功地響應(yīng)瀏覽器的 請(qǐng)求,一切正常。一般地說(shuō),以2開頭的狀態(tài)代碼表示成功,以3開頭的狀態(tài)代碼表示由于各種不同的原因用戶請(qǐng)求被重定向到了其他位置,以4開頭的狀態(tài)代碼表 示客戶端存在某種錯(cuò)誤,以5開頭的狀態(tài)代碼表示服務(wù)器遇到了某個(gè)錯(cuò)誤。

日志記錄的第七項(xiàng)表示發(fā)送給客戶端的總字節(jié)數(shù)。它告訴我們傳輸是否被打斷(即,該數(shù)值是否和文件的大小相同)。把日志記錄中的這些值加起來(lái)就可以得知服務(wù)器在一天、一周或者一月內(nèi)發(fā)送了多少數(shù)據(jù)。

日志記錄的第八項(xiàng)記錄的是客戶在提出請(qǐng)求時(shí)所在的目錄或URL。這次的是"http://10.1.1.1/pv/"即10.1.1.1的pv目錄下的首頁(yè)。大多數(shù)情況下,首頁(yè)會(huì)是在httpd.conf中DocumentRoot 指令后面規(guī)定的那些類型和名字的web文件。

日志記錄的第九項(xiàng)表示客戶端的詳細(xì)信息,這樣你就不難理解為什么有些網(wǎng)站能夠在頁(yè)面中顯示你的IP、OS、Browser了。

【參考文獻(xiàn)】

http://www.csdn.net/article/2014-08-08/2821120

總結(jié)

以上是生活随笔為你收集整理的fluentd mysql_使用Fluentd + MongoDB构建实时日志收集系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。