日志分析已成為企業監控、故障排查和性能優化的重要組成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆棧作為一種強大的開源解決方案,提供了高效的日志收集、存儲和可視化功能,使用戶能夠快速獲取關鍵業務洞察。本文將詳細介紹如何在 CentOS 系統中部署 ELK 日志分析系統,
1.實驗環境
配置ELK日志分析集群
使用logstash收集日志
使用kibana分析日志
2.環境準備
所需安裝包
node1
elasticsearch-5.5.0.rpm v8.2.1.tar.gz kibana-5.5.1-x86_64.rpm elasticsearch-head.tar.gz node-v8.2.1.tar.gz phantomjs-2.1.1-linux-x86_64.tar.bz2
apache
`logstash-5.5.1.rpm`
所有服務器上操作
關閉防火墻和Selinux 配置hosts文件
systemctl stop firewalld && systemctl disable firewalld setenforce 0 vim /etc/hosts 192.168.192.113 node1 192.168.192.114 node2 192.168.192.116 apache yum install -y lrzsz
部署Elasticsearch
在 Node1 和 Node2 節點上都需要部署 lasticsearch
Node1
檢測java環境
[root@node1 ~]# java -version openjdk 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 ~]# ls elasticsearch-5.5.0.rpm v8.2.1.tar.gz rpm -ivh elasticsearch-5.5.0.rpm
編輯配置文件
自己打開配置文件一個個比對找,行數我已經標出
vim /etc/elasticsearch/elasticsearch.yml 17 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-reload systemctlenableelasticsearch.service
創建數據和日志目錄
將數據和日志目錄的所有權更改為 elasticsearch 用戶,以確保 Elasticsearch 有權限訪問這些目錄
mkdir -p /data/elk_data mkdir -p /var/log/elk_logs chown elasticsearch:elasticsearch /data/elk_data/ chown elasticsearch:elasticsearch /var/log/elk_logs systemctl start elasticsearch netstat -nultp | grep 9200 tcp6 0 0 :::9200 :::* LISTEN 1264/java
啟動 Elasticsearch 服務。
Node2
方法一樣不過多介紹
[root@node1 ~]# java -version openjdk 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-reload systemctl enable elasticsearch.service vim /etc/elasticsearch/elasticsearch.yml mkdir -p /data/elk_data mkdir -p /var/log/elk_logs chown elasticsearch:elasticsearch /data/elk_data/ chown elasticsearch:elasticsearch /var/log/elk_logs systemctl start elasticsearch netstat -nultp | grep 9200 tcp6 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`
ls node-v8.2.1.tar.gz tar zxf node-v8.2.1.tar.gz ls node-v8.2.1 node-v8.2.1.tar.gz cd node-v8.2.1 ./configure && make && make install
2.安裝phantomjs
[root@node1 ~]# ls elasticsearch-head.tar.gz node-v8.2.1.tar.gz elasticsearch-5.5.0.rpm node-v8.2.1 phantomjs-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]# ls phantomjs [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 # 啟用 CORS 91 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]# > elasticsearch-head@0.0.0 start /root/elasticsearch-head > grunt server Running "connect:server" (connect) task Waiting 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 -version openjdk 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%] 正在升級/安裝... 15.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.rpm systemctl start logstash.service ln -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 logstash ls system.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.conf wq chmod 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
-
開源
+關注
關注
3文章
3634瀏覽量
43617 -
日志
+關注
關注
0文章
143瀏覽量
10840 -
CentOS
+關注
關注
0文章
83瀏覽量
14184
原文標題:Linux中ELK日志分析系統的部署(詳細教程8K字)附圖片
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
在嵌入式環境中部署環境的相關資料分享
如何在N1SDP上安裝發行版ubuntu和centos系統
基于DOCKER容器的ELK日志收集系統分析

如何在小型集群中部署Xilinx FPGA卡
分布式實時日志:ELK的部署架構方案
分布式實時日志分析解決方案ELK部署架構
如何在Centos系統中部署KVM虛擬化平臺

評論