2、ELK與EFK部署


ELK與EFK介紹

先來了解一下ELK是什么?

ELK 是 Elastic 公司提供的一套完整的日志收集以及展示的解決方案,是三個產品的首字母縮寫,分別是 Elasticsearch、Logstash 和 Kibana。

  • Elasticsearch,簡稱ES,是實時全文搜索和分析引擎,提供搜集、分析、存儲數據三大功能

  • Logstash是一個用來搜集、分析、過濾日志的工具

  • Kibana是一個基於 Web 的圖形界面,用於搜索、分析和可視化存儲在 Elasticsearch 指標中的日志數據

那么ELK和EFK的區別是什么?

這二者主要的區別就是使用的采集工具不同,ELK使用的是Logstash,EFK則使用的是Filebeat,但是由於Logstash占用的資源比較大,而Filebeat更加的輕量,所以目前作用於日志采集的工具已經逐漸由Logstash演變成了Filebeat。

Logstash + Filebeat

那么為什么要這么使用呢?

主要還是因為Filebeat作為日志采集所占用的資源雖然少,但是Filebeat的過濾功能又相對較弱,相反,logstash的過濾率功能又是十分出色的,所以這時候就可以使用Filebeat +logstash的架構,Filebeat用於日志采集,logstash用於日志過濾。


該部署以Centos7為例

ES、ES-head、Kibana安裝

可參考Elasticsearch詳解及部署

Logstash安裝

注:logstash同樣依賴Java環境,所以如果要在其他設備上部署也要記得進行配置

Logstash與JDK版本的版本對應關系可參考https://www.elastic.co/cn/support/matrix#matrix_jvm

logstash下載地址: https://mirrors.huaweicloud.com/logstash/?C=N&O=D

1.解壓安裝包

tar -zxvf logstash-7.6.1.tar.gz -C /usr/local/

2.創建logstash日志采集配置文件並編輯

cd /usr/local/logstash-7.6.1/config/

因為這里采集的是Mysql的日志,所以需要事先安裝好Mysql,可參考Mysql單機部署(二進制方式部署)

vim sunny_log.conf

input{
  #從文件讀取日志信息,輸送到控制台
  file {
    path => "/var/lib/mysql/logs/query_log.log"    #采集的文件
    codec => "json"
    type => "elasticsearch"
    start_position => "beginning"
  }
}
output{
  stdout { codec => rubydebug }         #代表在控制台輸出
  elasticsearch {
    hosts => ["192.168.111.129:9200"]   #代表輸出至ES
    index => "es-mysql-%{+YYYY.MM.dd}"  #索引名稱格式
  }
} 

這里我采集的是Mysql的操作日志,可參考Mysql操作日志(general_log)詳解

3.啟動logstash

這里如果不使用root啟用,需注意配置文件權限,並且,logstash會對第一次采集的文件先進行一次全量采集

cd /usr/local/logstash-7.6.1/bin/

nohup ./logstash -f ../config/sunny_log.conf &

通過ps -ef | grep logstash即可查看到logstash進程

4.驗證

稍等片刻后(這里可能需要等待一段時間,可通過日志觀察),我們就可以通過elasticsearch-head界面查看到我們的Mysql操作日志采集索引

此時的日志采集當然也是實時的,可以自行登錄mysql操作看看

Filebeat安裝

注:Filebeat是由Go語言編寫的,所以不需要依賴Java環境

Filebeat下載地址: https://www.elastic.co/cn/downloads/past-releases/filebeat-7-6-1

1.解壓安裝包

tar -zxvf filebeat-7.6.1-linux-x86_64.tar.gz -C /usr/local/

2.配置Filebeat日志采集配置文件

cd /usr/local/filebeat-7.6.1-linux-x86_64/

cp filebeat.yml filebeat.yml.bak

這里同樣是來采集我們的Mysql操作日志

vim filebeat.yml

#參考以下配置來進行修改
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/lib/mysql/logs/query_log.log       #采集的文件
output.elasticsearch:
  hosts: ["192.168.111.129:9200"]

3.創建日志目錄

mkdir /usr/local/filebeat-7.6.1-linux-x86_64/logs

4.啟動Filebeat

這里如果不使用root啟用,需注意配置文件權限,並且,filebeat會對第一次采集的文件先進行一次全量采集

nohup ./filebeat -c filebeat.yml -e > logs/filebeat.log 2>&1 &

5.驗證

Filebeat會產生兩個索引在ES

同樣成功采集到了我們的Mysql操作日志

Filebeat + Logstash使用

filebeat采集日志文件,將日志輸出到logstash

#如果是按照上面操作步驟下來的,先把filebeat和logstash服務停掉

1.修改Filebeat配置文件

cd /usr/local/filebeat-7.6.1-linux-x86_64/

vim filebeat.yml

#參考以下配置來進行修改
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/lib/mysql/logs/query_log.log       #采集的文件
#該配置就在我們配置ES的下面,把輸出到ES的配置注釋掉,輸出到Logstah
output.logstash:
  # The Logstash hosts
  hosts: ["192.168.111.129:5044"]

2.修改Logstash配置文件

cd /usr/local/logstash-7.6.1/config/

vim beat_logstash.conf

input {
  beats {
    #開放一個端口給Filebeat,對應着Filebeat里的配置文件,接收它的數據然后輸出給ES
    port => 5044
    #設置timeout時間,不然時間久了,Filebeat和Logstash會斷開連接
    client_inactivity_timeout => 36000
  }
}

output {
  elasticsearch {
    hosts => ["192.168.111.129:9200"]
    index => "log-%{+yyyy.MM.dd}"
  }
}

3.依次啟動Filebeat和Logstash

cd /usr/local/logstash-7.6.1/bin

nohup ./logstash -f ../config/beat_logstash.conf &

cd /usr/local/filebeat-7.6.1-linux-x86_64/

nohup ./filebeat -c filebeat.yml -e > logs/filebeat.log 2>&1 &

4.驗證

此時我們登陸數據庫進行一下操作后,我們的索引才會產生,這樣配置后它一開始並不會進行全量采集,只采集從當前開始新增的日志信息

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM