Безагентный мониторинг Linux средствами check_by_ssh
Общая
Для мониторинга Linux операционных систем есть как способ с использованием агента так и безагентный.
Мониторинг при помощи агента удобен лишь тогда, когда между основным сервером Icinga и хостами нет скоростного соединения. В остальных случаях будет удобнее использовать безагентный способ через SSH соединение.
В этом нам поможет nagios плагин check_by_ssh.
Данный плагин уже устанавливается в систему в момент установки Icinga2. Более подробно читать тут.
Подготовка сервера к использованию плагина
Для использования данного плагина необходимо устанавливать SSH соединение до интересующего нас хоста.
Если Icinga2 работает от отдельной учётной записи то необходимо создать ключ под этой учётной записью:
ssh-keygen -b 2048 -t rsa
Если Icinga запущена под root то необходимо создать отдельного пользователя.
Создаём и настраиваем пользователя Icinga :
useradd -m -d /home/icinga icinga
passwd icinga
usermod -s /bin/bash icinga
Генерируем ключ:
ssh-keygen -b 2048 -t rsa
Подготовка хоста к мониторингу
Для возможности получать данные о хосте необходимо установить плагины nagios:
apt-get install nagios-plugins
Созидаем и настраиваем пользователя от имени которого будут запускаться плагины. Данное имя пользователя должно быть таким же как и созданное имя на сервере мониторинга:
useradd -m -d /home/icinga icinga
passwd icinga
Настройка сервера на авторизацию через SSH по ключу
Необходимо войти под пользователем созаднным выше и настроить авторизацию по ключу на интересующий нас хост.
login icinga
ssh-copy-id ip\имя хоста
Вводим пароль от пользователя созданного на хосте. Соглашаемся со всеми предложениями.
Для проверки правильности настройки:
ssh <client Hostname>
Подтверждаем принятие ключа. Авторизация должна пройти без запроса пароля.
Настройка плагина check_by_ssh
Описание работы с плагином
Для того чтобы Icinga могла работать с данным плагином необходимо описать работу в файле commands.conf
.
Файл находится в рабочей папке Icinga2 - в моем случае /etc/icinga2/conf.d/
Работа с плагином описывается так:
object CheckCommand "check_by_ssh" {
import "plugin-check-command"
command = [ PluginDir + "/check_by_ssh" ]
arguments = {
"-H" = "$host.address$"
"-p" = "$port$"
"-C" = "$service.vars.check_by_ssh_command$"
"-l" = "$loginname$"
"-i" = "$identity$"
"-q" = {
set_if = "$quiet$"
}
"-E" = {
set_if = "$setif$" }
"-w" = "$service.warn$"
"-c" = "$service.crit$"
"-t" = "$timeout$"
"-o" = "StrictHostKeyChecking=no"
}
vars.loginname = "icinga"
vars.identity = "/home/icinga/.ssh/id_rsa"
}
В vars.loginname = "icinga"
указан пользователь от имени которого будет устанавливаться SSH соединение.
В vars.identity = "/home/icinga/.ssh/id_rsa"
указан путь до ключа для соединения.
Если Icinga2 запускается от другого имени пользователя то на данный файл необходимо дать права на чтение, в противном случае плагин сообщит о отсутствии прав на чтение файла.
Описываем работу сервиса на примере плагина check_disk
Сервис проверки хоста описывается в файле services.conf
. В моем случае так же расположен в /etc/icinga2/conf.d/
Работа с сервисом описывается так:
apply Service "disk_by_ssh" {
import "generic-service"
check_command = "check_by_ssh"
vars.check_by_ssh_command = "$ssh_chcek_command$" + "$disk_warn$" + "$disk_crit$"
vars.ssh_chcek_command = "/usr/lib/nagios/plugins/check_disk"
vars.disk_warn = " -w " + host.vars.sshdiskwarn
vars.disk_crit = " -c " + host.vars.sshdiskcrit
assign where host.vars.checkbyssh == "true"
}
В vars.ssh_chcek_command
указывается путь до плагина check_disk
. По умолчанию это /usr/lib/nagios/plugins/
.
В vars.check_by_ssh_command собирается команда для запуска на удаленном сервере из нужных параметров (путь до команды + аргументы)
warn
и crit
указываются в конфигурации хоста
В assign where host.vars.type == "linux"
описан параметр по которому будет применяться данный сервис к хостам в файле описании хостов.
Добавление интересующего хоста.
Для удобства описания нужных хостов создаём файл в /etc/icinga2/conf.d/
. В моем случае я создал файл linux.conf
. В данном файле я буду описывать хосты под управлением ОС Linux.
Описываем хост:
object Host "произвольное имя объекта" {
address = "адрес IP или DNS имя"
display_name = "отображаемое имя в Web интерфейсе"
check_command = "hostalive"
vars.type = "linux"
vars.sshdiskwarn = "5%"
vars.sshdiskcrit = "3%"
}
Проверяем параметры настройки Icinga2:
service icinga2 checkconfig
Если все хорошо то перезапускаем сервис Icinga2:
service icinga2 restart
После чего в веб-интерфейсе Icinga2 должен появиться ваш хост. Подождите несколько минут пока Icinga опросит хост.
Продолжение статей о Icinga2 тут.
- Просмотров: 15487