Безагентный мониторинг Linux средствами check_by_ssh

Main

Оценка: 84.13% - 16 Голосов

Общая

Для мониторинга 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
Добавить комментарий