一、ELK是什么?
“ELK”是三個開源項目的首字母縮寫,這三個項目分別是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一個搜索和分析引擎。Logstash 是服務器端數據處理管道,能夠同時從多個來源采集數據,轉換數據,然后將數據發送到諸如 Elasticsearch 等“存儲庫”中。Kibana 則可以讓用戶在 Elasticsearch 中使用圖形和圖表對數據進行可視化。
二、為什么使用ELK?
在規模較大的場景中,傳統日志分析方法效率低下,面臨著日志量太大如何歸檔、文本搜索太慢怎么辦、如何多維度查詢等問題。需要建立集中式日志收集系統,將所有節點上的日志統一收集,管理,訪問。
ELK提供了一整套開源解決方案,高效的滿足了很多場合的應用,是目前主流的一種日志系統。
三、環境說明:
Java版本:Java8(openjdk1.8.0)
部署的ELK組件:Filebeat-7.8.0、Logstash-7.8.0、Elasticsearch-7.8.0、Kibana-7.8.1
四、Elasticsearch:
Elasticsearch 是一個分布式搜索和數據分析引擎,用于數據存儲,可提供實時的數據查詢。
Elasticsearch部署在ELK服務器上,詳細內容參閱官方文檔https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
Elasticsearch安裝記錄:
1.導入GPG-KEY
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2.在/etc/yum.repos.d/目錄下創建elasticsearch.repo文件,并寫入以下內容:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
3.安裝elasticsearch
yum install --enablerepo=elasticsearch elasticsearch
4.設置自啟動
systemctl daemon-reload
systemctl enable elasticsearch.service
elasticsearch文件默認路徑如下:
5.配置elasticsearch
1) elasticsearch配置文件elasticsearch.yml默認存儲在/etc/elasticsearch/目錄下,我們對其做以下修改:
因elasticsearch數據文件默認存儲在/var/lib/elasticsearch、日志文件默認存儲在/var/log/elasticsearch目錄下,而ELK服務器上/var/目錄存儲容量不夠大,故將其改為容量更大的/data/目錄,如上圖。
2) 配置文件保存后開啟elasticsearch服務
systemctl start elasticsearch.service
3) 可通過下面鏈接在瀏覽器中查看elasticsearch返回內容
6.常用命令:
systemctl stop elasticsearch.service(停止elasticsearch服務)
systemctl start elasticsearch.service(啟動elasticsearch服務)
systemctl status elasticsearch.service(查看elasticsearch狀態)
五、Logstash:
Logstash 是一個服務器端數據處理管道,能夠從多個來源采集數據,轉換數據,然后將數據發送到指定 “存儲庫”中。
數據從源傳輸到存儲庫的過程中,Logstash 過濾器能夠解析各個事件,識別已命名的字段以構建結構,并將它們轉換成通用格式,以便進行更強大的分析。
Logstash部署在elk服務器上,詳細內容參閱官方文檔https://www.elastic.co/guide/en/logstash/current/index.html
也可參考此文檔https://doc.yonyoucloud.com/doc/logstash-best-practice-cn/index.html
Logstash安裝記錄:
1.導入GPG-KEY
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2.在/etc/yum.repos.d/目錄下創建logstash.repo文件,并寫入以下內容
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
3.安裝logstash
yum install logstash
4.開啟logstash服務
systemctl start logstash.service
logstash文件默認路徑如下圖:
5.配置logstash
1) 進入/etc/logstash/conf.d/目錄下創建log4j_to_es.conf文件,并在其中配置輸入和輸出,寫入內容如下:
此配置說明logstash將從filebeat接收數據,并發送到elasticsearch,每次配置文件更改后須重啟filebeat(參考filebeat部分),然后創建patterns文件,內容如下圖所示
2) 配置文件保存后,執行下面命令檢查配置語法是否出錯
/usr/share/logstash/bin/logstash -f log4j_to_es.conf --config.test_and_exit
3) 測試通過后,執行以下命令使配置自動生效
nohup /usr/share/logstash/bin/logstash -f log4j_to_es.conf --config.reload.automatic &
6.常用命令:
systemctl stop logstash(停止logstash)
systemctl status logstash(查看logstash狀態)
六、Filebeat:
Filebeat是一個輕量型日志采集器,用于轉發和匯總日志與文件,能夠與 Logstash、Elasticsearch 和 Kibana 無縫協作。
Filebeat部署在爬蟲服務器上,詳細內容參閱官方文檔https://www.elastic.co/guide/en/beats/filebeat/current/index.html
Filebeat安裝記錄:
1.導入GPG-KEY
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
2.在/etc/yum.repos.d/目錄下創建elastic.repo文件,并寫入以下內容
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
3.安裝filebeat
yum install filebeat
4.配置自啟動
systemctl enable filebeat(如果想關閉自啟動使用 systemctl disable filebeat)
filebeat文件默認路徑如下圖:
5.配置filebeat
Filebeat配置文件filebeat.yml默認存放在/etc/filebeat目錄下,我們進入目錄并對其做以下修改:
1) 將日志采集路徑修改為爬蟲日志實際存放路徑
2) 將filebeat輸出由默認的elasticsearch改為logstash(注意#號),修改后filebeat將采集到的日志文件發送到位于ELK服務器上的logstash進行處理
3) 將配置文件保存后啟動filebeat
nohup filebeat -e -c filebeat.yml -d "publish" &(此命令將filebeat掛在后臺運行,如需結束filebeat可以先用ps -aux命令查看進程號,再用kill -9 進程號 殺掉進程。)
6.常用命令
systemctl stop filebeat(關閉filebeat)
systemctl status filebeat(查看filebeat運行狀態)
七、Kibana:
Kibana 是一款開源的數據分析和可視化平臺,它是ELK成員之一,設計用于和 Elasticsearch 協作??梢允褂?Kibana 對 Elasticsearch 索引中的數據進行搜索、查看、交互操作??梢院芊奖愕睦脠D表、表格及地圖對數據進行多元化的分析和呈現。
Kibana部署在elk服務器上,詳細內容參閱官方文檔https://www.elastic.co/guide/en/kibana/current/index.html
Kibana安裝記錄:
- 導入GPG-KEY
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- 在/etc/yum.repos.d/目錄下創建kibana.repo文件,并寫入如下內容:
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
- 安裝kibana
yum install kibana
- 配置自啟動
systemctl daemon-reload
systemctl enable kibana.service
kibana文件默認安裝目錄如下:
- 修改配置,配置文檔kibana.yml在/etc/kibana/目錄下,對其修改如下
- 常用命令
systemctl start kibana.service
systemctl stop kibana.service
systemctl status kibana.service
八、測試elasticsearch是否有數據:
在瀏覽器中打開下面鏈接,查看kibana面板