我使用 Icinga 监控我的网络。一切运行正常。
从 ubuntu 12.04 升级到 14.04 后,MySQL 监控开始报告问题。
我发现 nagios check_mysql 总是使用“root”用户,而以前它使用的是 nagios 用户(我假设是因为 Icinga 以该用户身份运行)。
user@server0:~$ /usr/lib/nagios/plugins/check_mysql -H server1
/usr/lib/nagios/plugins/check_mysql: /usr/lib/libmysqlclient.so.18: no version information available (required by /usr/lib/nagios/plugins/check_mysql)
Access denied for user 'root'@'server0' (using password: NO)
这是我错过的某些行为改变吗?
此外,我认为缺少的库不会导致问题,因为将 -u/-p 参数传递给 check_mysql 可以使其成功连接。
答案1
在最新版本的 Debian/Ubuntu 中,nagios 进程(可能还有其他守护进程)运行时没有设置 $HOME。这就是 check_mysql 求助于读取 /proc/self/loginuid 的原因,这是错误的,它应该使用 getuid() 找出真实用户 ID 并获取该用户的主目录。
无论如何,解决办法是提供-f 选项文件到 check_mysql,例如:
check_mysql -H 127.0.0.1 -f /var/lib/nagios/.my.cnf