Мне нужно удаленно периодически проверять, установлена ли файловая система Linux только для чтения на многих серверах. Единственные инструменты в моем распоряжении в этом случае - это обычные языки сценариев CLI (BASH / Perl / Python), SSH и SNMP.
Мои мысли пока следующие:
Метод SNMP - самый приятный / самый чистый, о котором я могу думать, однако я не понимаю, как это сделать, поскольку CLI SNMP кажется кошмаром, особенно если мне нужно выполнить процесс принятия решения, чтобы найти индекс на основе заданная точка монтирования.
В идеале я хотел бы осуществить это, используя только BASH (включая sed / awk / grep и т. Д.) И SNMP, но мне нужны некоторые рекомендации о том, с чего начать! snmpd уже установлен и настроен для v2 на всех рассматриваемых серверах.
В конечном итоге этот сценарий будет использоваться как команда Nagios.
Большое спасибо за любую помощь!
Заметка У нас уже есть cacti / nagios, настроенный для мониторинга сотен серверов, я забыл упомянуть об этом при первоначальной публикации!
В твоем snmpd.conf
проверьте аргумент exec. Я использую это для удаленного опроса количества пользователей некоторых из моих IRC-серверов, например:
exec usercount-irc /home/irc/usercount-irc.sh
Чтобы опросить это, вы snmpwalk .1.3.6.1.4.1.2021.8 и получите что-то вроде этого:
# snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.8
UCD-SNMP-MIB::extIndex.1 = INTEGER: 1
UCD-SNMP-MIB::extNames.1 = STRING: usercount-irc
UCD-SNMP-MIB::extCommand.1 = STRING: /home/irc/usercount-irc.sh
UCD-SNMP-MIB::extResult.1 = INTEGER: 0
UCD-SNMP-MIB::extOutput.1 = STRING: 558
UCD-SNMP-MIB::extErrFix.1 = INTEGER: 0
UCD-SNMP-MIB::extErrFixCmd.1 = STRING:
Проверить Расширение функциональных возможностей агента часть http://linux.die.net/man/5/snmpd.conf для более подробной информации!
Изменить 1:
UCD-SNMP-MIB: dskTable содержит информацию о смонтированных томах и их использовании. Он расположен под OID .1.3.6.1.4.1.2021.9 и задокументирован по адресу:
http://www.oidview.com/mibs/2021/UCD-SNMP-MIB.html
http://www.net-snmp.org/docs/mibs/ucdavis.html#dskTable
Но теперь я вижу, что он не содержит флагов монтирования, поэтому вы не можете видеть там только чтение. Ага. Вернемся к приведенному выше сценарию и как его назвать! :П
Для большинства вопросов «как мне сделать X в nagios?» Вы обнаружите, что кто-то уже написал плагин, который сделает все или хотя бы часть того, что вам нужно.
В этом случае вы, вероятно, можете использовать check_ro_mounts в сочетании с плагином 'negate' (часть стандартных плагинов nagios) или просто изменить его в соответствии с вашими потребностями:
Другой способ - использовать библиотеки Perl, Ruby Net :: SSH или Python paraminko для удаленного входа в систему и (не нужно предварительно настраивать ключи) затем проанализировать содержимое команды 'mount'.
Управление и подтверждение точек монтирования и их флагов может осуществляться через Puppet. Видеть Как управлять смонтированными разделами (fstab + точки монтирования) из марионетки