ELK日志分析系統(tǒng)

背景介紹

???????隨著軟件行業(yè)的發(fā)展,軟件系統(tǒng)的生產(chǎn)部署結(jié)構(gòu)日趨復(fù)雜。對(duì)于一個(gè)分布式的系統(tǒng),同一應(yīng)用通常部署在不同的節(jié)點(diǎn)上,通過(guò)負(fù)載均衡的方式將請(qǐng)求分發(fā)到各個(gè)不同的節(jié)點(diǎn)進(jìn)行處理。此時(shí)就會(huì)相對(duì)增加生產(chǎn)運(yùn)維的復(fù)雜度,在進(jìn)行問(wèn)題查詢(xún)的時(shí)候很難判斷本次請(qǐng)求是在哪臺(tái)機(jī)器上執(zhí)行的,也就無(wú)法快速的對(duì)日志進(jìn)行查詢(xún)從而定位問(wèn)題,因此,就需要對(duì)日志進(jìn)行統(tǒng)一的處理和分析,以便方便開(kāi)發(fā)和運(yùn)維人員的問(wèn)題處理速度。

本文介紹的是elastic stack開(kāi)源的ELK組件,主要包括elasticsearch(簡(jiǎn)稱(chēng)es),logstash,kibana三個(gè)核心組件。
es是實(shí)時(shí)全文搜索和分析引擎,提供搜集、分析、存儲(chǔ)數(shù)據(jù)三大功能,對(duì)外提供REST和java api,可擴(kuò)展性的分布式系統(tǒng)。
Logstash是一個(gè)用來(lái)搜集、分析、過(guò)濾日志的工具,幾乎支持所有類(lèi)型的日志,能夠接收多種來(lái)源的日志,包括syslog、mq,并且能夠輸出到多種介質(zhì)中,包括es,郵件等等。
Kibana是一個(gè)基于Web的圖形界面,用于搜索、分析和可視化存儲(chǔ)在 Elasticsearch指標(biāo)中的日志數(shù)據(jù)。它利用Elasticsearch的REST接口來(lái)檢索數(shù)據(jù),不僅允許用戶(hù)定制儀表板視圖,還允許用戶(hù)使用es語(yǔ)法進(jìn)行操作。

ELK初版部署結(jié)構(gòu)圖

但是,在實(shí)際使用的過(guò)程中發(fā)現(xiàn),logstash會(huì)占用很多系統(tǒng)資源,因此決定加入一個(gè)更輕量的日志收集組件(也是elastic stack的組件之一)filebeat。因此在加入filebeat之后,整個(gè)部署架構(gòu)變成了如下圖所示。


ELK第二版部署結(jié)構(gòu)圖

部署步驟

1.準(zhǔn)備工作(ELK 三個(gè)組件必須使用同一個(gè)版本,其他邊緣組件可以不使用)

安裝包:
????elasticsearch-6.6.2.tar.gz
????kibana-6.6.2-linux-x86_64.tar.gz
????logstash-6.6.2.tar.gz
????filebeat-6.6.0-linux-x86_64.tar.gz
????jdk-8u192-linux-x64.tar.gz
機(jī)器:
????192.168.45.174,192.168.45.175,192.168.45.176(ES集群)
????192.168.45.2(logstash,kibana)
????192.168.45.136(應(yīng)用服務(wù)器,安裝filebeat)

2.開(kāi)始安裝ES集群

???注(1):由于ELK組件都是使用java開(kāi)發(fā)的,因此需要安裝1.8以上版本的jdk
??????jdk的安裝方法:https://www.cnblogs.com/kuoAT/p/7555298.html
???注(2):Elasticsearch不能使用root用戶(hù)運(yùn)行,需要單獨(dú)創(chuàng)建用戶(hù)
1)為es創(chuàng)建一個(gè)目錄

mkdir elasticsearch

2)創(chuàng)建一個(gè)elk用戶(hù),并為elk用戶(hù)授權(quán)elasticsearch目錄

