Apache kafka rsyslog不';不要把日志写到卡夫卡

Apache kafka rsyslog不';不要把日志写到卡夫卡,apache-kafka,rsyslog,Apache Kafka,Rsyslog,我是rsyslog和kafka的新手,在尝试使用以下日志流时遇到了一些麻烦 nginx log -> rsyslog-imudp -> rsyslog-omkafka -> kafka 这里是nginx conf log_format jsonlog '{' '"host": "$host",' '"server_addr": "$server_addr",' '"http_x_forwarded_for":"$http_x_forwarded_fo

我是rsyslog和kafka的新手,在尝试使用以下日志流时遇到了一些麻烦

nginx log -> rsyslog-imudp -> rsyslog-omkafka -> kafka
这里是nginx conf

log_format  jsonlog '{'
    '"host": "$host",'
    '"server_addr": "$server_addr",'
    '"http_x_forwarded_for":"$http_x_forwarded_for",'
    '"remote_addr":"$remote_addr",'
    '"time_local":"$time_local",'
    '"request_method":"$request_method",'
    '"request_uri":"$request_uri",'
    '"status":$status,'
    '"body_bytes_sent":$body_bytes_sent,'
    '"http_referer":"$http_referer",'
    '"http_user_agent":"$http_user_agent",'
    '"upstream_addr":"$upstream_addr",'
    '"upstream_status":"$upstream_status",'
    '"upstream_response_time":"$upstream_response_time",'
    '"request_time":$request_time'
'}';

access_log syslog:server=server_ip,facility=local7,tag=nginx_access_log jsonlog;
和rsyslog conf

module(load="imudp")
input(type="imudp" port="514")

module(load="omkafka")

template(name="nginxLog" type="string" string="%msg%")

if $inputname == "imudp"then {
        action(type="omkafka"
            template="nginxLog"
            broker=["localhost:9092"]
            topic="rsyslog_logstash"
            partitions.auto="on"
            confParam=[
                "socket.keepalive.enable=true"
            ]
        )
}
不幸的是,我在消费终端中没有任何输出

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic rsyslog_logstash --from-beginning

可能是模板,但我找不到太多关于它的文档。

使用rsyslog impstats模块检查您的imudp接收了多少条消息,以及有多少条消息发送给了omkafka。

使用rsyslog impstats模块检查您的imudp接收了多少条消息,有多少发送到omkafka.

进行调试,请停止rsyslog并使用以下命令运行: rsyslogd-nd (我建议运行rsyslogd-n,再次检查卡夫卡主题,然后调试它)

您可能遇到了SELinux的问题,可以通过以下方式解决:

sudo semanage port -d -t unreserved_port_t -p tcp 9092
sudo semanage port -a -t http_port_t -p tcp 9092

用于调试stop rsyslog并使用以下命令运行它: rsyslogd-nd (我建议运行rsyslogd-n,再次检查卡夫卡主题,然后调试它)

您可能遇到了SELinux的问题,可以通过以下方式解决:

sudo semanage port -d -t unreserved_port_t -p tcp 9092
sudo semanage port -a -t http_port_t -p tcp 9092

感谢你们的评论,我在统计日志中发现了一些有用的东西!使用命令
/etc/init.d/rsyslog start
不会向omkafka发送任何流,而命令
rsyslogd
工作正常。为了明确起见,第一个日志没有此日志
至2016年10月13日09:45:09:omkafka:submitted=6 maxoutqsize=3 failures=0 topicdynacache.skipped=0 topicdynacache.miss=0 topicdynacache.executed=0
您可以将queue.name添加到您的操作中,并检查特殊的队列统计信息,确定rsyslog是否将MSG发送到队列中。感谢您的评论,我在统计日志中发现了一些有用的东西!使用命令
/etc/init.d/rsyslog start
不会向omkafka发送任何流,而命令
rsyslogd
工作正常。为了明确起见,第一个日志没有此日志
至2016年10月13日09:45:09:omkafka:submitted=6 maxoutqsize=3 failures=0 topicdynacache.skipped=0 topicdynacache.miss=0 topicdynacache.executed=0
您可以将queue.name添加到您的操作中,并检查特殊的队列统计信息,以确定rsyslog是否将MSG发送到队列中。