ELK 大規(guī)模日志實(shí)時(shí)處理系統(tǒng)應(yīng)用簡介

本文已經(jīng)更新到 ELK 5.x 版本:http://www.reibang.com/p/f3658d267b5d

What it is ?


ELK 是軟件集合 Elasticsearch趾牧、Logstash、Kibana 的簡稱肯污,由這三個(gè)軟件及其相關(guān)的組件可以打造大規(guī)模日志實(shí)時(shí)處理系統(tǒng)翘单。

其中,Elasticsearch 是一個(gè)基于 Lucene 的蹦渣、支持全文索引的分布式存儲(chǔ)和索引引擎哄芜,主要負(fù)責(zé)將日志索引并存儲(chǔ)起來,方便業(yè)務(wù)方檢索查詢剂桥。

Logstash 是一個(gè)日志收集忠烛、過濾、轉(zhuǎn)發(fā)的中間件权逗,主要負(fù)責(zé)將各條業(yè)務(wù)線的各類日志統(tǒng)一收集美尸、過濾后,轉(zhuǎn)發(fā)給 Elasticsearch 進(jìn)行下一步處理斟薇。

Kibana 是一個(gè)可視化工具师坎,主要負(fù)責(zé)查詢 Elasticsearch 的數(shù)據(jù)并以可視化的方式展現(xiàn)給業(yè)務(wù)方,比如各類餅圖堪滨、直方圖胯陋、區(qū)域圖等。

所謂“大規(guī)模”指的是 ELK 組成的系統(tǒng)以一種水平擴(kuò)展的方式每天支持收集遏乔、過濾义矛、索引和存儲(chǔ) TB 規(guī)模以上的各類日志(注:1TB = 1024GB )。

通常盟萨,各類文本形式的日志都在處理范圍凉翻,包括但不限于 Web 訪問日志,如 Nginx/Apache Access Log捻激;應(yīng)用運(yùn)行時(shí)日志制轰,如 Swift/PHP/Python/Ruby/Java/C# 等構(gòu)建的應(yīng)用程序在執(zhí)行業(yè)務(wù)過程中記錄下來的日志。?

How it work ?


圖 1. ELK 系統(tǒng)應(yīng)用架構(gòu)

上圖是 ELK 實(shí)際應(yīng)用中典型的一種架構(gòu)胞谭,其中 Filebeat 部署在具體的業(yè)務(wù)機(jī)器上垃杖,通過定時(shí)監(jiān)控的方式獲取增量的日志,并轉(zhuǎn)發(fā) push 到 Redis 的一個(gè) list 對(duì)象中暫存丈屹。

Redis 以高讀寫性能以及擁有支持 push/pop 操作的 list 數(shù)據(jù)結(jié)構(gòu)的特征调俘,作為一個(gè)緩沖隊(duì)列的角色,接收所有從 Filebeat 收集轉(zhuǎn)發(fā)過來的日志泉瞻。

然后脉漏,Logstash 從 Redis 中獲取日志苞冯,并通過 Input-Filter-Output 三個(gè)階段的處理袖牙,更改或過濾日志,最終輸出我們感興趣的數(shù)據(jù)舅锄。

最后鞭达,Elasticsearch 存儲(chǔ)并索引從 Logstash 轉(zhuǎn)發(fā)過來的數(shù)據(jù),并通過 Kibana 查詢和可視化展示皇忿,達(dá)到實(shí)時(shí)分析日志的目的畴蹭。

Getting started


我們一步步安裝部署 ELK 系統(tǒng)的各個(gè)組件,然后以網(wǎng)站訪問日志為例進(jìn)行數(shù)據(jù)實(shí)時(shí)分析鳍烁。(假定已經(jīng)有部署好的 Nginx 服務(wù)器和 Redis 實(shí)例)

