26.07.2018

Ubuntu Icinga Добавление хостов. Мониторинг по протоколу SNMP.

В прошлой заметке было рассмотрено разворачивание системы мониторинга Icinga на базе ОС Ubuntu: Установка системы мониторинга Icinga2 на Ubuntu 16.04. Данная заметка будет короткой, в ней я рассмотрю, как через конфигурационные файлы добавить,а также изменить группы хостов и непосредственно хосты, которые мониторит наша система.

Конфигурационные файлы Icinga находяться в следующих директориях:

  • /etc/icinga2  - конфигурация системы мониторинга Icinga, здесь находятся файлы с описанием, хостов, сервисов, оповещений, шаблонов и пр.
  • /etc/icingaweb2 - конфигурационные файлы Web-интерфейса
  • /etc/nagios-plugins/config - Icinga использует для проверки плагины Nagios, в этой директории находятся конфигурации команд для проверок, в которых используются плагины Nagios
  • /usr/share/icinga2/include - каталог с конфигурациями некоторых шаблонов
  • /usr/share/icingaweb2 - каталог с файлами Web-интерфейса

Так, как для управления хостами рекомендуют использовать модуль Icinga Director, его установку рассмотрим в следующий раз, в данной заметке я опишу добавление нескольких "простых" хостов.

Для примера добавим в мониторинг несколько хостов, которые являются управляемыми коммутатора, создадим для них отдельную группу.

1. Создание группы

Конфигурация групп хостов и сервисов находится в файле /etc/icinga2/conf.d/groups.conf

В этот файл добавляем

object HostGroup "sw" {

  display_name = "switch"

}

Где

  • "sw" - имя группы
  • display_name = "switch" - switch - Отображаемое имя группы

Еще один допустимый параметр при описании группы хостов

assign where parameters == value - он является необязательным и указывает, при каких условиях происходит автоматическое добавление хоста в группу.

2. Добавление хостов

Добавлять хосты для мониторинга можно несколькими способами

  • Редактированием файла конфигурации хостов /etc/icinga2/conf.d/hosts.conf
  • Созданием для каждого устройства/группы устройств своего конфигурационного файла

В этом случае, создаем директорию, в которой будем хранить файлы конфигурации и в ней создаем файлы с расширением .conf, а в /etc/icinga2/conf.d/hosts.conf указываем, что их нужно загружать.

Например:

mkdir /etc/icinga2/conf.d/hosts

Где /etc/icinga2/conf.d/hosts - директория в которой будут храниться файлы конфигурации хостов.

В файл  /etc/icinga2/conf.d/hosts.conf добавляем строку

include "conf.d/hosts/*.conf"

В остальном описания хостов идентичны

Структура описания объекта "Хост":

  • object Host "name" {
  • parameter = value
  • parameter = value
  • parameter = value
  • ...
  •  import "template_name"
  • }

Где 

  • "name" - наименование хоста, допускается использование латинских букв и знака "_"
  • parameter = value  - Параметр и его значение.

Список основных параметров для описание хоста, их значений и пояснения ниже. Все параметры являются необязательными к заполнению, кроме check_command 

  • display_name String/строка - отображаемое имя хоста
  • address String/строка - IP-адрес. Используется в командах, передается через макрос  $address$
  • groups Array of object names/массив  - перечень групп хостов
  • vars   Dictionary - перечень произвольных атрибутов в иерархическом виде
  • check_command Object name/Наименование объекта - команда для проверки
  • max_check_attempts Number/Число - количество проверок, после которых будет передано, что проверка не удалась. Значение по умолчанию 3
  • check_period Object name/Наименование объекта - имя объекта, в котором описаны периоды времени. В эти промежутки времени будут производиться проверки. Периоды описаны в файле /etc/icinga2/conf.d/timeperiods.conf
  • check_interval Duration/Длительность - частота проверки состояния. Значение по умолчанию 5 минут
  • retry_interval Duration/Длительность - частота проверки состояния, в случае, если текущее  состояние "Проблема". Значение по умолчанию 1 минута
  • import "template_name" - указывает, что необходимо применить шаблон хоста template_name. Шаблоны описываются в файле /etc/icinga2/conf.d/templates.conf. Базовым шаблоном для хостов является generic-host, в данном шаблоне указывается, что необходимо проверять состояние при помощи команды hostalive 
  • hostalive - проверка ping с 3 повторениями каждую минуту, в случае неудачи проверять через 30 секунд


