logstash 配置 logstash-forwarder (前名称:lumberjack)

时间:2021-08-31 20:57:26

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