我想使用 rsyslog 捕获来自 SAN、路由器等的事件。(这将转发到 kafka 并最终转发到 elasticsearch)到目前为止,一切正常。我已在 /etc/rsyslog.d 中的配置文件中配置了此功能
不起作用的是所有本地日志流量(来自运行 rsyslog 的主机)也正在转发。我需要一种方法将本地日志发送到“标准”本地端点,并将远程日志发送到 kafka。
使用 rsyslog 可以实现这个吗?
答案1
以下是看起来可行的方法的开始:
module(load="imuxsock") # will listen to your local syslog
module(load="omkafka") # lets you send to Kafka
template(name="json_lines" type="list" option.json="on") {
constant(value="{")
constant(value="\"timestamp\":\"")
property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"message\":\"")
property(name="msg")
constant(value="\",\"host\":\"")
property(name="hostname")
constant(value="\",\"severity\":\"")
property(name="syslogseverity-text")
constant(value="\",\"facility\":\"")
property(name="syslogfacility-text")
constant(value="\",\"syslog-tag\":\"")
property(name="syslogtag")
constant(value="\"}")
}
main_queue(
queue.workerthreads="1" # threads to work on the queue
queue.dequeueBatchSize="100" # max number of messages to process at once
queue.size="10000" # max queue size
)
if $hostname != $$myhostname then {
action(
broker=["kafka.server:9092"]
type="omkafka"
topic="syslog.inbound"
template="json_lines"
)
stop
}
它确实需要完善,但它似乎可以分离外部/内部系统日志消息。