文章轉自:https://www.jianshu.com/p/66db4d660d9c
ELK中文網: https://elasticsearch.cn/
目錄
背景介紹
老架構
新架構
部署步驟
1.準備工作(ELK 三個元件必須使用同一個版本)
2.開始安裝ES叢集
3.開始安裝filebeat
4.開始安裝logstash
5.開始安裝kibana
6.分别啟動ES叢集,logstash,filebeat,kibana
參考文章
背景介紹
随着軟體行業的發展,軟體系統的生産部署結構日趨複雜。對于一個分布式的系統,同一應用通常部署在不同的節點上,通過負載均衡的方式将請求分發到各個不同的節點進行處理。此時就會相對增加生産運維的複雜度,在進行問題查詢的時候很難判斷本次請求是在哪台機器上執行的,也就無法快速的對日志進行查詢進而定位問題,是以,就需要對日志進行統一的處理和分析,以便友善開發和運維人員的問題處理速度。
本文介紹的是elastic stack開源的ELK元件,主要包括elasticsearch(簡稱es),logstash,kibana三個核心元件。
es是實時全文搜尋和分析引擎,提供搜集、分析、存儲資料三大功能,對外提供REST和java api,可擴充性的分布式系統。
Logstash是一個用來搜集、分析、過濾日志的工具,幾乎支援所有類型的日志,能夠接收多種來源的日志,包括syslog、mq,并且能夠輸出到多種媒體中,包括es,郵件等等。
Kibana是一個基于Web的圖形界面,用于搜尋、分析和可視化存儲在 Elasticsearch名額中的日志資料。它利用Elasticsearch的REST接口來檢索資料,不僅允許使用者定制儀表闆視圖,還允許使用者使用es文法進行操作。
一個完整的集中式日志系統,需要包含以下幾個主要特點:
- 收集-能夠采集多種來源的日志資料
- 傳輸-能夠穩定的把日志資料傳輸到中央系統
- 存儲-如何存儲日志資料
- 分析-可以支援 UI 分析
- 警告-能夠提供錯誤報告,監控機制
ELK提供了一整套解決方案,并且都是開源軟體,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用。目前主流的一種日志系統。
老架構
ELK初版部署結構圖
新架構
但是,在實際使用的過程中發現,logstash會占用很多系統資源,是以決定加入一個更輕量的日志收集元件(也是elastic stack的元件之一)filebeat。是以在加入filebeat之後,整個部署架構變成了如下圖所示。
ELK第二版部署結構圖
部署步驟
1.準備工作(ELK 三個元件必須使用同一個版本)
安裝包:
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
機器:
192.168.45.174,192.168.45.175,192.168.45.176(ES叢集)
192.168.45.2(logstash,kibana)
192.168.45.136(應用伺服器,安裝filebeat)
2.開始安裝ES叢集
注(1):由于ELK元件都是使用java開發的,是以需要安裝1.8以上版本的jdk
jdk的安裝方法:https://www.cnblogs.com/kuoAT/p/7555298.html
注(2):Elasticsearch不能使用root使用者運作,需要單獨建立使用者
1)為es建立一個目錄
mkdir elasticsearch
2)建立一個elk使用者,并為elk使用者授權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使用者,修改以下檔案
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
添加以下内容
vm.max_map_count=655360
5)執行sysctl –p ,使配置生效
6)切換回elk使用者,進入 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叢集各個節點
discovery.zen.minimum_master_nodes:2 // 防止腦裂
3.開始安裝filebeat
1)将filebeat上傳到要進行日志收集的伺服器上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(要收集的日志路徑,可以使用* 代替)。也可以根據exclude_lines和include_lines來做一些過濾日志的行為。
filebeat.yml
b. filebeat的配置檔案路徑,以及是否允許重新加載配置檔案。并設定索引的分片數量
filebeat.yml
c. 配置kibana位址
filebeat.yml
d. 配置logstash位址
filebeat.yml
4.開始安裝logstash
1)将logstash安裝包上傳到192.168.45.2伺服器并解壓
tar -xvf logstash-6.6.2.tar.gz
2)修改logstash輸入輸出的配置檔案logstash-sample.yml
a.input中配置filebeat的監聽端口
b.filter中可以增加過濾條件對所有或者指定索引進行過濾
c.output中可以配置filebeat輸出之後的索引
logstash-sample.yml
5.開始安裝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
修改下列内容
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.分别啟動ES叢集,logstash,filebeat,kibana
1)分别在對應的bin目錄下執行下列操作
nohup ./elasticsearch >elasticsearch.log 2>&1 & //ES啟動服務
nohup ./logstash >logstash.log 2>&1 & //logstash啟動服務
nohup ./filebeat -e -c filebeat.yml >filebeat.log 2>&1 & // filebeat啟動服務
nohup ./kibana >kibana.log 2>&1 & //kibana啟動服務
2)啟動後可以在浏覽器中輸入192.168.45.2:5601來進入kibana界面進行日志查詢
kibana查詢界面
參考文章
ELK原理與介紹
ELK日志分析平台的運維
ELK + Filebeat + Kafka 分布式日志管理平台搭建