ELK+Filebeat+Kafka構(gòu)建海量日志分析

為什么要做日志分析平臺(tái)幕与,隨著業(yè)務(wù)量的增大挑势,單個(gè)日志文件的大小達(dá)到幾個(gè)GB,這時(shí)候啦鸣,我們發(fā)現(xiàn)用系統(tǒng)自帶的工具潮饱,cat/grep/awk/tail越來(lái)越顯得力不從心,除了操作系統(tǒng)日志诫给,還有應(yīng)用系統(tǒng)的日志香拉,分布在各個(gè)服務(wù)器上,日志分析工作異常繁瑣中狂,開(kāi)發(fā)人員想獲取日志信息也異常麻煩缕溉。所以為了解決現(xiàn)狀,接下來(lái)我們將構(gòu)建這個(gè)日志分析平臺(tái)吃型。

1. 架構(gòu)圖

3.png

2.架構(gòu)圖分析

  1. 將filebeat部署到需要采集日志的服務(wù)器上证鸥,filebeat將采集到的日志數(shù)據(jù)傳輸?shù)絢afka中。
  2. kafka將獲取到的日志信息存儲(chǔ)起來(lái)勤晚,并且作為輸入(input)傳輸給logstash枉层。
  3. logstash將kafka中的數(shù)據(jù)作為輸入,并且把kafka中的數(shù)據(jù)進(jìn)行過(guò)濾等其他操作赐写,然后把操作后得到的數(shù)據(jù)輸入(output)到es(elasticsearch)中鸟蜡。
  4. es(基于lucene搜索引擎)對(duì)logstash中的數(shù)據(jù)進(jìn)行處理,并且將數(shù)據(jù)作為輸入傳送給kibana進(jìn)行顯示挺邀。

注:上圖使用了kafka揉忘,es集群架構(gòu)圖,我本次實(shí)驗(yàn)并不使用集群端铛。旨在疏通整個(gè)流程泣矛,并實(shí)現(xiàn)可用。對(duì)于做大數(shù)據(jù)采集分析的一般會(huì)使用這種集群架構(gòu)禾蚕。提高公司內(nèi)部的日志分析及排錯(cuò)效率您朽,非集群架構(gòu)也足夠。

3.部署該平臺(tái)需要的環(huán)境以及軟件换淆,軟件及版本如下

172.17.217.131 filebeat 1Core 1GB
172.17.217.130 kafka logstash 1Core 2GB
172.17.217.129 elasticsearch kibana 2Core 8GB

5.png

4.安裝以及配置各軟件

1.安裝filebeat

[root@web-server softwares]# tar -xf filebeat-6.1.3-linux-x86_64.tar.gz 
[root@web-server softwares]# mv filebeat-6.1.3-linux-x86_64 /usr/local/filebeat6.1
[root@web-server filebeat6.1]# pwd
/usr/local/filebeat6.1
[root@web-server filebeat6.1]# cp filebeat.yml filebeat.yml.bak
[root@web-server filebeat6.1]# > filebeat.yml #清空文件
#修改filebeat.yml文件
[root@web-server filebeat6.1]# cat filebeat.yml
filebeat.prospectors:
- type: log
  #設(shè)置為true使該配置生效
  enabled: true
  paths:
  #收集日志路徑哗总,多個(gè)的話繼續(xù)往下寫(xiě)即可
   - /var/log/messages
  fileds:
   #自定義屬性几颜,用來(lái)區(qū)分不同服務(wù)器上的日志
   log_source: 172.17.217.131-system
- type: log
  enabled: true
  paths:
   - /var/log/nginx/accesss.log
  fields:
   log_source: 172.17.217.131-nginx
  #下面三個(gè)屬性配置根據(jù)[ 將Java異常堆棧收集為一條消息,也可以在logstash中配置
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after
  #該屬性可以配置只收集error級(jí)別和warn級(jí)別的日志讯屈,如果與配置多行收集蛋哭,一定要將這個(gè)配置放在多行的后面
  include_lines: ['ERROR','WARN']
  #該屬性配置不收集DEBUG級(jí)別的日志,如果配置多行涮母,這個(gè)配置也要放在多行的后面
  exclude_lines: ['DEBUG']

output.logstash:
  #如果是多個(gè)logstash具壮,將下面的三條屬性打開(kāi)
  #hosts: ["localhost:5044","localhost:5045"]
  #loadbalance: true
  #worker: 3
  hosts: ["172.17.217.130:5044"]
  #這個(gè)index的值也可以自定義,用來(lái)修改@metadata[beat]值哈蝇,默認(rèn)是filebeat
  index: "filebeat" 

配置解釋:

