我有一个 Munin 服务器(2.72),可以很好地监控很多服务器。
我有一个带有 munin-node(2.0.73)的 haproxy 服务器,除 haproxy_*(haproxy_sessions_frontend、haproxy_bytes_frontend、haproxy_rate_frontend 等)之外的每个插件都能正常运行,而 haproxy_* 会给我 NaN 值。
当我在 haproxy 服务器上本地测试插件时,我得到了相关值:
# Skipping systemd properties simulation due to required systemd version (999)
# Processing plugin configuration from /etc/munin/plugin-conf.d/00-default
# Processing plugin configuration from /etc/munin/plugin-conf.d/haproxy
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Setting /rgid/ruid/ to /982/0/
# Setting /egid/euid/ to /982 982/0/
# Setting up environment
# Environment frontend = https_front haproxy-monitoring fe-letsencrypt
# Environment url = http://127.0.0.1:8080/haproxy_stats;csv;norefresh
# Environment backend = app-main haproxy-monitoring letsencrypt-backend
# About to run '/etc/munin/plugins/haproxy_sessions_frontend'
scurea490f35148af7011c03b86177948440.value 3
smaxea490f35148af7011c03b86177948440.value 25
scur4dc7a8e588e9bb787fe6e39c1c96957a.value 1
smax4dc7a8e588e9bb787fe6e39c1c96957a.value 2
scura92191189150289a82c2c4464351178c.value 0
smaxa92191189150289a82c2c4464351178c.value 5
当我从 Munin 服务器远程连接时,我得到的结果如下:
bash-4.4$ /usr/share/munin/munin-update --debug --nofork --host servxxx.domain.tld --service haproxy_session_frontend
2023/10/05 17:12:57 [DEBUG] Creating new lock file /var/run/munin/munin-update.lock
2023/10/05 17:12:57 [DEBUG] Creating lock : /var/run/munin/munin-update.lock succeeded
2023/10/05 17:12:57 [INFO]: Starting munin-update
2023/10/05 17:12:58 [DEBUG] Creating new lock file /var/run/munin/munin-datafile.lock
2023/10/05 17:12:58 [DEBUG] Creating lock : /var/run/munin/munin-datafile.lock succeeded
2023/10/05 17:12:58 [DEBUG] Writing state to /var/lib/munin/datafile.storable
2023/10/05 17:12:58 [DEBUG] about to write '/var/lib/munin/datafile.storable'
2023/10/05 17:12:58 [INFO]: Munin-update finished (1.47 sec)
但是我的 rrd 文件中充满了 NaN,并且在 munin-update.log 中,每次 Munin 尝试从节点更新数据时,我都会收到此警告:
2023/10/05 17:15:13 [WARNING] 6 lines had errors while 0 lines were correct (100.00%) in data from 'fetch haproxy_sessions_frontend' on haproxy.captcha/x.x.x.x:4949
我几乎尝试了本页上的所有方法https://guide.munin-monitoring.org/en/latest/tutorial/troubleshooting.html但我不知道。同样的插件在另一台 haproxy 服务器上运行良好。主要区别在于另一台服务器运行的是 Rocky Linux 8,而有问题的服务器运行的是 Rocky Linux 9
我该怎么做才能让这个插件运行?
答案1
我在 /var/log/messages 中找到了罪魁祸首
SELinux 拒绝了一些调用。添加以下建议的规则后,一切正常。
日志摘录:
服务器 setroubleshoot[681531]: SELinux 阻止 /usr/bin/curl 在 tcp_socket 端口 8080 上进行 name_connect 访问。
***** 插件 catchall (100.confidence) 建议 ****************************
如果您认为默认情况下应允许 curl 在端口 8080 tcp_socket 上进行 name_connect 访问。那么您应该将此报告为错误。您可以生成本地策略模块以允许此访问。现在通过执行以下命令允许此访问:
ausearch -c 'curl' --raw | audit2allow -M my-curl
semodule -X 300 -i my-curl.pp