Этот пост выглядит как мой конспект одного из вебинаров по Zabbix-у на тему его взаимодействия с узлами сети.
Итак, Zabbix может взаимодействовать с узлами:
1) Zabbix Agent - агент, устанавливаемый на целевые хосты.
2) SNMP - протокол использующийся для управления сетевыми устройствами.
3) JMX - мониторинг JMX можно использовать для наблюдения за счетчиками JMX в Java приложениях.
4) IPMI - интеллектуальный интерфейс управления платформой. В этом контексте Zabbix используется для мониторинга аппаратной платформы серверов.
Для Zabbix хостов и групп:
- Старайтесь группировать хосты по типам и задачам (хост может быть включен в любое кол-во групп)
- Давать понятные имена для хостов
- Впоследствии разделение прав на просмотр и управление
- Host - это логическое понятие, один физический хост может содержаться в разных Zabbix Hosts
- Имя хоста регистрозависимое (для zabbix_sender)
Zabbix имеет типы элементов данных:
В Zabbix организованы активные и пассивные проверки на агентах. Аквивные проверки (от агента к серверу) предпочтительны.
Активные проверки:
- Hostname: уникальный, регистрозависимый, для активных проверок
- ServerActive: сервер для пересылки данных от агента
- RefreshActiveChecks: частота обновления
UserParameters:
- UserParameter=<key>,<command>
- UserParameter=mysql.questions,mysqladmin -uroot status | cut -f4 -d":" | cut -f1 -d"S"
- test: zabbix_agentd -t mysql.questions
- UserParameter=key[*],command
- шаблонизированный параметр
- UserParameter=wc[*],grep -c "$2" $1
- в items могут содержаться:
- wc[/etc/passwd,root]
- wc[/etc/services,zabbix]
SNMP протокол.
SNMP протокол, который используется для управления сетевыми устройствами:
- возможны операции чтения и записи
- использует управляющую базу данных (MIB - management information base, RFC-1213, -1212)
SNMP запросы от менеджера агенту:
- GetRequest
Запрос для получения значения переменной или списка переменных.
- SetRequest
Запрос для изменения переменной или списка переменных. Связанные переменные указываются в теле запроса. Изменения всех указанных переменных должны быть выполнены агентом как атомарная операция. Менеджеру будет возвращён Response с (текущими) новыми значениями переменных.
- GetNextRequest
Запрос для обнаружения доступных переменных и их значений. Менеджеру будет возвращён Response со связанными переменными для переменной, которая является следующей в базе MIB в лексиграфическом порядке.
- GetBulkRequest
Улучшенная версия GetNextRequest. Запрос от менеджера к объекту для многочисленных итераций GetNextRequest. Менеджеру будет возвращён Response с несколькими связанными переменными, обойдёнными начиная со связанной переменной (переменных) в запросе.
SNMP ответы от агента менеджеру:
- Response
- Возвращает связанные переменные и значения от агента менеджеру для GetRequest, SetRequest, GetNextRequest, GetBulkRequest и InformRequest. Уведомления об ошибках обеспечиваются полями статуса ошибки и индекса ошибки. Эта единица используется как ответ и на Get-, и на Set-запросы, в SNMPv1 называется GetResponse.
- Trap
- Асинхронное уведомление от агента менеджеру. Включает в себя текущее значение sysUpTime, OID, определяющий тип trap (ловушки), и необязательные связанные переменные.
База MIB.
- Management Information Base (MIB, база управляющей информации)
- виртуальная база данных, используемая для управления объектами в сети связи.
- Object Identificator (OId)
- идентификаторы объектов в MIB. Каждый OID состоит из двух частей: текстового имени и SNMP адреса в цифровом виде
В Linux snmp tools требуются два пакета:
yum install net-snmp net-snmp-utils
systemctl start snmpd
snmpwalk -v 2c -c public localhost
snmpdf -v 2c -c public localhost
snmptable -v 2c -c public localhost ipAddrTable
ls /usr/share/snmp/mibs/
Обнаружение хостов, общие требования:
- устанавливаем на хосты zabbix-agent
- открываем порт 10050
- прописываем параметр Server
- рекомендуется создать ansible плейбук для деплоя zabbix-agent на новые хосты
- добавляем правило обнаружения в Configuration -> Discovery
- включаем или добавляем действие с типом Discovery Actions в Configuration -> Actions
Обнаружение хоста через snmp:
- на хосте включен snmpd
- окрыт firewall для snmp
- добавлем Discovery rule с проверкой по snmp
- добавляем Action c прилинкованным темплейтом для snmp
LLD - низкоуровненове обнаружение:
- возможность создания пользовательских правил и шаблонов для обнаружения различных компонентов для мониторинга на конечной системе:
- дисков, файловых систем, сетевых интерфейсов
- таблиц SQL
- бизнес метрик на основе выборки из SQL
- любых других шаблонных метрик, получение которых можно реализовать через скрипт
LLD компоненты:
- правило низкоуровневого обнаружения
- прототипы элементов данных
- прототипы триггеров
- прототипы графиков
- прототипы узлов сети
Создание прототипов:
- правила LLD возвращают данные в макросах:
- Диски: {#FSNAME}, {#FSTYPE}
- Интерфейсы: {#IFNAME}
- SNMP: {#SNMPINDEX}, {#SNMPVALUE}
Пример ключа:
- vfs.fs.size[{#FSNAME},free]
Макросы LLD могут быть использованы в выражениях триггеров:
- {vfs.fs.size[{#FSNAME},pused].last(0)} > {#MY_CUSTOM_MACRO}
Существует пользовательский LLD. Пример JSON для отправки пользователем:
{"data": [{"{#NODE}": "m11266"}]}
Отправляется через zabbix_sender.
Утилита zabbix-sender:
- консольная утилита для отправки значений метрик
- отправляет в элементы с типом Zabbix Trapper:
-c, --config config-file
-s, --host host
# имя хоста в Zabbix (регистрозависимое)
-k, --key key
# ключ, название метрик
-o, --value value
# значение метрики или JSON для LLD
-i, --input-file input-file
# входной файл с данными для отправки пакета метрик.
No comments:
Post a Comment
А что вы думаете по этому поводу?