type: log 讀取日志文件的每一行(默認(rèn))
enabled: true 該配置是否生效,如果改為false,將不收集該配置的日志
paths: 要抓取日志的全路徑
fields: 自定義屬性,可以定義多個(gè),繼續(xù)往下排就行
multiline.pattern: 正則表達(dá)式
multiline.negate: true 或 false棺妓;默認(rèn)是false,匹配pattern的行合并到上一行炮赦;true怜跑,不匹配pattern的行合并到上一行
multiline.match: after 或 before,合并到上一行的末尾或開(kāi)頭
include_lines: ['ERROR','WARN'] 該屬性可以配置只收集error級(jí)別和warn級(jí)別的日志,如果有配置多行收集,一定要將這個(gè)配置放在多行的后面
exclude_lines: ['DEBUG'] 該屬性配置不收集DEBUG級(jí)別的日志,如果配置多行 這個(gè)配置也要放在多行的后面
hosts: Logstash所在的主機(jī)
loadbalance: 如果設(shè)置為T(mén)RUE和配置了多臺(tái)logstash主機(jī)吠勘,輸出插件將負(fù)載均衡的發(fā)布事件到所有l(wèi)ogstash主機(jī)性芬。如果設(shè)置為false,輸出插件發(fā)送所有事件到隨機(jī)的一臺(tái)主機(jī)上剧防,如果選擇的不可達(dá)將切換到另一臺(tái)主機(jī)植锉。默認(rèn)是false。
worker: 每個(gè)配置的主機(jī)發(fā)布事件到Logstash的工作者數(shù)量峭拘。這最適用于啟用負(fù)載平衡模式俊庇。示例:如果您有2個(gè)主機(jī)和3個(gè)工作人員,則共有6個(gè)工作人員啟動(dòng)(每個(gè)主機(jī)3個(gè))鸡挠。

2.安裝logstash

[root@git softwares]# tar -xf logstash-6.2.3.tar.gz 
[root@git softwares]# mv logstash-6.2.3 /usr/local/logstash6.2.3
[root@git softwares]# cd /usr/local/logstash6.2.3/
#創(chuàng)建logstash.conf文件并編輯
[root@git logstash6.2.3]# cat logstash.conf 
input {
    beats {
        port => 5044
}

}

output {

    elasticsearch {
     hosts => ["http://172.17.217.129:9200"]
     index => "%{[fields][log_source]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"

}

}

3.安裝elasticsearch

[root@jenkins softwares]# tar -xf elasticsearch-6.1.3.tar.gz 
[root@jenkins softwares]# mv elasticsearch-6.1.3 /usr/local/elasticsearch6.1.3
[root@jenkins softwares]# cd /usr/local/elasticsearch6.1.3/
[root@jenkins elasticsearch6.1.3]# cd config/
[root@jenkins config]# ls
elasticsearch.yml  jvm.options  log4j2.properties
[root@jenkins config]# cp elasticsearch.yml elasticsearch.yml.bak
[root@jenkins config]# vim elasticsearch.yml
修改IP和端口即可
1.png
[root@jenkins config]# useradd elastic
[root@jenkins config]# chown -R elastic /usr/local/elasticsearch6.1.3/
[root@jenkins config]# su - elastic
[elastic@jenkins ~]$ pwd
/home/elastic
[elastic@jenkins ~]$ cd /usr/local/elasticsearch6.1.3/
[elastic@jenkins elasticsearch6.1.3]$ ls
bin  config  lib  LICENSE.txt  modules  NOTICE.txt  plugins  README.textile
[elastic@jenkins elasticsearch6.1.3]$ ./bin/elasticsearch 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辉饱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拣展,更是在濱河造成了極大的恐慌彭沼,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件备埃,死亡現(xiàn)場(chǎng)離奇詭異姓惑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)按脚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)于毙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人乘寒,你說(shuō)我怎么就攤上這事望众》瞬梗” “怎么了伞辛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵烂翰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蚤氏,道長(zhǎng)甘耿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任竿滨,我火速辦了婚禮佳恬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘于游。我一直安慰自己毁葱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布贰剥。 她就那樣靜靜地躺著倾剿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚌成。 梳的紋絲不亂的頭發(fā)上前痘,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音担忧,去河邊找鬼芹缔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瓶盛,可吹牛的內(nèi)容都是我干的最欠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼惩猫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼窒所!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起帆锋,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吵取,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后锯厢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體皮官,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年实辑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捺氢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剪撬,死狀恐怖摄乒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤馍佑,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布斋否,位于F島的核電站,受9級(jí)特大地震影響拭荤,放射性物質(zhì)發(fā)生泄漏茵臭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一舅世、第九天 我趴在偏房一處隱蔽的房頂上張望旦委。 院中可真熱鬧,春花似錦雏亚、人聲如沸缨硝。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)追葡。三九已至,卻和暖如春奕短,著一層夾襖步出監(jiān)牢的瞬間宜肉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工翎碑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谬返,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓日杈,卻偏偏與公主長(zhǎng)得像遣铝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子莉擒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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