LinuxCentos中ELK日誌分析系統的部署(詳細教程8K字)附圖片
目錄
1.實驗環境
2.環境準備
部署Elasticsearch
Node1
Node2
3.檢視節點資訊
4.檢視群集的健康情況
5.檢視群集的狀態資訊
安裝Elasticsearch-head外掛
1.安裝node
2.安裝phantomjs
3.建立索引
Logstash安裝及使用方法
安裝Kibana
新增system索引
新增apache日誌
總結
日誌分析已成為企業監控、故障排查和效能最佳化的重要組成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆疊作為一種強大的開源解決方案,**提供了高效的日誌收集、儲存和視覺化功能,使使用者能夠快速獲取關鍵業務洞察。**本文將詳細介紹如何在 CentOS 系統中部署 ELK 日誌分析系統,
1.實驗環境

配置ELK日誌分析叢集
使用logstash收集日誌
使用kibana分析日誌
2.環境準備
所需安裝包
node1
elasticsearch-5.5.0.rpm v8.2.1.tar.gzkibana-5.5.1-x86_64.rpm elasticsearch-head.tar.gznode-v8.2.1.tar.gzphantomjs-2.1.1-linux-x86_64.tar.bz2
apache
`logstash-5.5.1.rpm`
所有伺服器上操作
關閉防火牆和Selinux 配置hosts檔案
systemctl stop firewalld && systemctl disable firewalldsetenforce 0vim /etc/hosts192.168.192.113 node1192.168.192.114 node2192.168.192.116 apache yum install -y lrzsz
部署Elasticsearch
在 Node1 和 Node2 節點上都需要部署 lasticsearch
Node1
檢測java環境
[root@node1 ~]# java -versionopenjdk version "1.8.0_412"OpenJDK Runtime Environment (build 1.8.0_412-b08)OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
如果沒有java的話安裝
`yum install -y java-openjdk`
上傳安裝包
[root@node1 ~]# lselasticsearch-5.5.0.rpm v8.2.1.tar.gzrpm -ivh elasticsearch-5.5.0.rpm
編輯配置檔案
自己開啟配置檔案一個個比對找,行數我已經標出
vim /etc/elasticsearch/elasticsearch.yml17 cluster.name: my-elk-cluster # 叢集名稱23 node.name: node1 # 節點名稱33 path.data: /data/elk_data # 資料儲存路徑37 path.logs: /var/log/elk_logs # 日誌儲存路徑43 bootstrap.memory_lock: false # 是否鎖定記憶體以避免交換55 network.host: 0.0.0.0 # 監聽所有網路介面59 http.port: 9200 # HTTP 服務埠68 discovery.zen.ping.unicast.hosts: ["node1", "node2"] # 發現其他節點的地址也可以填寫ip地址
重新載入系統管理器配置,設定 Elasticsearch 服務為開機自啟。
systemctl daemon-reloadsystemctl enable elasticsearch.service
建立資料和日誌目錄
將資料和日誌目錄的所有權更改為 elasticsearch 使用者,以確保 Elasticsearch 有許可權訪問這些目錄
mkdir -p /data/elk_datamkdir -p /var/log/elk_logschown elasticsearch:elasticsearch /data/elk_data/chown elasticsearch:elasticsearch /var/log/elk_logssystemctl start elasticsearch netstat -nultp | grep 9200tcp6 0 0 :::9200 :::* LISTEN 1264/java
啟動 Elasticsearch 服務。
Node2
方法一樣不過多介紹
[root@node1 ~]# java -versionopenjdk version "1.8.0_412"OpenJDK Runtime Environment (build 1.8.0_412-b08)OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
`yum install -y java-openjdk`
這裡需改更改節點為node2
vim /etc/elasticsearch/elasticsearch.yml 17 cluster.name: my-elk-cluster 23 node.name: node2 //這裡需要更改 33 path.data: /data/elk_data 37 path.logs: /var/log/elk_logs 43 bootstrap.memory_lock: false 55 network.host: 0.0.0.0 59 http.port: 9200 68 discovery.zen.ping.unicast.hosts: ["node1", "node2"] //或者輸入IP地址
systemctl daemon-reloadsystemctl enable elasticsearch.servicevim /etc/elasticsearch/elasticsearch.yml mkdir -p /data/elk_datamkdir -p /var/log/elk_logschown elasticsearch:elasticsearch /data/elk_data/chown elasticsearch:elasticsearch /var/log/elk_logssystemctl start elasticsearchnetstat -nultp | grep 9200tcp6 0 0 :::9200 :::* LISTEN 1384/java
3.檢視節點資訊
Web 連結 http://192.168.192.113:9200,可以檢視節點Node1 的資訊

