logstash-forwarder(曾名lumberjack)是一个用go语言写的日志发送端,
主要是为一些机器性能不足,有性能强迫症的患者准备的。
主要功能:
通过配置的信任关系,把被监控机器的日志加密后传送给logstash,
减少被收集日志机器的性能消耗,相当于日志的计算换一台机器;
仅支持加密连接;
支持监控多个目录的多个文件,每个监控组增加tag属性,方便logstash后续分拣;
性能相当强劲;
多个下游logstash,一个fail/connection broken,自动更换;
不支持功能:
日志过滤,比如根据某种模板过滤只发送部分行;
不加密连接;
配置部分:
生成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就不用说了吧……