由於線上的logstash吃掉大量的cpu,占用較多的系統資源,就想找其它的元件替代.我們的日誌需要收集併發送到kafka,生成的日誌已經是需要的資料,不用過濾.經過調研發現filebeat也支援發往kafka.
filebeat很輕量,用於**和收集日誌資料.filebeat作為**安裝在伺服器上,監視指定的日誌檔案或位置,收集日誌事件,並將他們**到logstash,elasticsearch,kafka等.架構圖如下:
獲取安裝包並解壓
# wget
# tar -xvf filebeat-6.5.1-linux-x86_64.tar.gz
filebeat支援很多種輸入和輸出.具體可看input,output.
專案中用到的輸入是log,輸出的kafka.在這只講這兩種配置.
log輸入是從檔案中按行讀取.在paths指定需要監視的檔案.
例子:
filebeat.inputs:
- type: log
paths:
- /var/log/messages
- /var/log/*.log
主要有以下幾個配置項.
需要監視的檔案路徑.支援go glab的所有模式.例如: /var/log/*.log.這個配置將監視/var/log資料夾下所有以.log結尾的檔案.可以用recursive_glob來遞迴子資料夾.
允許擴充套件 * * 為遞迴的glob模式.啟用此功能後. /foo/* * 擴充套件到/foo, /foo/* ,/foo/* /* ,等等,它會將單個擴充套件 * * 為8級深度*模式.
預設情況下啟用此功能.設定false禁用.
正規表示式列表,用於匹配您希望filebeat排除的行.filebeat會刪除與列表中的正規表示式匹配的所有行.預設情況下,不會刪除任何行.空行被忽略.
以下示例將filebeat配置為刪除任何以dbg開頭的行:
filebeat.inputs:
- type: log
...exclude_lines: ['^dbg']
正規表示式列表,用於匹配您希望filebeat包含的行.filebeat僅匯出與列表中的正規表示式匹配的行.預設情況下,將匯出所有行.空行被忽略.
以下示例將filebeat配置為匯出以err或warn開頭的所有行:
filebeat.inputs:
- type: log
...include_lines: ['^err', '^warn']
ps: 如果include_lines和exclude_lines兩個配置同時出現,優先執行inlcude_lines再執行exclude_lines.和配置項放的位置沒有關係.
filebeat支援json格式的訊息日誌.它將逐行處理日誌,因此只有每行有乙個json物件時,json解碼才有效.
配置示例:
json.keys_under_root: true
json.add_error_key: true
json.message_key: log
輸入開關.預設true開啟.
kafka將輸出流傳送到apache kafka.
配置示例:
output.kafka:
# initial brokers for reading cluster metadata
hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
# message topic selection + partitioning
topic: '%'
partition.round_robin:
reachable_only: false
required_acks: 1
compression: gzip
max_message_bytes: 1000000
主要以下幾個配置項
是否開啟輸出配置項.true開啟,false關閉.預設是true.
kafka的broker位址.
kafka的topic.
併發負載均衡kafka輸出工作執行緒的數量.
kafka返回應答的等待時間.預設30(秒).
連線的存活時間.如果為0,表示短連,傳送完就關閉.預設為0秒.
ack的可靠等級.0=無響應,1=等待本地訊息,-1=等待所有副本提交.預設1.
ps: 如果設為0,kafka無應答返回時,訊息將丟失.
#*************************== filebeat inputs *************************====
#------------------------------log-----------------------------------
filebeat.inputs:
- type: log
enabled: true
paths:
- /data/collect_log/info.*
#*************************== filebeat outputs *************************====
#------------------------------kafka-----------------------------------
output.kafka:
hosts: ["test1:9092","test2:9092"]
topic: test_collect
keep_alive: 10s
收集/data/collect_log目錄下以info開頭的檔案,傳送到kafka,kafka的topic是test_collect.
# /home/filebeat -c filebeat-kafka.yml
日誌在filebeat下的log目錄.想要顯示的看日誌啟動時加 -e 引數.
參考文件:
日誌啊日誌
開發和除錯有時候真的是一件很靈異的事情,所以如果你膽小就不要做軟體了。前兩天deem向我要一些lilac的使用者日誌,當時我看了一下,發現使用者日誌只有去年7月份的 使用者日誌只有去年7月份的 使用者日誌只有去年7月份的 使用者日誌只有去年7月份的 更詭異的是boardusage日誌都沒有問題,這就...
日誌 遠端日誌 日誌輪詢 DHCP
日誌 etc init.d syslog start 啟動系統日誌 tail f var log messages 系統日誌 var log 日誌存放位置 日誌配置檔案 etc syslog.conf 日誌物件.日誌級別 日誌檔案 日誌級別越低資訊越詳細 man 5 syslog.conf 常見日誌...
日誌 syslog系統日誌
原創 2017年02月17日 20 47 05 前言 本文列出了在linux系統下的幾個日誌檔案。以及結合message中的日誌記錄,作出了簡單分析。syslog是linux系統預設的日誌守護程序。預設的syslog配置檔案是 etc sysctl.conf檔案 通常,syslog 接受來自系統的各...