首先叨襟,到 ELK 官網(wǎng)下載需要用到的 Filebeat/Logstash/Elasticsearch/Kibana 軟件安裝包。(推薦下載編譯好的二進(jìn)制可執(zhí)行文件幔荒,直接解壓執(zhí)行就可以部署)

1糊闽、下載并配置 Filebeat,開啟日志增量監(jiān)控

解壓后的 Filebeat 包含以下三個(gè)文件:

解壓后的 Filebeat

修改其中 filebeat.yml 的內(nèi)容為:

filebeat.yml 配置文件示例

上述配置表示爹梁,F(xiàn)ilebeat 每 10s 監(jiān)控一次

/path/to/nginx/access/*.log

目錄下所有以 .log 結(jié)尾的文件右犹,并且將增量日志轉(zhuǎn)發(fā)到 Redis 服務(wù)器。

然后姚垃,后臺(tái)啟動(dòng) Filebeat 進(jìn)程:

nohup ./filebeat -c ./filebeat.yml &?

這時(shí)候念链,在瀏覽器上訪問 Nginx 服務(wù)器并生成訪問日志后,F(xiàn)ilebeat 會(huì)及時(shí)的將日志轉(zhuǎn)發(fā)到 Redis 服務(wù)器。轉(zhuǎn)發(fā)的時(shí)候掂墓,F(xiàn)ilebeat 會(huì)傳輸 JOSN 對(duì)象谦纱,而且原生的 Nginx 日志文本會(huì)作為 message 字段。

傳輸?shù)?JOSN 對(duì)象

2君编、下載并配置 Logstash 服协,開啟日志過濾

解壓后的 Logstash 包含以下目錄和文件:

Logstash 解壓目錄和文件

創(chuàng)建并編輯 filebeat-logstash-elastic.conf 文件,內(nèi)容為:

Logstash 配置文件

配置文件主要分為三大部分: Input / Filter / Output啦粹,對(duì)應(yīng)收集偿荷、過濾、轉(zhuǎn)發(fā)三個(gè)階段唠椭。顯然跳纳,Input 階段只需要指定 Redis 服務(wù)器相關(guān)信息即可,Output 階段只需要指定 Elasticsearch 服務(wù)器相關(guān)的信息即可贪嫂,比較復(fù)雜的是 Filter 過濾階段寺庄。

可以看到,上述配置中力崇,grok 插件使用正則表達(dá)式將 Nginx 日志的各個(gè)字段匹配出來斗塘,包括訪問用戶 ip 地址、請(qǐng)求時(shí)間和地址亮靴、服務(wù)器響應(yīng)時(shí)間和響應(yīng)字節(jié)以及用戶標(biāo)示 User-Agent 等馍盟。

然后,mutate茧吊、ruby贞岭、useragent、date搓侄、kv 等插件配合使用瞄桨,過濾并獲取到感興趣的字段,最后輸出如下示例的 JOSN 對(duì)象:

Logstash 轉(zhuǎn)換后輸出的 JSON 對(duì)象

這就是最終存儲(chǔ)在 Elasticsearch 中的文檔內(nèi)容讶踪。

接下來芯侥,就可以啟動(dòng) Logstash 進(jìn)程了:

nohup ./bin/logstash agent -f ./filebeat-logstash-elastic.conf &

3、配置并啟動(dòng) Elasticsearch 服務(wù)

下載并解壓后乳讥,可以看到 ES 的目錄和文件:

ES 目錄和文件

修改 conf/elasticsearch.yml 內(nèi)容如下:

ES 配置文件

指定文檔和日志的存儲(chǔ)路徑以及監(jiān)聽的地址和端口即可柱查。注意,應(yīng)當(dāng)保證有足夠的磁盤空間來存儲(chǔ)文檔雏婶,否則 ES 將拒絕寫入新數(shù)據(jù)物赶。

環(huán)境變量 ES_HEAP_SIZE 被讀取為 Elasticsearch 的最大內(nèi)存空間,一般設(shè)置為你機(jī)器內(nèi)存的一半即可:?

export ES_HEAP_SIZE=10g

然后留晚,啟動(dòng) ES 服務(wù)即可:

nohup ./bin/elasticsearch &

4酵紫、配置并啟動(dòng) Kibana 服務(wù)

下載解壓后的 Kibana 目錄和文件:

Kibana 目錄和文件

修改 conf/kibana.yml 告嘲,內(nèi)容為:

?elasticsearch.url: "http://localhost:9200"

指定 ES 服務(wù)的地址和端口即可,然后啟動(dòng) Kibana 進(jìn)程:

nohup ./bin/kibana &

tips:最好手動(dòng)退出一下終端

exit

否則奖地,關(guān)閉終端后橄唬,Kibana 進(jìn)程可能也停止運(yùn)行了。

然后参歹,就可以在瀏覽器訪問 Kibana 了 http://10.142.86.182:5601/ (換成相應(yīng)的 IP 地址訪問)

Kibana 界面

注意:初次訪問 Kibana 的時(shí)候仰楚,需要配置一個(gè)默認(rèn)的 ES 索引,一般填寫 logstash-* 即可犬庇。

接下來僧界,就可以使用 Kibana 的可視化功能分析日志了:

Kibana Visualize 功能


Kibana 可視化數(shù)據(jù)分析

總結(jié)


綜上,我們配置并部署了 ELK 的整套組件臭挽,實(shí)現(xiàn)了日志收集捂襟、過濾、索引和可視化的全部流程欢峰,基于這套系統(tǒng)我們就可以實(shí)時(shí)的了解業(yè)務(wù)運(yùn)行狀態(tài)葬荷。

tips:

ELK 各個(gè)組件運(yùn)行過程中會(huì)產(chǎn)生大量的日志,所以需要注意日志處理纽帖,要么 > /dev/null 全部忽略宠漩,要么存儲(chǔ)在大磁盤空間,否則可能寫滿磁盤導(dǎo)致進(jìn)程被 killed

作者微博/微信 @Ceelog懊直,轉(zhuǎn)載請(qǐng)注明出處 ;)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捡遍,一起剝皮案震驚了整個(gè)濱河市逊桦,隨后出現(xiàn)的幾起案子腋粥,更是在濱河造成了極大的恐慌抵卫,老刑警劉巖锋喜,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昆烁,死亡現(xiàn)場離奇詭異侥加,居然都是意外死亡缆娃,警方通過查閱死者的電腦和手機(jī)蛾默,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門懦铺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人支鸡,你說我怎么就攤上這事冬念。” “怎么了牧挣?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵急前,是天一觀的道長。 經(jīng)常有香客問我瀑构,道長裆针,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮世吨,結(jié)果婚禮上澡刹,老公的妹妹穿的比我還像新娘。我一直安慰自己耘婚,他們只是感情好罢浇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沐祷,像睡著了一般嚷闭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赖临,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天凌受,我揣著相機(jī)與錄音,去河邊找鬼思杯。 笑死胜蛉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的色乾。 我是一名探鬼主播誊册,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼暖璧!你這毒婦竟也來了案怯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤澎办,失蹤者是張志新(化名)和其女友劉穎嘲碱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體局蚀,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡麦锯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了琅绅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扶欣。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖千扶,靈堂內(nèi)的尸體忽然破棺而出料祠,到底是詐尸還是另有隱情,我是刑警寧澤澎羞,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布髓绽,位于F島的核電站,受9級(jí)特大地震影響妆绞,放射性物質(zhì)發(fā)生泄漏顺呕。R本人自食惡果不足惜接谨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望塘匣。 院中可真熱鬧脓豪,春花似錦、人聲如沸忌卤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驰徊。三九已至笤闯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棍厂,已是汗流浹背颗味。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牺弹,地道東北人浦马。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像张漂,于是被迫代替她去往敵國和親晶默。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容