Я контролирую доступное дисковое пространство на серверах Ubuntu, используя Nagios Core, NRPE и check_disk.
В предыдущих версиях 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
вместо ожидаемого /
.
Я могу воспроизвести это поведение, предоставив блочное устройство 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, чтобы они действительно могли покопаться в коде и найти то, что это является.