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就不用说了吧……