logstash-forwarder(曾名lumberjack)是一個用go語言寫的日誌發送端,node
主要是爲一些機器性能不足,有性能強迫症的患者準備的。git
主要功能:github
經過配置的信任關係,把被監控機器的日誌加密後傳送給logstash,json
減小被收集日誌機器的性能消耗,至關於日誌的計算換一臺機器;ruby
僅支持加密鏈接;app
支持監控多個目錄的多個文件,每一個監控組增長tag屬性,方便logstash後續分揀;工具
性能至關強勁;性能
多個下游logstash,一個fail/connection broken,自動更換;加密
不支持功能:spa
日誌過濾,好比根據某種模板過濾只發送部分行;
不加密鏈接;
配置部分:
生成ssl證書:
openssl req -x509 -batch -nodes -newkey rsa:2048 -days 8650 -keyout lumberjack.key -out lumberjack.crt -subj /CN=logstash.example.com
關於證書部分,我不是專家,照着prj官網 https://github.com/elastic/logstash-forwarder 作的。
**-days 參數是頗有必要的,否則,證書默認只有30天有效期,過時後,一旦重啓或者斷連,兩端會判斷證書過時,沒法鏈接。**
文檔說生成以ip爲簽名的證書會很是複雜。
forwarder發送端:
{ "network": { "servers": [ "logstash1.abc.com:4551" ], "ssl ca": "./lumberjack.crt" }, "files": [ { "paths": ["/opt/tengine_1.5.2/logs/access.log"], "fields": { "type": "app_abc" },
"deadtime":"1h" # 若是文件修改時間比最近工具訪問時間老這麼久,就再也不監聽它 } ] }
啓動forwarder:
./logstash-forwarder -config=lf.json-conf
若是須要從一個很是大的文件的結尾開始讀取,而不是從文件開頭,能夠預先修改一下 ~/.logstash-forwarder 文件。
[root@host-111 ~]# cat ~/.logstash-forwarder
{"/var/log/user/xxxx_app.log":{"source":"/var/log/user/xxxx_app.log","offset":3219807683,"inode":525517,"device":2051}}
logstash配置接收端:
input { lumberjack { port => 4551 ssl_certificate => "/root/lumberjack.crt" ssl_key => "/root/lumberjack.key" } } output { stdout { codec => rubydebug } }
啓動logstash就不用說了吧……