Главная

Thursday, 17 December 2020

Как Zabbix взаимодействует с узлами сети.

Всем привет.

Этот пост выглядит как мой конспект одного из вебинаров по 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

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