我使用以下工具监控 Ubuntu 服务器上的可用磁盘空间Nagios 核心,国家可再生能源计划和检查磁盘。
使用以前的 Ubuntu 版本时,我曾经得到类似这样的输出:
DISK OK - free space: / 43754 MB (80% inode=86%):
在 Ubuntu 18.04.1 上,我得到:
DISK OK - free space: /var/tmp 43754 MB (80% inode=86%):
/var/tmp
我看到了根分区的错误挂载点/
。我跟踪发现此行为依赖PrivateTmp=true
于nagios-nrpe-server.service
:
- 我去查看了一下
/var/tmp
,发现了一个名为systemd-private-c5b5d3d362364af19af640147f2cb844-nagios-nrpe-server.service-4uILRy
- 然后检查了服务定义并注意到
PrivateTmp=true
(例如NRPE2在 Ubuntu 16.04 上) - 最后,尝试删除该行,然后检测到根挂载点为
/
我觉得我面临三种选择:
忍受它。
消除
PrivateTmp=true
。找到一个合理的解决方法。
我倾向于接受它,但如果我更多地意识到没有私人/tmp
服务的后果,我就可以对选项 2 做出明智的选择。
最佳解决方案可能是找到一种解决方法,check_disk
即使在这种情况下也指示返回正确的挂载点信息。无法访问系统/tmp
不应成为障碍。
问题:请说明的含义PrivateTmp=true
,解释为什么建议这样做以及在什么情况下以及在什么条件下可以将其删除。
次要问题:是否有一个合理的解决方法,check_disk
或者等效的工具即使在由带有的服务运行时也能显示正确的根挂载点PrivateTmp=true
?
附加信息:
完整命令为:/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/vg-root
。在本地运行时,即使使用用户nagios
,输出也会正确显示/
。从 Nagios 服务器远程运行时:/usr/local/libexec/nagios/check_nrpe2 -H 192.168.1.2 -c check_root
,输出显示/var/tmp
而不是预期的/
。
答案1
我可以通过提供块设备check_disk
而不是挂载点来重现此行为。
例如:
root@cosmic:~# grep check_root /etc/nagios/nrpe.cfg
command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
root@cosmic:~# /usr/lib/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_root
DISK OK - free space: /var/tmp 6451 MB (68% inode=78%);| /var/tmp=3033MB;8010;9011;0;10013
root@cosmic:~# /usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
DISK OK - free space: / 6451 MB (68% inode=78%);| /=3033MB;8010;9011;0;10013
但是通过使用挂载点,我得到了预期的行为:
root@cosmic:~# grep check_root /etc/nagios/nrpe.cfg
command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
root@cosmic:~# /usr/lib/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_root
DISK OK - free space: / 6451 MB (68% inode=78%);| /=3033MB;8010;9011;0;10013
root@cosmic:~# /usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
DISK OK - free space: / 6451 MB (68% inode=78%);| /=3033MB;8010;9011;0;10013
此行为似乎与PrivateTmp=
systemd 单元中的设置有某种关联。当我从 中删除它时nagios-nrpe-server.service
,check_disk
在给定块设备时也会返回预期结果。我尝试了一下刚刚运行的简单服务/bin/df
,PrivateTmp=true
但没有发现任何明显的问题。它也返回了正确的结果。
我建议,如果您确实需要能够通过块设备而不是挂载点检查磁盘,最好的办法是向 Nagios NRPE 开发人员报告问题,以便他们可以深入研究代码并找到问题所在。