前一篇文章介紹了有關ELK日誌分析系統的理論原理,本文將結合原理經過案例環境部署及配置ELK日誌分析系統。java
使用集羣方式,2個Elasticsearch節點,其中一臺安裝Kibana便可,另外安裝Apache服務做爲被監控的服務器,安裝Logstash。node
相關規劃以下表所示:linux
主機 | 操做系統 | 主機名 | IP地址 | 主要安裝軟件 |
---|---|---|---|---|
服務器 | Centos7.4 | node1 | 20.0.0.140 | Elasticsearch Kibana |
服務器 | Centos7.4 | node2 | 20.0.0.139 | Elasticsearch |
服務器 | Centos7.4 | Apache | 20.0.0.141 | Logstash Apache |
一、檢查服務器環境(推薦先進行時間同步),找到所需軟件包 二、在兩個elasticsearch節點上部署elasticsearch環境、elasticsearch軟件、 三、檢查服務是否開啓並在瀏覽器中驗證、檢查健康狀態與查看狀態信息 四、在兩個elasticsearch節點上安裝elasticsearch-head插件(方便查看集羣信息) 五、經過瀏覽器驗證、檢查健康狀態,模擬建立索引來驗證信息 六、安裝Apache服務在20.0.0.141服務器上,而且安裝Logstash軟件 七、在Apache服務器上進行對接測試(使用Logstash將信息寫入elasticsearch中)而且進行驗證 八、測試無誤後進行對接配置(20.0.0.141上)、在瀏覽器上驗證 九、回到node1服務器上安裝可視化軟件Kibana,啓動服務並進行驗證 十、進行對Apache主機的日誌文件的對接(access_log以及error_log)配置與驗證
軟件包資源連接:https://pan.baidu.com/s/1NXl3l-fs15tLZcweHwHTCA
提取碼:hmw7 web
###登陸20.0.0.140 更改主機名 配置域名解析 查看Java環境 ### [root@node1 ~]# hostnamectl set-hostname node1 [root@node1 ~]# su [root@node1 ~]# vi /etc/hosts 20.0.0.140 node1 20.0.0.139 node2 [root@node1 ~]# java -version openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode) #關閉防火牆和核心防禦 [root@node1 ~]# systemctl stop firewalld [root@node1 ~]# setenforce 0 ###登陸20.0.0.139 更改主機名 配置域名解析 查看Java環境 ### [root@node2 ~]# hostnamectl set-hostname node2 [root@node2 ~]# su [root@node2 ~]# vi /etc/hosts 20.0.0.140 node1 20.0.0.139 node2 [root@node2 ~]# java -version openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode) #關閉防火牆和核心防禦 [root@node1 ~]# systemctl stop firewalld [root@node1 ~]# setenforce 0
####登陸20.0.0.140#### #一、安裝elasticsearch—rpm包 上傳elasticsearch-5.5.0.rpm到/opt目錄下 [root@node1 ~]# cd /opt [root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm #二、加載系統服務 [root@node1 opt]# systemctl daemon-reload [root@node1 opt]# systemctl enable elasticsearch.service #三、更改elasticsearch主配置文件 [root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak #儘可能備份,以避免誤改不可挽回 [root@node1 opt]# vi /etc/elasticsearch/elasticsearch.yml cluster.name: my-elk-cluster ####集羣名字 node.name: node1 ####節點名字 path.data: /data/elk_data ####數據存放路徑 path.logs: /var/log/elasticsearch/ ####數據存放路徑 bootstrap.memory_lock: false ####不在啓動的時候鎖定內存 network.host: 0.0.0.0 ####提供服務綁定的IP地址,0.0.0.0表明全部地址 http.port: 9200 ####偵聽端口爲9200 discovery.zen.ping.unicast.hosts: ["node1", "node2"] ####集羣發現經過單播實現 #使用grep命令過濾文件,方便查看配置對比有沒有錯誤 [root@node1 opt]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml cluster.name: my-elk-cluster node.name: node1 path.data: /data/elk_data path.logs: /var/log/elasticsearch/ bootstrap.memory_lock: false network.host: 0.0.0.0 http.port: 9200 discovery.zen.ping.unicast.hosts: ["node1", "node2"] #四、建立數據存放路徑並受權 [root@node1 opt]# mkdir -p /data/elk_data [root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/ #五、啓動elasticsearch是否成功開啓 [root@node1 elasticsearch]# systemctl start elasticsearch.service [root@node1 elasticsearch]# netstat -antp |grep 9200 tcp6 0 0 :::9200 :::* LISTEN 64463/java
瀏覽器打開 http://20.0.0.140:9200 與 http://20.0.0.139:9200 shell
一、打開 http://20.0.0.140:9200/_cluster/health?pretty 檢查羣集健康狀況(注意URL的下劃線哈!)apache
二、打開 http://20.0.0.140:9200/_cluster/state?pretty ###檢查羣集健康狀況npm
####登陸20.0.0.140 node1主機#### #上傳node-v8.2.1.tar.gz到/opt ###編譯安裝node組件依賴包##耗時比較長 [root@localhost opt]# cd /opt [root@node1 opt]# tar xzvf node-v8.2.1.tar.gz [root@node1 opt]# cd node-v8.2.1/ [root@node1 node-v8.2.1]# ./configure [root@node1 node-v8.2.1]# make [root@node1 node-v8.2.1]# make install ####安裝phantomjs#### #上傳軟件包到/usr/local/src/ [root@localhost node-v8.2.1]# cd /usr/local/src/ [root@localhost src]# tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 [root@localhost src]# cd phantomjs-2.1.1-linux-x86_64/bin [root@localhost bin]# cp phantomjs /usr/local/bin ###安裝elasticsearch-head### [root@localhost bin]# cd /usr/local/src/ [root@localhost src]# tar xzvf elasticsearch-head.tar.gz [root@localhost src]# cd elasticsearch-head/ [root@localhost elasticsearch-head]# npm install #####修改主配置文件### [root@localhost ~]# cd ~ [root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml ####下面配置文件,插到末尾## http.cors.enabled: true http.cors.allow-origin: "*" [root@localhost ~]# systemctl restart elasticsearch ####啓動elasticsearch-head 啓動服務器#### [root@localhost ~]# cd /usr/local/src/elasticsearch-head/ [root@localhost elasticsearch-head]# npm run start & ####切換到後臺運行 [1] 114729 [root@localhost elasticsearch-head]# > elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head > grunt server Running "connect:server" (connect) task Waiting forever... Started connect web server on http://localhost:9100
此時另外開啓一個terminal,查看端口狀態json
[root@localhost elasticsearch-head]# netstat -lnupt |grep 9100 tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 114739/grunt [root@localhost elasticsearch-head]# netstat -lnupt |grep 9200 tcp6 0 0 :::9200 :::* LISTEN 114626/java
打開瀏覽器輸入http://20.0.0.140:9100/ 能夠看見羣集很健康是綠色bootstrap
在Elasticsearch 後面的欄目中輸入http://20.0.0.140:9200 瀏覽器
而後點鏈接 會發現:集羣健康值: green (0 of 0)
●node1信息動做
★node2信息動做
以下圖:
node2也是如此,以下圖所示:
此時,登陸20.0.0.140 node1主機 建立索引爲index-demo,類型爲test
[root@node1 ~]# 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 }
隨之打開瀏覽器輸入http://20.0.0.140:9100/ 查看索引信息
node1信息動做 01234
node2信息動做 01234
●上面圖能夠看見索引默認被分片5個,而且有一個副本
點擊數據瀏覽--會發如今node1上建立的索引爲index-demo,類型爲test, 相關的信息,以下圖:
#一、更改主機名關閉防火牆和核心防禦 hostnamectl set-hostname apache systemctl stop firewalld setenforce 0 #二、安裝Apahce服務(httpd) [root@apache ~]# yum -y install httpd [root@apache ~]# systemctl start httpd #三、安裝Java環境 [root@apache ~]# java -version ###若是沒有裝 安裝yum -y install java openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode) #四、安裝logstash 上傳logstash-5.5.1.rpm到/opt目錄下 [root@apache ~]# cd /opt [root@apache opt]# rpm -ivh logstash-5.5.1.rpm ##安裝logstash [root@apache opt]# systemctl start logstash.service ##啓動logstash [root@apache opt]# systemctl enable logstash.service ##設置爲開機自啓 [root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ ##創建logstash軟鏈接
####使用logstash將信息寫入elasticsearch中#### 輸入 輸出 對接 [root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.140:9200"] } }' 。。。。。。。。省略。。。。。。。 The stdin plugin is now waiting for input: 10:40:06.558 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}##如下是須要輸入的內容 www.baidu.com ###輸入內容 www.sina.com.cn ###輸入內容 www.google.com.cn ###輸入內容
打開瀏覽器 輸入http://20.0.0.140:9100/ 查看索引信息###
多出 logstash-2020.03.25
點擊數瀏覽查看響應的內容,以下圖
Logstash配置文件主要由三部分組成:input、output、filter(根據須要配置)
[root@apache opt]# chmod o+r /var/log/messages [root@apache opt]# ll /var/log/messages -rw----r--. 1 root root 572555 4月 16 23:50 /var/log/messages [root@apache opt]# vi /etc/logstash/conf.d/system.conf input { file{ path => "/var/log/messages" type => "system" start_position => "beginning" } } output { elasticsearch { hosts => ["20.0.0.140:9200"] index => "system-%{+YYYY.MM.dd}" } } [root@apache opt]# systemctl restart logstash.service ##必定要重啓服務哈!!!!
打開瀏覽器 輸入http://20.0.0.140:9100/ 查看索引信息###
多出 system-2020.03.25
[root@node1 ~]# cd /usr/local/src/ [root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm [root@node1 src]# cd /etc/kibana/ [root@node1 kibana]# cp kibana.yml kibana.yml.bak [root@node1 kibana]# vi kibana.yml server.port: 5601 #### kibana打開的端口 server.host: "0.0.0.0" ####kibana偵聽的地址 elasticsearch.url: "http://20.0.0.140:9200" ###和elasticsearch創建聯繫 kibana.index: ".kibana" ####在elasticsearch中添加.kibana索引 [root@node1 kibana]# systemctl start kibana.service ###啓動kibana服務 [root@node1 kibana]# systemctl enable kibana.service ###開機啓動kibana服務
使用瀏覽器輸入20.0.0.140:5601,首次登陸建立一個索引 名字:system- ##這是對接系統日誌文件
一、Index name or pattern ###下面輸入system-,而後點最下面的出面的create 按鈕建立
二、最左上角的Discover按鈕 會發現system-*信息
三、點下面的host旁邊的add 會發現右面的圖只有 Time 和host 選項了 這個比較友好
以下圖所示:
[root@apache opt]# cd /etc/logstash/conf.d/ [root@apache conf.d]# touch apache_log.conf [root@apache conf.d]# vi apache_log.conf input { file{ path => "/etc/httpd/logs/access_log" type => "access" start_position => "beginning" } file{ path => "/etc/httpd/logs/error_log" type => "error" start_position => "beginning" } } output { if [type] == "access" { elasticsearch { hosts => ["20.0.0.140:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error" { elasticsearch { hosts => ["20.0.0.140:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } } [root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf ....省略內容
打開瀏覽器訪問http://20.0.0.141
打開瀏覽器 輸入http://20.0.0.140:9100/ 查看索引信息###
能發現apache_error-2020.03.25 apache_access-2020.03.25
接下來:打開瀏覽器 輸入http://20.0.0.140:5601
點擊左下角有個management選項---index patterns---create index pattern
----分別建立apache_error- 和 apache_access- 的索引
沒有作時間同步,也多是其餘問題,出如今Discover中查看Apache日誌時沒有可視化數據
刪除原有的index,從新執行/usr/share/logstash/bin/logstash -f apache_log.conf命令
以上就是部署的詳細流程了,主要是安裝部署對應的軟件,配置其主要文件,開啓相關服務後進行驗證測試!