node2

檢查群集的健康狀態,可以看到status為綠色表示節點健康執行
在瀏覽器中輸入
4.檢視群集的健康情況
`http://192.168.192.113:9200/_cluster/health?pretty`

5.檢視群集的狀態資訊
`http://192.168.192.113:9200/_cluster/state?pretty`

安裝Elasticsearch-head外掛
在Node1上安裝
安裝 Elasticsearch-head 需要提前安裝 node 和 phantomjs
1.安裝node
編譯安裝node 時間可以有多久 大概20分鐘左右
`yum install -y gzip`
lsnode-v8.2.1.tar.gztar zxf node-v8.2.1.tar.gz lsnode-v8.2.1node-v8.2.1.tar.gzcd node-v8.2.1./configure && make && make install
2.安裝phantomjs
[root@node1 ~]# lselasticsearch-head.tar.gz node-v8.2.1.tar.gzelasticsearch-5.5.0.rpm node-v8.2.1phantomjs-2.1.1-linux-x86_64.tar.bz2[root@node1 ~]# tar -jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/[root@node1 ~]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/[root@node1 bin]# lsphantomjs[root@node1 bin]# cp phantomjs /usr/local/bin
開始安裝
cd[root@node1 ~]# tar -zxf elasticsearch-head.tar.gz [root@node1 ~]# cd elasticsearch-head[root@node1 elasticsearch-head]# npm install

修改Elasticsearch 主配置檔案
vim /etc/elasticsearch/elasticsearch.yml //加入一下內容90 http.cors.enabled: true # 啟用 CORS91 http.cors.allow-origin: "*" # 允許所有來源的請求systemctl restart elasticsearch
執行命令npm run start &
cd elasticsearch-head //必須進入這個目錄執行命令[root@node1 elasticsearch-head]# npm run start &[6] 51980[root@node1 elasticsearch-head]# > [email protected] start /root/elasticsearch-head> grunt serverRunning "connect:server" (connect) taskWaiting forever...Started connect web server on http://localhost:9100
elasticsearch-head 監聽的埠是 9100

**透過Elasticsearch-head 檢視 Elasticsearch資訊。**可以看到群集很健康,健康值為 green 綠色。單擊資料瀏覽,可以查螺引資訊,此時索引為空
瀏覽器訪問
`http://192.168.192.113:9100/`

3.建立索引
Elasticsearch 中的 index-demo 索引添加了一個文件
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'{ "_index" : "index-demo", "_type" : "test", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "created" : true}
"_index":文件所在的索引。"_type":文件的型別。"_id":文件的唯一識別符號。"_version":文件的版本號。"result":操作結果,表示文件已成功建立。"_shards":分片資訊,顯示總分片數、成功的分片數和失敗的分片數。"created":布林值,表示文件是否被建立。
重新整理瀏覽器可以看到建立成功的目錄

點選概述 ,還可以看到索引預設被分片成5個篇,且存在一個副本

Logstash安裝及使用方法
logstash 一般部署在需要監控其日誌的伺服器中,在本案例中,Logsiash 部署在 Apache 伺服器上解收集 Apsche 伺服器的日誌資訊併發送到 Elasticserch 中,
安裝在被監控端,
本案例安裝在apache伺服器上,用於收集apache伺服器的日誌資訊傳送到Elasticsearch中
以下在apache伺服器中安裝
1.檢測java環境
[root@node1 ~]# java -versionopenjdk version "1.8.0_412"OpenJDK Runtime Environment (build 1.8.0_412-b08)OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
`yum install -y java-openjdk`
報錯解決
root@apache ~]# rpm -ivh logstash-5.5.1.rpm 警告:logstash-5.5.1.rpm: 頭V4 RSA/SHA512 Signature, 金鑰 ID d88e42b4: NOKEY準備中... ################################# [100%]正在升級/安裝... 1:logstash-1:5.5.1-1 ################################# [100%]Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME.警告:%post(logstash-1:5.5.1-1.noarch) 指令碼執行失敗,退出狀態碼為 1
下載java即可
2.上傳rpm包
[root@apache ~]# ls logstash-5.5.1.rpm
rpm -ivh logstash-5.5.1.rpmsystemctl start logstash.serviceln -s /usr/share/logstash/bin/logstash /usr/local/bin/
測試 Logstash
logstash -e 'input { stdin{} } output { stdout{} }'logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

