Создание плагина Nagios при помощи Ruby в CentOS 6
Centos, Ruby | Комментировать запись
Ruby – это популярный язык программирования, который позволяет быстро создавать скрипты и устанавливать дополнительные библиотеки, которые называются Gems.
Процесс установки Nagios на сервер CentOS 6 был описан в предыдущей статье. В этом руководстве речь пойдет о написании плагинов Nagios с помощью Ruby, которые будут запущены на клиентском сервере через NRPE.
1: Установка NRPE и репозитория RPMForge
На клиентском VPS запустите:
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum -y install ruby nagios-nrpe
useradd nrpe && chkconfig nrpe on
2: Написание скрипта Ruby
Все плагины Nagios рекомендуется хранить в одном каталоге (например, в /usr/lib64/nagios/plugins/).
Для примера создадим скрипт, который будет проверять текущее использование диска, вызывая команду df из оболочки, и выводить извещение, в случае если диск использован на 85% и более:
#!/usr/bin/ruby
used_space=`df -h / | grep -v "Filesystem" | awk '{print $5}'`
case used_space.chomp <=> "85%"
when -1
puts "OK - #{used_space.chomp!} of disk space used."
exit 0
when 0
puts "WARNING - #{used_space.chomp!} of disk space used."
exit 1
when 1
puts "CRITICAL - #{used_space.chomp!} of disk space used."
exit 2
else
puts "UNKNOWN - #{used_space.chomp!} of disk space used."
exit 3
end
Сохраните скрипт в /usr/lib64/nagios/plugins/usedspace.rb и сделайте его исполняемым:
chmod +x /usr/lib64/nagios/plugins/usedspace.rb
Весь NRPE-плагин Nagios сводится к использованию кодов завершения для отправки извещений.
Пользователь представляет логику скрипта и задает код завершения, чтобы получать извещения. Nagios понимает четыре кода завершения:
- 0 – OK;
- 1 – предупреждение;
- 2 – критическая ошибка;
- 3 – неизвестная ошибка.
3: Внесение скрипта в настройки NRPE
На клиентском хосте нужно очистить оригинальный файл /etc/nagios/nrpe.cfg и внести в него следующие строки:
log_facility=daemon
pid_file=/var/run/nrpe/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=111.222.333.444
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nrpe.d/
command[usedspace_ruby]=/usr/lib64/nagios/plugins/usedspace.rb
Где 111.222.333.444 – мониторинговый сервер; замените этот условный адрес своим настоящим IP.
Не забудьте перезапустить сервис NRPE:
service nrpe restart
4: Добавление команды в Nagios
Определите новую команду в in /etc/nagios/objects/commands.cfg на мониторинговом сервере.
define command{
command_name usedspace_ruby
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_ruby
}
Как видите, сервер использует NRPE для создания подключения TCP на порт 5666 и запускает команду usedspace_ruby, которая была определена в /etc/nagios/nrpe.cfg на удаленном хосте.
Добавьте данную команду в настройки Nagios на клиентском сервере.
В данном примере Nagios будет мониторить сервер по имени CentOSServer; отредактируйте /etc/nagios/servers/CentOSServer.cfg:
define service {
use generic-service
host_name CentOSServer
service_description Custom Disk Checker In Ruby
check_command usedspace_ruby
}
Перезапустите Nagios:
service nagios restart
Готово!
Tags: CentOS, CentOS 6, gem, Nagios, NRPE, RPMforge, Ruby, RubyGems