rsyslog的omkafka模块中的权限被拒绝

时间:2017-02-17 11:21:22

标签: apache-kafka kafka-producer-api rsyslog

我正在尝试使用omkafka模块在远程计算机上将rsyslog中的消息发布到kafka。

My omkafka action is configured as:
if $HOSTNAME == 'localhost' then {
    action(type="omkafka"
    name="log_kafka"
    broker="192.168.100.50:9092"
    topic="rsyslog_kafka"
    errorfile="/var/log/omkafka/log_kafka_failures.log"
    template="hostipFormat"<br/>
    )
}

我的kafka实例运行正常,我可以使用另一台Windows机器上的kafka-producer.bat文件发布数据。

但是当我启动我的rsyslog服务时,我收到以下错误:

  

2月17日16:42:01 localhost rsyslogd:[origin software =&#34; rsyslogd&#34; swVersion =&#34; 8.24.0&#34; X-PID =&#34; 1764&#34; x-info =&#34; http://www.rsyslog.com"]开始   2月17日16:42:05 localhost rsyslogd:omkafka:kafka message 192.168.100.50:9092/bootstrap:无法连接到192.168.100.50:9092的代理:权限被拒绝[v8.24.0 try http://www.rsyslog.com/e/2422]   2月17日16:42:05 localhost rsyslogd:omkafka:kafka消息1/1经纪人关闭[v8.24.0 try http://www.rsyslog.com/e/2422]   2月17日16:42:05 localhost rsyslogd:omkafka:kafka message 192.168.100.50:9092/bootstrap:无法连接到192.168.100.50:9092的代理:权限被拒绝[v8.24.0 try http://www.rsyslog.com/e/2422]   2月17日16:42:05 localhost rsyslogd:omkafka:kafka消息1/1经纪人关闭[v8.24.0 try http://www.rsyslog.com/e/2422]

我不确定这是否与 omkafka librdkafka 有关。

需要帮助。

3 个答案:

答案 0 :(得分:0)

我明白了这个问题的原因。这是因为centos中的 SELINUX 。一旦我禁用了SELINUX服务,配置就可以了。

答案 1 :(得分:0)

我有同样的问题。而不是禁用SELinux,从而让自己打开一个受伤的世界。我使用了audit2why来告诉你为什么在他们的avc否认中拒绝某些东西。它也很有用,因为它可以告诉您需要做些什么来解决问题。

Audit2为什么会读取/var/log/audit/audit.log,然后告诉您为什么要拒​​绝某些内容,有时可以告诉您需要做些什么来解决问题。就我而言,它是

type=AVC msg=audit(1492149030.280:296487): avc: denied { name_connect } for pid=2277 comm=72733A6D61696E20513A526567 dest=9092 scontext=system_u:system_r:syslogd_t:s0 tcontext=system_u:object_r:unreserved_port_t:s0 tclass=tcp_socket Was caused by: The boolean nis_enabled was set incorrectly. Description: Allow nis to enabled Allow access by executing: # setsebool -P nis_enabled 1
最后的注释行确实需要输入以允许执行它,并且可以在不禁用适当的安全控制的情况下完成。执行sudo setsebool -P nis_enabled 1后,我重新启动了rsyslog,kafka能够正常使用我的消息。

答案 2 :(得分:0)

这肯定与SELinux有关,但是因为禁用SELinux不是最佳选择,所以我对此进行了更正:

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

然后重新启动syslogd。