Filebeat

小郑[努力版]發表於2024-09-22

Filebeat

簡介

Filebeat用於轉發和集中日誌資料的輕量級傳送程式。作為伺服器上的代理安裝,Filebeat監視指定的位置檔案或位置,收集日誌事件,並將他們轉發到Elasticsearch 或Logstash進行索引。

架構圖

安裝Filebeat

下載並安裝

wget  https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.0.1-x86_64.rpm
yum install ./filebeat-6.0.1-x86_64.rpm

配置

修改Filebeat配置檔案

filebeat.yml

vim /etc/filebeat/filebeat.yml                     # 主配置檔案
\- type: log                                       # 文件型別
paths:
\- /var/log/httpd/access.log*                     # 從哪裡讀入資料# 輸出在elasticsearch與logstash二選一即可
output.elasticsearch:                           #將資料輸出到Elasticsearch。與下面的logstash二者選一
 hosts: ["localhost:9200"]
output.logstash:                               # 將資料傳送到logstash,要配置logstash使用beats接收
 hosts: ["172.18.68.14:5044"]

定義輸入日誌檔案路徑

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

在這個例子中,獲取在/var/log/*.log路徑下的所有檔案作為輸入,這就意味著Filebeat將獲取/var/log目錄下所有以.log結尾的檔案。

為了從預定義的子目錄級別下抓取所有檔案,可以使用以下模式,:/var/log/*/*.log.這個將抓取/var/log目錄下的所有以.log結尾的檔案

目前配置了這樣的目錄結構,那麼只會抓取到2.log和 3.log,而不會抓到4.log和1.log

傳送到Elasticsearch

如果你傳送輸出目錄到Elasticsearch(並且不用Logstash),那麼設定ip地址和埠以便能夠找到Elasticsearch

output.elasticsearch:
    hosts: ["192.168.1.42:9200"]

如果打算用kibana儀表盤

setup.kibana:
      host: "localhost:5601"

output.elasticsearch:
      hosts: ["myEShost:9200"]
      username: "filebeat_internal"
      password: "{pwd}" 
setup.kibana:
      host: "mykibanahost:5601"
      username: "my_kibana_user"  
      password: "{pwd}"

配置filebeat以使用Logstash

如果想使用Logstash對filebeat收集的資料進行額外處理,那麼你需要將filebeat配置為使用Logstash。

output.logstash:
      hosts: ["127.0.0.1:5044"]

完整配置

#=========================== Filebeat inputs ==============
filebeat.inputs:

- type: log

  enabled: true

  paths:
    - /var/log/*.log

#============================== Dashboards ===============
setup.dashboards.enabled: false

#============================== Kibana ==================
setup.kibana:
	host: "192.168.101.5:5601"

#-------------------------- Elasticsearch output ---------
output.elasticsearch:
  	hosts: ["localhost:9200"]

啟動Filebeat

systemctl start filebeat

配置Logstash接收來自FIlebeat採集的資料

vim /etc/logstash/conf.d/test.conf
input {
   beats {
           port => 5044                             # 監聽5044用於接收Filebeat傳來資料
   }
}
filter {
 grok {
match => {
 "message" => "%{COMBINEDAPACHELOG}"                 # 匹配HTTP的日誌
}
remove_field => "message"                             # 不顯示原資訊,僅顯示匹配後
 }
}
output {
elasticsearch {
hosts => ["http://172.18.68.11:9200","http://172.18.68.12:9200","http://172.18.68.13:9200"] # 叢集IP
index => "logstash-%{+YYYY.MM.dd}"
action => "index"
document_type => "apache_logs"
}
}

啟動Logstash

 /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf

模擬日誌訪問

透過curl命令來模擬客戶訪問,生成訪問日誌

curl 127.0.0.1
curl 172.18.68.51
curl 172.18.68.52
curl 172.18.68.53

驗證資訊

清除之前實驗的舊資料(刪除時要在對話方塊中輸入刪除),然後可以看到filebeat採集資料經過Logtash過濾再送給Elasticsearch的資料。

相關文章