ELK日誌文件分析系統基本部署

ELK日誌文件分析系統基本部署

ELK概述

​ ELK是elasticsearch、Logstashh和Kibana三個系統的首字母組合。當我們部署集羣服務器的時候,日誌文件就會散落在多臺服務器上。查看日誌信息就需要到各個服務器上去取和查看,我們把這些日誌文件歸集到一個地方統一管理。

Elasticsearch是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。

Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(如,搜索)。

Kibana 也是一個開源和免費的工具,Kibana可以爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。

在這裏插入圖片描述

實驗前期準備

名稱 角色 地址
centos 7-1 node1+kibana 192.168.142.221
centos 7-2 node1 192.168.142.132
centos 7-3 Logstash+web 192.168.142.136

這裏我將WEB端與日誌文件系統安裝在了,各位可以根據個人情況,全部獨立出去。(虛擬機開太多了,電腦頂不住啊)

實驗步驟

一、部署Elasticsearch服務

注意:兩個節點操作相同

添加域名解析。方便後期使用

[root@node1 ~]# vim /etc/hosts
//添加
192.168.142.221 node1
192.168.142.132 node2

檢查JAVA版本(沒有安裝的可以使用yum install java進行安裝)

[root@node1 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

部署elasticsearch服務(端口號:9200)

//部署elasticsearch服務
[root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm

//加載系統服務
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl enable elasticsearch.service

修改ES配置文件

[root@node1 ~]# vim /etc/elasticsearch/elasticssearch.yml
//以下幾行取消註釋
17/ cluster.name: my-elk-eluster           //集羣名字(所有節點必須一樣)
23/ node.name: node1            //節點名字(每個節點不同)
33/ path.data:/data/elk_data          //數據存放路徑
37/ path.logs:/var/log/elasticsearch/          //日誌存放路徑
43/ bootstrap.memorylock: false                //不在啓動的時候鎖定內存
55/ network.host: 0.0.0.0                         //提供服務綁定的IP地址,0. 0. 0. 0代表所有地址
59/ http.port: 9200                  //偵聽端口爲9200
68/ discovery.zen.ping.unicast.hosts: ["node1", "node2"]               //集羣發現通過單播實現

建立數據文件存放目錄,並開啓服務

[root@node1 ~]# mkdir -p /data/elk_data
[root@node1 ~]# chown -R elasticsearch:elasticsearch /data/elk_data     //修改屬主屬組
[root@node1 ~]# systemctl start elasticsearch.service
[root@node1 ~]# netstat -atnp | grep 9200

驗證服務是否開啓

使用宿主機瀏覽器訪問:http://192.168.142.132:9200,即可獲取到相應的節點信息,如下:

{
“name” : “node1”,
“cluster_name” : “my-elk-cluster”,
“cluster_uuid” : “mi3-z72CRqS-ofc4NhjXdQ”,
“version” : {
“number” : “5.5.0”,
“build_hash” : “260387d”,
“build_date” : “2017-06-30T23:16:05.735Z”,
“build_snapshot” : false,
“lucene_version” : “6.6.0”
},
“tagline” : “You Know, for Search”
}

二、安裝管理插件elasticsearch-head(端口:9100)

注意:兩個節點操作相同

解壓並編譯安裝

[root@node1 ~]# yum install gcc gcc-c++ make -y

//安裝node組件包
[root@node1 ~]# tar zxf node-v8.2.1.tar.gz -C /opt
//在node目錄中
[root@node1 ~]# ./configure
[root@node1 ~]# make              //異常費時,大概耗時20min
[root@node1 ~]# make install

安裝phantomjs前端框架

[root@node1 ~]# tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
[root@node1 ~]# cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin

安裝elasticsearch-head數據可視化工具

[root@node1 ~]# tar zxf elasticsearch-head.tar.gz -C /usr/local/src 
//在elasticsearch-head目錄中
[root@node1 ~]# npm install          //使用npm工具進行安裝(node組件自帶)

修改elasticsearch-head配置文件

[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
//末行添加
http.cors.enabled: true            //開啓跨域訪問支持
http.cors.allow-origin: "*"            //跨域訪問允許的域名地址,*號爲全網段

開啓elasticsearch-head工具

[root@node1 ~]# systemctl restart elasticsearch            //重啓ES服務
[root@node1 ~]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm run start &         //保持後臺運行

三、安裝Logstash日誌收集系統

安裝WEB服務

任意web服務均可(Apache、nginx、Tomcat均可),不再進行詳細解釋。

這裏使用的Apache服務

安裝logstash系統

[root@apache ~]# rpm -ivh logstash-5.5.1.rpm
[root@apache ~]# systemctl start logstash.service         //啓動logstash
[root@apache ~]# systemctl enable logstash.service      //設置爲開機自啓
[root@apache ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin     //建立軟鏈接方便使用

設置logstash與elasticsearch進行對接

​ logstash配置文件由三部分組成:input(入)、output(出)、filter

[root@apache log]# chmod o+r messages 
[root@apache log]# ll /var/log/messages 
-rw----r--. 1 root root 483737 Dec 18 17:54 /var/log/messages

[root@apache log]# vim /etc/logstash/conf.d/system.conf
#手動添加
input {
        file{
          path => "/var/log/messages"                  #收集日誌的路徑
          type => "system"               #便籤名稱
          start_position => "beginning"               #收集方式,"beginning"從頭開始
          }
        }
output {
        elasticsearch {
          hosts => ["192.168.142.136:9200"]             #es服務地址
          index => "system-%{+YYYY.MM.dd}"             #索引名稱
          }
        }

[root@apache log]# systemctl restart logstash.service    //重啓服務

結果驗證

在這裏插入圖片描述

四、logstash基本使用方法(與本次實驗大體上無關,不愛看的朋友可以直接跳過)

Logstash命令測試

字段描述解釋:

-f 通過這個選項可以指定logstash的配置文件,根據配置文件配置logstash

-e 後面跟着字符串該字符串可以被當做logstash的配置 (如果是””,則默認使用stdin做爲輸入、stdout作爲輸出)

-t 測試配置文件是否正確,然後退出

1、輸入、輸出均爲標準模式
[root@apache ~]# logstash -e 'input { stdin{} },output { stdout{} }'
輸入直接輸出在屏幕上

輸入:www.baidu.com
輸出:apache www.baidu.com

2、使用codec解碼器,使用rubydebug顯示詳細輸出
[root@apache ~]# logstash -e 'input { stdin{} },output { stdout { codec=>rubydebug } }'
會按照編碼格式進行輸出

輸入:www.baidu.com
輸出:
{
“@timestamp”=> 2018-10-12T02: 15:39.136Z, #時間
"@version=> “1”, #版本
“host” => “apache”, #使用Apache服務
“message” => “www.baidu. com” #訪問網頁
}

3、將信息寫入elasticsearch中
[root@apache ~]# logstash -e 'input { stdin{} },output {elasticsearch { hosts=>["192.168.142.221:9200"] } }'
會在elasticsearch中生成索引

輸入:www.baidu.com
輸出:在elasticsearch中生成lostash-2019.12.17

五、安裝Kibana可視化工具(端口:5601)

在node1中進行安裝

[root@node1 ~]# cd /abc/elk/
[root@node1 elk]# rpm -ivh kibana-5.5.1-x86_64.rpm 
[root@node1 kibana]# cp kibana.yml kibana.yml.bak

修改Kibana配置文件

[root@node1 kibana]# vim kibana.yml
//按照下圖進行修改
2/ server.port: 5601                 //打開端口
7/ server.host: "0.0.0.0"                    //監聽的地址
21/ elasticsearch.url: "http://192.168.142.136:9200"      //與elasticsearch建立聯繫
30/ kibana.index: ".kibana"                  //在elasticsearch中添加.kibana索引

啓動Kibana

[root@node1 kibana]# systemctl start kibana.service         //開啓kibana服務
[root@node1 kibana]# systemctl enable kibana.service       //設爲開機自啓動

web服務與elasticsearch進行對接後,使用kibana進行可視化

[root@apache log]# cd /etc/logstash/conf.d/
//修改配置文件(空的自行添加)
[root@apache conf.d]# vim apache_log.conf
input {
        file{
          path => "/etc/httpd/logs/access_log"                //針對於Apache的access日誌
          type => "access"
          start_position => "beginning"
          }
        file{
          path => "/etc/httpd/logs/error_log"                 //針對於Apache的error日誌
          type => "error"
          start_position => "beginning"
          }
        }
output {
        if [type] == "access" {
        elasticsearch {
          hosts => ["192.168.142.136:9200"]                    //elasticsearch地址
          index => "apache_access-%{+YYYY.MM.dd}"
          }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.142.136:9200"]                      //elasticsearch地址
          index => "apache_error-%{+YYYY.MM.dd}"
          }
        }
        }

[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf          //僅對於該日誌文件進行生效

在可視化界面進行配置

在瀏覽器輸入http://192.168.142.136:5601/
首次登錄時創建一個索引(對接系統日誌文件):
輸入:access-*

點擊create按鈕進行創建

在這裏插入圖片描述

點擊Discover按鈕,會發現access-*信息

在這裏插入圖片描述

六、安裝過程中可能遇到的問題

故障集:

19:43:59.210 [LogStash::Runner] FATAL logstash.runner - Logstash could not be started because there is already another instance using the configured data directory.  
If you wish to run multiple instances, you must change the "path.data" setting.

解決方案

//查看logstash配置文件
	vim /etc/logstash/logstash.yml
//找到path.data路徑
	/var/lib/logstash/
//刪除緩存
	rm -rf .lock
//帶路徑重啓
	logstash -f /etc/logstash/conf.d/nginx_log.conf --path.data=/var/lib/logstash

感謝閱讀~ ~ ~

發佈了110 篇原創文章 · 獲贊 21 · 訪問量 6038
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章