日志分析已成為企業(yè)監(jiān)控、故障排查和性能優(yōu)化的重要組成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆棧作為一種強(qiáng)大的開(kāi)源解決方案,提供了高效的日志收集、存儲(chǔ)和可視化功能,使用戶能夠快速獲取關(guān)鍵業(yè)務(wù)洞察。本文將詳細(xì)介紹如何在 CentOS 系統(tǒng)中部署 ELK 日志分析系統(tǒng),
1.實(shí)驗(yàn)環(huán)境
配置ELK日志分析集群
使用logstash收集日志
使用kibana分析日志
2.環(huán)境準(zhǔn)備
所需安裝包
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`
所有服務(wù)器上操作
關(guān)閉防火墻和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 節(jié)點(diǎn)上都需要部署 lasticsearch
Node1
檢測(cè)java環(huán)境
[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)
如果沒(méi)有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
編輯配置文件
自己打開(kāi)配置文件一個(gè)個(gè)比對(duì)找,行數(shù)我已經(jīng)標(biāo)出
vim /etc/elasticsearch/elasticsearch.yml 17 cluster.name: my-elk-cluster # 集群名稱 23 node.name: node1 # 節(jié)點(diǎn)名稱 33 path.data: /data/elk_data # 數(shù)據(jù)存儲(chǔ)路徑 37 path.logs: /var/log/elk_logs # 日志存儲(chǔ)路徑 43 bootstrap.memory_lock: false # 是否鎖定內(nèi)存以避免交換 55 network.host: 0.0.0.0 # 監(jiān)聽(tīng)所有網(wǎng)絡(luò)接口 59 http.port: 9200 # HTTP 服務(wù)端口 68 discovery.zen.ping.unicast.hosts: ["node1", "node2"] # 發(fā)現(xiàn)其他節(jié)點(diǎn)的地址也可以填寫(xiě)ip地址
重新加載系統(tǒng)管理器配置,設(shè)置 Elasticsearch 服務(wù)為開(kāi)機(jī)自啟。
systemctl daemon-reload systemctlenableelasticsearch.service
創(chuàng)建數(shù)據(jù)和日志目錄
將數(shù)據(jù)和日志目錄的所有權(quán)更改為 elasticsearch 用戶,以確保 Elasticsearch 有權(quán)限訪問(wèn)這些目錄
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
啟動(dòng) Elasticsearch 服務(wù)。
Node2
方法一樣不過(guò)多介紹
[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`
這里需改更改節(jié)點(diǎn)為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.查看節(jié)點(diǎn)信息
Web 鏈接 http://192.168.192.113:9200,可以查看節(jié)點(diǎn)Node1 的信息
node2
檢查群集的健康狀態(tài),可以看到status為綠色表示節(jié)點(diǎn)健康運(yùn)行
在瀏覽器中輸入
4.查看群集的健康情況
`http://192.168.192.113:9200/_cluster/health?pretty`

5.查看群集的狀態(tài)信息
`http://192.168.192.113:9200/_cluster/state?pretty`

安裝Elasticsearch-head插件
在Node1上安裝
安裝 Elasticsearch-head 需要提前安裝 node 和 phantomjs
1.安裝node
編譯安裝node 時(shí)間可以有多久 大概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
開(kāi)始安裝
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 //加入一下內(nèi)容 90 http.cors.enabled: true # 啟用 CORS 91 http.cors.allow-origin: "*" # 允許所有來(lái)源的請(qǐng)求 systemctl restart elasticsearch
執(zhí)行命令npm run start &
cd elasticsearch-head //必須進(jìn)入這個(gè)目錄執(zhí)行命令 [root@node1 elasticsearch-head]# npm run start & [6] 51980 [root@node1 elasticsearch-head]# > [email protected] start /root/elasticsearch-head > grunt server Running "connect:server" (connect) task Waiting forever... Started connect web server on http://localhost:9100
elasticsearch-head 監(jiān)聽(tīng)的端口是 9100
通過(guò)Elasticsearch-head 查看 Elasticsearch信息。可以看到群集很健康,健康值為 green 綠色。單擊數(shù)據(jù)瀏覽,可以查螺引信息,此時(shí)索引為空
瀏覽器訪問(wèn)
`http://192.168.192.113:9100/`