在Elsticsearch 中檢視Logstesh 新增加的索引
配置 Logstash 以讀取系統日誌
cd /etc/logstash/conf.d/[root@apache conf.d]# chmod o+r /var/log/messages[root@apache conf.d]# ll /var/log/messages-rw----r--. 1 root root 41906 7月 26 13:44 /var/log/messages[root@apache conf.d]# touch system.conf[root@apache conf.d]# vim system.conf
vim system.conf input { file { path => "/var/log/messages" type => "system" start_position => "beginning" }}output { elasticsearch{ hosts => ["192.168.192.113:9200"] index => "system-%{+YYYY.MM.dd}" }}
systemctl restart logstashlssystem.conf
這時候系統日誌資訊就新增進來了
完成後,透過瀏覽器檢視Elasticsearch 的資訊

安裝Kibana
**Kibana 是一個開源的分析和視覺化平臺,**通常與 Elasticsearch 和 Logstash 一起使用,形成 ELK 堆疊。它允許使用者透過圖形介面輕鬆地探索和視覺化儲存在 Elasticsearch 中的資料。
在Node1上安裝
首先上傳rpm包
kibana-5.5.1-x86_64.rpm rpm -ivh kibana-5.5.1-x86_64.rpm systemctl enable kibana
設定主配置檔案
vim /etc/kibana/kibana.yml 2 server.port: 5601 7 server.host: "0.0.0.0" 21 elasticsearch.url: "http://192.168.192.113:9200" 30 kibana.index: ".kibana"
驗證 Kibana、透過瀏覽器訪問
`http://192.168.192.113:5601`
新增system索引

新增一個

這時候就可以檢視圖表和 系統有關的日誌資訊了

新增apache日誌
將 apache 伺服器的日誌新增到 Elasticsearch 並透過 Kibana 顯示
ip地址記得更換
cd /etc/logstash/conf.d/vim apache_log.conf//加入一下內容input { file { path => "/var/log/httpd/access_log" type => "access" start_position => "beginning" } file { path => "/var/log/httpd/error_log" type => "error" start_position => "beginning" } }output { if [type] == "access" { elasticsearch { hosts => ["192.168.192.113:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error" { elasticsearch { hosts => ["192.168.192.113:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } }
4.編寫指令碼
用於啟動 Logstash 並載入指定的配置檔案。
透過這個指令碼快速啟動 Logstash 處理 Apache 日誌了。
vim /elk.sh#!/bin/bash/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/apache_log.confwqchmod a+x /elk.sh. /elk.sh &
訪問檢視索引是否建立成功
`http://192.168.192.113:9100/`

回到kibana


如果想要新增其他服務的日誌資訊也是一樣的!
總結
**透過本教程,我們詳細探討了在 CentOS 系統中部署 ELK 日誌分析系統的各個步驟。我們從環境準備、元件安裝到配置與實際應用,全面覆蓋了這一強大工具的使用方法。**ELK 堆疊不僅提升了日誌管理的效率,也為資料分析提供了豐富的視覺化手段。希望本文能夠幫助您更好地理解和應用 ELK 系統,助力您的業務決策和效能最佳化。
成功的路上沒有捷徑,只有不斷的努力與堅持。如果你和我一樣,堅信努力會帶來回報,請關注我,點個贊,一起迎接更加美好的明天!你的支援是我繼續前行的動力!""每一次創作都是一次學習的過程,文章中若有不足之處,還請大家多多包容。你的關注和點贊是對我最大的支援,也歡迎大家提出寶貴的意見和建議,讓我不斷進步。"
連結:https://blog.csdn.net/jxjdhdnd/article/details/140798722?spm=1001.2014.3001.5502
(版權歸原作者所有,侵刪)
文末福利
就目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。
為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套高階運維工程師必備技能資料包,內容有多詳實豐富看下圖!
共有 20 個模組





······



以上所有資料獲取請掃碼
備註:最新運維資料

100%免費領取
(後臺不再回復,掃碼一鍵領取)