filebeat kafka日誌收集

2022-08-25 10:12:21 字數 3085 閱讀 6514

由於線上的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 接受來自系統的各...