3.創(chuàng)建索引
Elasticsearch 中的 index-demo 索引添加了一個(gè)文檔
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":文檔的唯一標(biāo)識(shí)符。
"_version":文檔的版本號(hào)。
"result":操作結(jié)果,表示文檔已成功創(chuàng)建。
"_shards":分片信息,顯示總分片數(shù)、成功的分片數(shù)和失敗的分片數(shù)。
"created":布爾值,表示文檔是否被創(chuàng)建。
刷新瀏覽器可以看到創(chuàng)建成功的目錄
點(diǎn)擊概述 ,還可以看到索引默認(rèn)被分片成5個(gè)篇,且存在一個(gè)副本
Logstash安裝及使用方法
logstash 一般部署在需要監(jiān)控其日志的服務(wù)器中,在本案例中,Logsiash 部署在 Apache 服務(wù)器上解收集 Apsche 服務(wù)器的日志信息并發(fā)送到 Elasticserch 中,
安裝在被監(jiān)控端,
本案例安裝在apache服務(wù)器上,用于收集apache服務(wù)器的日志信息發(fā)送到Elasticsearch中
以下在apache服務(wù)器中安裝
1.檢測(cè)java環(huán)境
[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`
報(bào)錯(cuò)解決
root@apache ~]# rpm -ivh logstash-5.5.1.rpm 警告:logstash-5.5.1.rpm: 頭V4 RSA/SHA512 Signature, 密鑰 ID d88e42b4: NOKEY 準(zhǔn)備中... ################################# [100%] 正在升級(jí)/安裝... 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) 腳本執(zhí)行失敗,退出狀態(tài)碼為 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/
測(cè)試 Logstash
logstash -e'input { stdin{} } output { stdout{} }' logstash -e'input { stdin{} } output { stdout{ codec=>rubydebug } }'

在Elsticsearch 中查看Logstesh 新增加的索引
配置 Logstash 以讀取系統(tǒng)日志
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
這時(shí)候系統(tǒng)日志信息就添加進(jìn)來(lái)了
完成后,通過(guò)瀏覽器查看Elasticsearch 的信息
安裝Kibana
Kibana 是一個(gè)開(kāi)源的分析和可視化平臺(tái),通常與 Elasticsearch 和 Logstash 一起使用,形成 ELK 堆棧。它允許用戶通過(guò)圖形界面輕松地探索和可視化存儲(chǔ)在 Elasticsearch 中的數(shù)據(jù)。
在Node1上安裝
首先上傳rpm包
kibana-5.5.1-x86_64.rpm rpm -ivh kibana-5.5.1-x86_64.rpm systemctl enable kibana
設(shè)置主配置文件
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"
驗(yàn)證 Kibana、通過(guò)瀏覽器訪問(wèn)
`http://192.168.192.113:5601`
添加system索引
添加一個(gè)
這時(shí)候就可以查看圖表和 系統(tǒng)有關(guān)的日志信息了
添加apache日志
將 apache 服務(wù)器的日志添加到 Elasticsearch 并通過(guò) Kibana 顯示
ip地址記得更換
cd /etc/logstash/conf.d/ vim apache_log.conf //加入一下內(nèi)容 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.編寫(xiě)腳本
用于啟動(dòng) Logstash 并加載指定的配置文件。
通過(guò)這個(gè)腳本快速啟動(dòng) 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 &
訪問(wèn)查看索引是否創(chuàng)建成功
`http://192.168.192.113:9100/`

回到kibana
如果想要添加其他服務(wù)的日志信息也是一樣的!
總結(jié)
通過(guò)本教程,我們?cè)敿?xì)探討了在 CentOS 系統(tǒng)中部署 ELK 日志分析系統(tǒng)的各個(gè)步驟。我們從環(huán)境準(zhǔn)備、組件安裝到配置與實(shí)際應(yīng)用,全面覆蓋了這一強(qiáng)大工具的使用方法。ELK 堆棧不僅提升了日志管理的效率,也為數(shù)據(jù)分析提供了豐富的可視化手段。希望本文能夠幫助您更好地理解和應(yīng)用 ELK 系統(tǒng),助力您的業(yè)務(wù)決策和性能優(yōu)化。
鏈接:https://blog.csdn.net/jxjdhdnd/article/details/140798722?spm=1001.2014.3001.5502
-
開(kāi)源
+關(guān)注
關(guān)注
3文章
3611瀏覽量
43485 -
日志
+關(guān)注
關(guān)注
0文章
143瀏覽量
10820 -
CentOS
+關(guān)注
關(guān)注
0文章
83瀏覽量
14146
原文標(biāo)題:Linux中ELK日志分析系統(tǒng)的部署(詳細(xì)教程8K字)附圖片
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
CentOS系統(tǒng)的知識(shí)介紹
在嵌入式環(huán)境中部署環(huán)境的相關(guān)資料分享
如何在N1SDP上安裝發(fā)行版ubuntu和centos系統(tǒng)
基于DOCKER容器的ELK日志收集系統(tǒng)分析

對(duì)于大規(guī)模系統(tǒng)日志的日志模式提煉算法的優(yōu)化

如何在小型集群中部署Xilinx FPGA卡
分布式實(shí)時(shí)日志:ELK的部署架構(gòu)方案
分布式實(shí)時(shí)日志分析解決方案ELK部署架構(gòu)
CentOS7中使用一鍵腳本部署Librenms網(wǎng)絡(luò)監(jiān)控系統(tǒng)

如何在Centos系統(tǒng)中部署KVM虛擬化平臺(tái)

評(píng)論