需要流畅的配置帮助,才能捕获记录中的syslog客户端IP地址。
我正在使用docker容器启动一个流利的实例,以聚合来自远程syslog客户端的日志,并将其发送到Elasticsearch进行索引。
设法使安装程序在@type syslog下面使用。
<source>
@type syslog
tag syslog
protocol_type tcp
port 5140
frame_type octet_count
<parse>
@type syslog
message_format rfc5424
with_priority true
rfc5424_time_format %Y-%m-%dT%H:%M:%S+%z
</parse>
</source>
但是,由于有许多要聚合的系统日志客户端,因此打算通过将系统日志客户端的IP地址添加到记录中来区分日志。
因此,尝试使用@type tcp和文档中列出的source_address_key参数来捕获传入的客户端IP地址。
“客户端IP地址的字段名称。如果设置此选项, Fluentd自动将远程地址添加到每个数据记录。”
<source>
@type tcp
tag tcp.events
port 5140
source_address_key client_addr
<parse>
@type regexp
expression /^[\w :]+\<(?<pri>[0-9]{1,3})\>[1-9]\d{0,2} (?<time>[^ ]+) (?<host>[^ ]+)[- ]+(?<message>[\[\w\:\]\- \;\=\'\,\(\.\)\#]+)$/
</parse>
</source>
终端的输出显示以下警告消息:
[warn]: parameter 'source_address_key' in <source>
@type tcp
tag "tcp.events"
port 5140
source_address_key client_addr
<parse>
@type "regexp"
expression /^[\w :]+\<(?<pri>[0-9]{1,3})\>[1-9]\d{0,2} (?<time>[^ ]+) (?<host>[^ ]+)[- ]+(?<message>[\[\w\:\]\- \;\=\'\,\(\.\)\#]+)$/
</parse>
</source> is not used.
从输出中,仅设法捕获syslog消息,但未将IP地址添加到记录中。
答案 0 :(得分:0)
发现了问题。似乎source_address_key
不适用于@type tcp。
发现它仅适用于@type syslog。
发回这里,以防有人遇到相同问题。
# get logs from syslog
<source>
@type syslog
tag syslog
protocol_type tcp
source_address_key client_addr
port 5140
frame_type octet_count
<parse>
@type syslog
message_format rfc5424
with_priority true
rfc5424_time_format %Y-%m-%dT%H:%M:%S+%z
</parse>
</source>