這篇文章將更深入的去介紹 Log 與 Filebeat 在實際運用上的細節、基礎概念及相關配置教學,本篇文章將著重在 Filebeat 在收集 Log 上的運用。
Log 就像是我們的好隊友,首先當然要了解隊友!!! 接下來才能夠跟隊友互相扶持共同成長,首先我們要
Log 解決了商業面的問題
Elastic Stack 能夠處理不同的系統與服務的 Log,提供了兩種收集 Log 的工具
解析 Log 常見問題
Log 在 Elastic Stack 中的生命週期
Log 中每筆 event 可能會有包含多行的情境,Filebeat 也有提供相關配置,透過 regular expression patterns 來找出每筆 Log 開始的地方,搭配 negate 和 match 去找出整段,這裡有線上解析器來檢查我們寫的表達式。
multiline.pattern: 'test'
negate: true
match: before
multiline.flush_pattern: 'test end'
[2020] test start
oxox
xoxo
oxox
[2020] test end
Filebeat 提供很多預設的模組,讓實體 Log 檔無痛存到 Elasticsearch,預設的模組也提供了預設的 dashboards 非常方便,如何使用 Filebeat:
Filebeat 在安裝後 module 大部分預設都是 disabled 的,需要自行啟用
./filebeat modules list
可以看目前 module 的狀態./filebeat modules enable nginx
透過指令開啟模組,這裡是開啟 nginx配置 Filebeat 需要修改 filebeat.yml
ignore_older: 24h
預設是 0 代表 disableinclude_lines: ['^WARN']
include_lines: ['^INFO']
exclude_files: ['\.gz$']
filebeat.modules:
- module: nginx
- module: mysql
接著在開始配置前,先透過指令測試我們的配置檔
./filebeat test config
./filebeat test output
./filebeat test -c custom.yml output
執行以下指令配置 Filebeat,目的是確認 Elasticsearch 跟 kibana 是否可以連線,只需要跑一次即可
./filebeat setup
不幸需要 debug 的話./filebeat -e -d "publish"
Filebeat 會自動幫我們確認新檔案,並且在傳送資料時會使用偵測背壓 (backpressure) 的協定,當 Logstash 或是 Elasticsearch 告知壓力過大,Filebeat 會自動減速,也有相關配置可以依照系統效能和需求去設定:
Filebeat 所有的資訊都透過 registry 來儲存現在的狀態,如果當機也會從這裡儲存的狀態恢復,存放的位置會在:
var/lib/filebeat/registry
C:\ProgramData\filebeat\registry
如果發現 registry 檔案太大可以透過以下配置來改善:
clean_inactive
clean_removed
Elasticsearch 都是用 Index 來儲存的,Filebeat 預設是使用 ILM (Index Lifecycle Management),ILM 的概念如下
確認資料是不是有進到 Elasticsearch:
透過 Kibana 查看 dashboards
./filebeat setup --dashboards
Log 如果搭配 Metrics、APM 會更容易評估系統和服務,但很可能因此資料量過大,這時 Elasticsearch 可以無痛的按照用途分成不同的 cluster,像是分成監控專用、APM 專用來達到分散流量的效果。