Всем привет.
Для всякого администратора на начальном этапе развития инфраструктуры все просто. Есть десяток серверов и для мониторинга их в 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
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
А что вы думаете по этому поводу?