1. 程式人生 > >Centos7.2 搭建ELK-5.6.4日誌分析平臺(二)

Centos7.2 搭建ELK-5.6.4日誌分析平臺(二)

上一篇,我記錄了elasticsearch,logstash,kibana三個軟體的安裝和執行,並按照我之前的博文,使用supervisor進行程序管理,且我們elasticsearch是做了叢集的,兩個節點,都可以作為master和data節點。架構圖如下:


架構圖上,已完成後面的部分,接下來記錄一下前半部分的實現,即filebeat和redis,和一起其他需要注意的地方。

1. redis

在這個架構中, redis用來做訊息管道,用來快取儲峰值資料等。並不需要特別的設定,直接安裝一個redis服務即可。因為知識用來一個管道,所以基本並不消耗redis的記憶體磁碟的儲存資源,就像一箇中轉站,先放一下,馬上就被取走。沒有資料或資料量較小的時候哦。在redis中看不到任何資料,要像測試filebeat是否正常輸出到redis,就要將logstash關掉,然後啟動filebeat,觀察redis中指定資料庫中的資料,然後再開啟logstash,會發現redis中的資料以可觀的速度在開始減少,直到重新整理不出資料。則驗證了filebeat --> redis --> logstash 的管道的連通性。

2. filebeat的安裝與配置

filebeat是5.x版本後的採集器beats中的其中一個,用於對日誌檔案的資料進行採集,簡單處理,傳送給logstash,elasticsearch,kafka,redis等。這裡我們是傳送給redis。

首先,去官網下載對應版本的filebeat並安裝

$ wget  https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.4-x86_64.rpm   ##下載rpm安裝包,更方便的進行服務管理
$ yum localinstall filebeat-5.6.4-x86_64.rpm   ## 本地安裝

$ vim /etc/filebeat/filebeat.yml   ## 修改配置檔案,下面為配置檔案內容
filebeat.prospectors:
- input_type: log   ## 輸入型別,為log日誌,有兩種型別可選,log日誌和stdin標準輸入
  paths: ## 要實時監聽採集日誌的日誌檔案路徑,下面可以寫多個路徑,指定多個檔案。這裡以tomcat日誌為例
    - /usr/local/apache-tomcat-8080/logs/x5.log 
  encoding: utf-8    ## 日誌編碼方式
  document_type: tomcat_log_x5sit    ## 資料型別,增加這個欄位與資料一起傳送給後面,可以用來進行日誌的分類
  multiline.pattern: ^20    ## filebeat預設是以一行為一條日誌資料,但是tomcat的錯誤日誌等,有時會輸出很多行,需要將下面資料的多行歸類為同一條資料。
  multiline.negate: true    ## pattern是正則匹配規則,這個為true標識,單行資料滿足上述匹配規則則視為一條資料,否則則視為上一條資料的內容。
  multiline.match: after    ## after是表示如果視為上一條資料的內容是加到資料的後面, before則是前面。

- input_type: log    ## 類似上面,可以新增多個監聽的日誌程序,每個程序又可監聽多個日誌檔案。
  paths:
    - /usr/local/apache-tomcat-8082/logs/pmsSrv-custSrv_*.log  ## 這裡指定了多個日誌檔案。
  encoding: utf-8
  #close_older: 0
  document_type: tomcat_log_sms
  multiline.pattern: ^20
  multiline.negate: true
  multiline.match: after

name: "192.168.9.87"   ## filebeat的name,這裡我用IP來區分不同機器。

output.redis:  ## 輸出出口配置redis
  hosts: ["192.168.9.79"]   
  port: 6379
  key: "redis-pipeline"  ## 這個key則是設定輸出的資料存到redis佇列的key值,要跟logstash中向redis取資料時設定的key相同,才能取到資料,也就是說可以通過這個配置多個管道
  db: "10"   ## 指定redis資料庫。 

OK,配置完成後,啟動filebeat。filebeat

$ systemctl start filebeat

OK,然後通過上面說的方法,驗證一下是否正常啟動,管道是否聯通。

一切正常後,則可以訪問kibana的頁面,http://192.168.9.90:5601。 然後用預設的index,即logstash-* 來進行索引,即可進入系統,則可以在discover上看到實時日誌輸出。


如果你能看到類似的介面,則恭喜你,到此,整個系統算是搭建成功了

OK,到此,基礎的系統就搭建完成了,然後在此基礎上,要想拓展多種別的功能,則需要新增x-pack外掛包,下面說一下,如何安裝並修改配置:

1. 取官網下載對應版本的x-pack的外掛包,然後利用本地檔案安裝,官網上是寫的自動用網路下載安裝,但由於下載速度奇慢,其x-pack較大,每個都自動安裝則要重複下載多次。這裡用檔案本地安裝:

$ wget https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.6.4.zip
$ /usr/local/ELK/bielasticsearch-5.6.4/bin/elasticsearch-plugin install file:///path/to/file/x-pack-5.6.4.zip
$ /usr/local/ELK/logstash-5.6.4/bin/logstash-plugin install file:///path/to/file/x-pack-5.6.4.zip
$ /usr/local/ELK/kibana-5.6.4-linux-x86_64/bin/kibana-plugin install file:///path/to/file/x-pack-5.6.4.zip

安裝後,預設的使用者密碼為: user:elastic      password:changeme

需要修該配置,新增免密認證,才能正常的讓logstash連線到elasticsearch,kibana連線elasticsearch。

vim /usr/local/ELK/kibana-5.6.4-linux-x86_64/config/kibana.yml  ## 修改kiban配置,新增下面兩行配置,然後重啟
elasticsearch.username: "elastic"
elasticsearch.password: "changeme"

vim /usr/local/ELK/logstash-5.6.4/config/logstash.yml    ## 修改logstash的配置,新增下面三行,然後重啟
xpack.monitoring.elasticsearch.url: "http://192.168.9.89:9200"
xpack.monitoring.elasticsearch.username: "logstash_system"
xpack.monitoring.elasticsearch.password: "changeme"
vim /usr/local/ELK/conf/all.conf    ## 修改logstash指定執行的自定義過濾規則的配置檔案,在輸出到elasticsearch時需要新增使用者密碼驗證。
output {
        elasticsearch {
                hosts => ["192.168.9.89:9200","192.168.9.90:9200"]
                index => "logstash-test"
                user => "elastic"
                password => "changeme"
        }
}

OK,重啟elk三個服務後,訪問kibana介面,會出現使用者名稱密碼驗證,用x-pack預設的使用者密碼進行驗證即可。

但是,到此還只是算是基礎的完成了,剩下的就是根據你要監控的系統,配置各種不同的filebeat,各種不同logstash過濾方式,將各種不同型別的資料傳輸到elasticsearch。然後再配置不同的監檢視標,儀表盤,來進行視覺化的監控分析。

在上面,我都是以tomcat日誌為例子,進行的採集,logstash中grok也是寫的tomcat的日誌過濾格式,為了能同時過濾多種日誌,然後設定多個儀表盤,多個監控圖示。

今天就到這裡吧,下一篇則重點記錄講解,系統的其他的各種日誌的採集,lotstash的過濾配置檔案編寫,和kibana上介面的配置,監控的配置等等。