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

Posted

技术标签:

【中文标题】rsyslog 的 omkafka 模块中的权限被拒绝【英文标题】:Permission denied in omkafka module of rsyslog 【发布时间】:2017-07-06 21:42:08 【问题描述】:

我正在尝试使用 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="rsyslogd" swVersion="8.24.0" x-pid="1764" x-info="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 尝试 http://www.rsyslog.com/e/2422] Feb 17 16:42:05 localhost rsyslogd: omkafka: kafka message 1/1 brokers are down [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 尝试 http://www.rsyslog.com/e/2422 ] Feb 17 16:42:05 localhost rsyslogd: omkafka: kafka message 1/1 brokers are down [v8.24.0 try http://www.rsyslog.com/e/2422]

我不确定这是否与 omkafkalibrdkafka 有关。

需要帮助。

【问题讨论】:

【参考方案1】:

这肯定与 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。

【讨论】:

【参考方案2】:

我有同样的问题。而不是禁用 SELinux 并因此向一个充满伤害的世界敞开大门。我使用了audit2why,它准确地告诉你为什么在他们的 avc 拒绝中某些东西被拒绝了。它也很有帮助,因为它可以告诉您解决问题所需要做的事情。

Audit2why 读取/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 能够很好地使用我的消息。

【讨论】:

【参考方案3】:

我知道了这个问题的原因。这是因为centos中的SELINUX。一旦我禁用 SELINUX 服务,配置就可以正常工作了。

【讨论】:

以上是关于rsyslog 的 omkafka 模块中的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Rsyslog初步学习

rsyslog对接kafka

rsyslog 结合logrotate日志切割处理

RSyslog安装配置

如何识别运行 Rsyslog 的端口?

手工配置rsyslog配置文件详解