groupadd elk
useradd elk -g elk -p elk
chown -R elk:elk elasticsearch

3)上傳es的安裝包,并解壓到elasticsearch目錄

tar -zxvf elasticsearch-6.6.2.tar.gz

4)切換到root用戶(hù),修改以下文件

vi /etc/security/limits.conf
 添加如下四行
@elk hard nofile 65536
@elk soft nofile 65536
@elk  hard    nproc    4096
@elk  soft     nproc    4096
vi /etc/sysctl.conf
 添加以下內(nèi)容
vm.max_map_count=655360

5)執(zhí)行sysctl –p ,使配置生效
6)切換回elk用戶(hù),進(jìn)入 elasticsearch/config/目錄下,修改es的配置文件elasticsearch.yml

  cluster.name: my-application
  node.name: node-1
  node.master: true
  node.data: true
  path.data: elasticsearch/data
  path.logs: elasticsearch/logs
  network.host: 192.168.45.174
  http.port: 9200
  discovery.zen.ping.unicast.hosts: ["192.168.45.174", "192.168.45.175","192.168.45.176"]  // 配置ES集群各個(gè)節(jié)點(diǎn)
  discovery.zen.minimum_master_nodes:2  // 防止腦裂
3.開(kāi)始安裝filebeat

1)將filebeat上傳到要進(jìn)行日志收集的服務(wù)器上192.168.45.136,并解壓

tar -zxvf filebeat-6.6.0-linux-x86_64.tar.gz

2)修改配置文件

vi filebeat-6.6.0-linux-x86_64/filebeat.yml

a. 修改其中的enabled為true,并配置paths(要收集的日志路徑,可以使用* 代替)。也可以根據(jù)exclude_lines和include_lines來(lái)做一些過(guò)濾日志的行為。

filebeat.yml

b. filebeat的配置文件路徑,以及是否允許重新加載配置文件。并設(shè)置索引的分片數(shù)量

filebeat.yml

c. 配置kibana地址


filebeat.yml

d. 配置logstash地址

filebeat.yml
4.開(kāi)始安裝logstash

1)將logstash安裝包上傳到192.168.45.2服務(wù)器并解壓
tar -xvf logstash-6.6.2.tar.gz
2)修改logstash輸入輸出的配置文件logstash-sample.yml
a.input中配置filebeat的監(jiān)聽(tīng)端口
b.filter中可以增加過(guò)濾條件對(duì)所有或者指定索引進(jìn)行過(guò)濾
c.output中可以配置filebeat輸出之后的索引


logstash-sample.yml
5.開(kāi)始安裝kibana

1)將kibana安裝包kibana-6.6.2-linux-x86_64.tar.gz上傳到192.168.45.2,并解壓
tar -xvf kibana-6.6.2-linux-x86_64.tar.gz
2)修改配置文件

  vi kibana-6.6.2-linux-x86_64/config/kibana.yml
  修改下列內(nèi)容
  server.port:5601
  server.host:"192.168.45.2"
  elasticsearch.host:["http://192.168.45.174", "192.168.45.175","192.168.45.176"]
6.分別啟動(dòng)ES集群,logstash,filebeat,kibana

1)分別在對(duì)應(yīng)的bin目錄下執(zhí)行下列操作

  nohup ./elasticsearch >elasticsearch.log 2>&1 &    //ES啟動(dòng)服務(wù)
  nohup ./logstash >logstash.log 2>&1 &    //logstash啟動(dòng)服務(wù)
  nohup ./filebeat -e -c filebeat.yml >filebeat.log 2>&1 &    // filebeat啟動(dòng)服務(wù)
  nohup ./kibana >kibana.log 2>&1 &   //kibana啟動(dòng)服務(wù)

2)啟動(dòng)后可以在瀏覽器中輸入192.168.45.2:5601來(lái)進(jìn)入kibana界面進(jìn)行日志查詢(xún)


kibana查詢(xún)界面
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容