rsyslog 的 omkafka 模块中的权限被拒绝
Permission denied in omkafka module of 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 服务时,出现以下错误:
Feb 17 16:42:01 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0" x-pid="1764" x-info="http://www.rsyslog.com"] start
Feb 17 16:42:05 localhost rsyslogd: omkafka: kafka message 192.168.100.50:9092/bootstrap: Failed to connect to broker at 192.168.100.50:9092: Permission denied [v8.24.0 try 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 ]
Feb 17 16:42:05 localhost rsyslogd: omkafka: kafka message 192.168.100.50:9092/bootstrap: Failed to connect to broker at 192.168.100.50:9092: Permission denied [v8.24.0 try 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 ]
我不确定这是否与 omkafka 或 librdkafka.
有关
需要帮助。
我明白了这个问题的原因。是因为centos中的SELINUX导致的。一旦我禁用了 SELINUX 服务,配置工作正常。
我遇到了同样的问题。而不是禁用 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 能够很好地使用我的消息。
这肯定与 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。
我正在尝试使用 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 服务时,出现以下错误:
Feb 17 16:42:01 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0" x-pid="1764" x-info="http://www.rsyslog.com"] start Feb 17 16:42:05 localhost rsyslogd: omkafka: kafka message 192.168.100.50:9092/bootstrap: Failed to connect to broker at 192.168.100.50:9092: Permission denied [v8.24.0 try 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 ] Feb 17 16:42:05 localhost rsyslogd: omkafka: kafka message 192.168.100.50:9092/bootstrap: Failed to connect to broker at 192.168.100.50:9092: Permission denied [v8.24.0 try 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 ]
我不确定这是否与 omkafka 或 librdkafka.
有关需要帮助。
我明白了这个问题的原因。是因为centos中的SELINUX导致的。一旦我禁用了 SELINUX 服务,配置工作正常。
我遇到了同样的问题。而不是禁用 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 能够很好地使用我的消息。
这肯定与 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。