Главная

Tuesday, 6 April 2021

Механизм Low Level Discovery.


Всем привет. 

Для всякого администратора на начальном этапе развития инфраструктуры все просто. Есть  десяток серверов и для мониторинга их в Zabbix все настройки можно проставить вручную. Но любая система постепенно, но неумолимо растет. И вот серверов уже не десять, а пятьдесят или сто! Опять описывать их в Zabbix? Или к примеру мониторинг файловых систем и разделов в Linux в тех случаях когда количество дисков может меняться от сервера к серверу. Т.е. случай на случае когда заранее доподлинно неизвестны характеристики сервера. 

Справиться с такой ситуацией как раз и помогает механизм Low Level Discovery. Низкоуровневое обнаружение (LLD) дает возможность автоматизировать создание метрик (элементов данных), хостов, триггеров и графиков для разных объектов в системе мониторинга.  

Ниже приведу три примера написания правил LLD из онлайн-библиотеки Вячеслава Лохтурова:

  • автоматическое добавление Cisco devices by SNMP.
  • статистика дискового ввода/вывода.
  • мониторинг свободного места на дисках, которые монтируются в процессе работы.

1. Автоматическое добавление Cisco устройств которые мониторятся по SNMP.

1.1. Добавляем правило обнаружения обьекта по SNMP.

Configuration->Discovery

Discovery rules

  Name: Local network

  IP range: 192.168.1.10-20

  Checks: 

    Check type: SNMPv2 agent 

    SNMP community: public

    SNMP OID .1.3.6.1.2.1.1.5.0

      или

             SNMPv2-MIB::sysName.0

    Add

  Update interval: 5m

  Device uniqueness criteria: IP address  

  Enabled: yes


1.2. Добавляем действия которые надо выполнить в случае обнаружения нового обьекта.

Configuration->Actions

  Event source: Discovery

    Name: Action add snmp device to zabbix

    Conditions:     # задаем Условия

      Received value: like или contains router    # из расчета что имени обьекта есть слово "router" 

      Discovery status: equals Up    # без этого могут появляться ghost hosts

      Add

    Operations:    # задаем Действия при выполнении условия

      Add to host groups: Discovered hosts

      Link to templates: 

             3.XX Template SNMP Device

             4.XX Template Module Generic SNMPv2

             4.XX Template Module Interfaces Simple SNMPv2

             5.XX Template Net Cisco IOS SNMP                  

      Set host inventory mode: Automatic

    Add

Возможно надо будет уменьшить период проведения Discovery.


2. Статистика дискового ввода/вывода.

2.1. Получение параметров на новых дисках утилитой lsblk в формате JSON.

# zabbix_agentd -p | grep vfs.dev

# lsblk

# lsblk -dJ | jq


# lsblk -dJ | sed -e 's/blockdevices/data/' -e 's/name/{#DEVNAME}/g' -e 's/type/{#DEVTYPE}/g' | jq

2.2. Используем UserParameter для захвата вывода утилиты lsblk в формате JSON.

# cat /etc/zabbix/zabbix_agentd.conf.d/vfs.dev.discovery.conf

UserParameter=vfs.dev.discovery,/bin/lsblk -dJ | /bin/sed -e 's/blockdevices/data/' -e 's/name/{#DEVNAME}/g' -e 's/type/{#DEVTYPE}/g'

# service zabbix-agent restart

Проверка вывода UserParameter:

# zabbix_agentd -p | grep vfs.dev

# zabbix_get -s 127.0.0.1 -k vfs.dev.discovery | jq


2.3. Создаем правило с новым ключом vfs.dev.discovery:

Configuration->Templates->Template OS Linux

  Discovery rules->Create discovery rule

    Name: Block devices discovery

    Key: vfs.dev.discovery

  Filters->

    {#DEVTYPE} matches disk


Прототип элемента данных (в байтах) на чтение:

  Block devices discovery

    Item prototypes->

      Name: {#DEVNAME}: Disk read rate

      Key: vfs.dev.read[{#DEVNAME},sps]

      Type of information: Numeric (float)

      Units: Байт

      Applications: Filesystem

      Preprocessing->

        Preprocessing steps

        Custom multiplier 512


Аналогично клонируем прототип элемента данных на запись:

Clone

      Name: disk {#NAME} write bytes

      Key: vfs.dev.write[{#DEVNAME},sps]

и т.д.      ...  


3. Мониторинг свободного места на дисках, которые монтируются в процессе работы, например USB-флешки.

# mount | grep ext

# zabbix_get -s 127.0.0.1 -k vfs.fs.discovery | jq


3.1. Проверяем что правило обнаружения диска "File systems for discovery" существует.

Administration

  Regular expressions

    File systems for discovery: ^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|refs|ntfs|fat32|zfs)$


3.2. Добавляем правило обнаружения диска с ключом vfs.fs.size[{имя диска},free] по регулярному выражению "File systems for discovery".

Configuration

  Hosts

    Zabbix server

      Discovery rules

        Mounted filesystem discovery

          Filters

            {#FSTYPE} matches @File systems for discovery

          Item prototypes

            Name

              Free disk space on {#FSNAME}

            Key

              vfs.fs.size[{#FSNAME},free]


Мониторинг сетевых интерфейсов в Zabbix - это тоже низкоуровневые обнаружения. Кстати, можно настроить автоматическое удаление объектов из мониторинга по результатам проводимых обнаружений. Администратор может определить собственные типы обнаружения - достаточно описать их в виде файла JSON. Дял лучшего понимания механизма низкоуровневых обнаружений стоит изучить встроенные LLD-правила в  Zabbix.

Успехов.


No comments:

Post a Comment

А что вы думаете по этому поводу?