Самое простое описание объекта хоста выглядит следующим образом:

object Host "SW" {

  address = "10.10.10.1"

  display_name = "Swich"

  import "generic-host"

  groups = ["sw"]

}

Если Вам необходимо добавить много хостов с идентичными значениями параметров для их описания рекомендую использовать шаблоны.

3. Добавление шаблона хоста

Описание шаблонов храняться в конфигурационном файле /etc/icinga2/conf.d/templates.conf

В данном примере для того, чтобы в описании объекта хоста не указывать постоянно его группу, создаем шаблон generic-host-sw и добавляем его в файл /etc/icinga2/conf.d/templates.conf 

template Host "generic-host-sw" {

  max_check_attempts = 3

  check_interval = 5m

  retry_interval = 1s

groups = ["sw"]

  check_command = "hostalive"

}

Теперь описывать объект хоста можно следующим образом

object Host "SW" {

  address = "10.10.10.1"

  display_name = "Swich"

  import "generic-host-sw"

}

После внесения всех изменений применяем новые настройки

sudo service icinga2 reload

Через несколько минут в Web-интерфейсе отобразятся новые данные

4. Добавляем свой сервис проверки по протоколу SNMP

Для примера, добавим сервис проверки состояния определенного  порта наших коммутаторов посредством протокола SNMP.

Установим базовые плагины Nagios так, как отсутствует плагин snmp_check 

sudo apt-get install nagios-plugins

Приводим шаблон мониторинга коммутаторов к виду по умолчанию в файле /etc/icinga2/conf.d/templates.conf 

template Host "generic-host-sw" {

  max_check_attempts = 3

  check_interval = 5m

  retry_interval = 1s

groups = ["sw"]

  check_command = "hostalive"

  vars.snmp_community = "public" // Комьюнити для обращения к устройству по snmp-протоколу

}

Вносим изменение в конфигурацию объекта хоста

object Host "SW" {

  address = "10.10.10.1"

  display_name = "Swich"

  import "generic-host-sw"

  vars.snmp_check_port = 1 // Номер порта коммутатора, статус которого будем проверять

}

Добавляем сервис проверки состояния порта в файл /etc/icinga2/conf.d/services.conf 

apply Service "sw-port-status" {

  import "generic-service"

  check_command = "snmp"

  vars.snmp_oid = "1.3.6.1.2.1.2.2.1.8."+host.vars.snmp_check_port // Вычисляем OID по которой будем проверять статус host.vars.snmp_check_port берется из конфигурации хоста

  vars.snmp_miblist = "DISMAN-EVENT-MIB"

  vars.snmp_string = "1" // Указываем, что в случае, когда значение 1 - статус порта в порядке

  assign where (host.vars.snmp_community != "" && host.vars.snmp_check_port >0)  // Применять данный сервис в случае, когда указано comunity и номер порта для проверки.

}

После внесения изменений применяем новые параметры

sudo service icinga2 reload

На этом закончу. Если у Вас появились вопросы или предложения, оставляйте их в комментариях.


Используемые материалы:

https://www.icinga.com/docs/icinga2/latest/doc/09-object-types/

https://www.icinga.com/docs/icinga2/latest/doc/10-icinga-template-library

1 комментарий:

  1. icinga2 ругается на
    External command error: MIB search path: $HOME/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf
    Cannot find module (DISMAN-EVENT-MIB.txt): At line 1 in (none)
    Error in packet
    Подскажите в чем может быть дело. В /usr/share/snmp/mibs/ - есть файл DISMAN-EVENT-MIB.txt . в конфиге services.conf пробовал с расширением .txt указывать и без - не помогло

    ОтветитьУдалить