Как добавить шаблон в zabbix из файла

Обновлено: 06.07.2024

Что такое SNMP (англ. Simple Network Management Protocol — простой протокол сетевого управления) — стандартный интернет-протокол для управления устройствами в IP-сетях на основе архитектур TCP/UDP.

В большинстве случаев устройства поддерживают snmp протокол нужно просто его включить.
Существует несколько версий:

SNMP версия 1 (SNMPv1) — изначальная реализация протокола SNMP
SNMPv2 пересматривает Версию 1 и включает в себя улучшения в области производительности, безопасности, конфиденциальности и связях между менеджерами.
Хотя SNMPv3 используется Логин и Пароль для авторизации не приносит никаких изменений в протокол помимо добавления криптографической защиты, он является улучшением за счёт новых текстовых соглашений, концепций и терминологии
Более подробнее об SNMP

Так же бывает выбор
read (read-only) открытыми только для чтения,
read-write так и для чтения и для записи редактирования настроек.

Для подключения по умолчанию обычно прописывается это public и private для возможности чтения и для возможности чтения-записи при не об ходимости заменить на свои!

Порт по умолчанию 161

Нам необходимо зайти на устройство, активировать в настройках протокол SNMP, выбрать при необходимости версию, для мониторинга получения информации достаточно read только чтение, оставить public или изменить на свое, так же указать порт 161 либо свой.

Пример на СРК-М2

Далее идем на сайт производителя устройства в поддержке ищем свое устройство для загрузки драйверов прошивок документации Но нас интересует snmp, а точнее MIBs.

MIB - (Management Information Base) - Базы управляющей информации
Так как адреса объектов устройств определяются в цифровом формате, их сложно запомнить. Для упрощения применяются базы управляющей информации (MIB). Базы MIB описывают структуру управляемых данных на подсистеме устройства; они используют иерархическое пространство имён, содержащее идентификаторы объектов (OID-ы)

OID состоит из двух частей: текстового имени и SNMP адреса в цифровом виде.

Например для NAS Хранилища d-link dns-340l заходим FTP D-Link и скачиваем там для нашего nas файл DNS-340L_MIB.mib

Или еще например для кондиционеров СРК-М2 (согласователь работы кондиционеров) заходим на оф. сайт Скачиваем MIB файл cpkm2&3_2019_04_01.mib srkm2_2017_11_27.mib

Так же бывают MIB общие которые подходят в большинстве для любого устройства например для сетевого порта снятие скорости ошибок и т.д.

Загружаем свой MIB для этого заходим File > Load MIBs или жмем Ctrl+L выбираем скаченный MIB

После в дереве появится новый раздел нашего MIB файла

Указываем IP устройства, Выбираем порт и версию SNMP, Выбираем Элемент для запроса, Жмем GO! Получаем ответ.

Теперь создаем простой Элемент в шаблоне Заббикс
Выбираем Элемент в MIB Browser выделяем его

Имя водим на свое усмотрение пример Информация о версии для агента SNMP DNS-340L
Тип Выбираем версию SNMP
из поля Name пишем в шаблоне заббикс в поле > Ключ Пример dns340LAgentVer
OID пишем в шаблоне заббикс в поле > SNMP OID Пример .1.3.6.1.4.1.171.50.1.10.1.1.1.0 Обратите внимание что в большинстве случаев нужно в конце дописать .0
SNMP Community глобальный макрос или например просто public
Группу так же на свое усмотрение, я беру имя раздела в MIB Browser
Тип Информации в зависимости какие данные значения идут Values (если не знаете сразу ставьте текст) или от предобработки выбираем соотвествующие
Интервал насколько часто будем запрашивать данные, данного элемента
Описание я беру из descr

И так по аналогии создаем простые элементы

Некоторые макросы низкоуровневого обнаружения “заранее добавлены” в функционал низкоуровневого обнаружения в Zabbix - , , , , . Однако, не обязательно придерживаться этих имен при создании пользовательского низкоуровневого правила обнаружения.
Встроенный макрос содержит индекс обнаруженного OID, который применяется к обнаруженным объектам. Обнаруженные объекты группируются по значению макроса
макросом равным индексам обнаруженных OID 1, 2 и 3 и т.д.

Правила обнаружения SNMP
Создать правило обнаружения
Имя Что будем искать данным правилом пример dns340LVolumeNum активные тома на устройстве NAS
Тип Выбираем версию SNMP
Ключ Пример dns340LVolumeNum Взяли из поля Name в mib соответствующего ключа
SNMP OID Пример discovery[, .1.3.6.1.4.1.171.50.1.10.1.1.9.1.1]
Если нам нужна еще переменная с именем то через запятую добавляем макрос и OID с которого получаем имя для прототипов элементов
SNMP OID Пример discovery[, .1.3.6.1.4.1.171.50.1.10.1.1.9.1.1, , .OID указываем]
или если в место имени выходят индексы пробуем так
SNMP OID Пример discovery[, .1.3.6.1.4.1.171.50.1.10.1.1.9.1.1,,OID указываем]

Например у нас в таблице до ключа есть 3 позиции
dns340LVolumeTable
.1.3.6.1.4.1.171.50.1.10.1.1.9
Таблица активных томов на устройстве NAS.
макрос (как переменная в дальнейшем найденные значения будет подставлять в прототипы элементов)
.1.3.6.1.4.1.171.50.1.10.1.1.9.*.*.*
Тут у нас найдет 3 значения и будет их все подставлять и создавать элементы их очень много и они не все относятся к данной группе

dns340LVolumeEntry
.1.3.6.1.4.1.171.50.1.10.1.1.9.1
Запись в таблице томов.

Запись интерфейса, содержащая объекты на подсетевой слой и ниже для конкретного интерфейс.
.1.3.6.1.4.1.171.50.1.10.1.1.9.1.*.*
Тут будет 2 значения то же не устраивает

dns340LVolumeNum
.1.3.6.1.4.1.171.50.1.10.1.1.9.1.1
Номер экземпляра записи Тома
А здесь 1 значение все хорошо берем его
.1.3.6.1.4.1.171.50.1.10.1.1.9.1.1.*

SNMP community указываем макрос
Порт
Интервал обновления как часто будем искать например 1h
Период сохранения потерянных ресурсов 30d
Описание пишем описание что ищем
Активировано V

Прототип Элемента
Имя Пример dns340LVolumeName. - Название Тома
Тип Версия SNMP
Ключ Пример dns340LVolumeName.[]
SNMP OID Пример .1.3.6.1.4.1.171.50.1.10.1.1.9.1.2.
где макрос будет подставляться найденные значения, из правила обнаружения dns340LVolumeNum активные тома на устройстве NAS
SNMP community
Порт
Тип информации Текст
Интервал обновления 6h

Ну и дальше все как обычно выбираем группу срок хранения истории описание
Главное чтоб в Имени, Ключе и SNMP OID были указанны макросы иначе при первом найденном элементе будет конфликт имен мол такой элемент уже создан так же это относится и к прототипам триггерам и графикам

Пример Преобразования прототипа элемента данных
Есть строка Centigrade:38 Fahrenheit:100
Регулярное вырожение Centigrade:(5+) \0 остается только Centigrade:38
Обрезка слева Centigrade: остается 38

из стандартной инструкции на примере шаблона Template SNMPv2 Interfaces

Отличие в поле SNMP OID в одном случае ищем по имени в другом по значению Имя Сетевой интерфейс
Тип SNMPv2 агент
Ключ ifDescr
SNMP OID discovery[,IF-MIB::ifDescr]
SNMP community

Описание
Вы можете также рассмотреть использование если-МБ::ifType или если-МиБ::ifAlias для обнаружения в зависимости от ваших потребностей фильтрации.
is a global macro. является глобальным макросом.

Или же например
Имя ifIndex Поиск сетевых интерфейсов и данных о них
Тип SNMPv2 агент
Ключ ifIndex
SNMP OID discovery[, .1.3.6.1.2.1.2.2.1.1]
SNMP community

Описание
ifTable
.1.3.6.1.2.1.2.2
Список элементов интерфейса. Количество записи присваивается значение, если количество.

ifEntry
.1.3.6.1.2.1.2.2.1
Запись интерфейса, содержащая объекты на подсетевой слой и ниже для конкретного интерфейс.

ifIndex
1.3.6.1.2.1.2.2.1.1
Уникальное значение для каждого интерфейса. Его значение колеблется между 1 и значением ifNumber. То значение для каждого интерфейса должно оставаться постоянным при по крайней мере, от одной повторной инициализации сущности. система управления сетью до следующего пожара- инициализация.


отличия прототипов элементов snmp

Установка snmpwalk на Debian
apt-get install snmp

Чтобы идентификаторы OID соответствовали их текстовому описанию, активируйте несвободный репозиторий и установите
apt-get install snmp-mibs-downloader

Стандартно MIB лежат в ./usr/share/snmp/mibs/

mibs :ALL включает все, что не совсем хорошо. Рекомендую для каждого оборудования иметь папку с mib'ами, т.к. они могут отличаться из одной прошивки к другой.
Или же прописать конкретные mib в конфиг например: mibs :BRIDGE-MIB:Q-BRIDGE-MIB:IP-MIB:IF-MIB
Конкретно одну добавить mibs +CPQPOWER-MIB

Опции можно менять местами пример:
Библиотека лежит тут ./usr/share/snmp/mibs/DNS-340L-MIB.mib
snmpwalk -v 2c -c public 192.168.0.150 DNS-340L-MIB::dns340LVolumeName
snmpwalk -v 2c -c public 192.168. Имя Mib библиотеки::Имя запроса ключа
или
snmpwalk -v 2c -c public 192.168.0.101 .1.3.6.1.4.1.232.165.3.1 -m CPQPOWER-MIB
snmpwalk -v 2c -c public -m /usr/share/snmp/mibs/DNS-340L_MIB.TXT 192.168.0.101 dns340LHostName
Так же если в конфиге не указана нужная mib можно сделать так
Он применит все найденные mib
snmpwalk -v 2c -c public -M ./ -Ln -m ALL 192.168.0.101


Пример для snmpwalk -v 3
Основные ключи для запроса:
-a Протокол аутентификации (MD5 или SHA) (При настройке удаленного хоста может быть None , SHA1 , SHA256 , SHA512)
-l Уровень безопасности (noAuthNoPriv или authNoPriv или authPriv)
-u Имя пользователя для аутентификации
-A Пароль аутентификации
-x Определить алгоритм шифрования протокол конфиденциальности (DES или AES) (При настройке удаленного хоста может быть None ,AES-128 , AES-192 , AES-192 Ex , AES-256 , AES-256 Ex)
-X Пароль шифрования (Обратите внимание, что для повышения безопасности убедитесь, что вы используете разные пароли для аутентификации и шифрования)

Так же должен быть дан доступ Тип доступа: Disable (Отключен) , Read (Чтение) , Read/Write (Чтение Запись)

snmpwalk -v3 -a MD5 -l authPriv -u Пользователь -A Пароль -x DES -X Пароль 192.168.1.11 IF-MIB::ifDescr
snmpwalk -v3 -a SHA -l authPriv -u snmpreadonly -A hacker100 -x AES -X hacker101 192.168.43.188 | head -10
snmpwalk -v3 -a MD5 -l authPriv -u admin -A lslslsls1 -x DES -X ag66gaga 127.0.0.1
snmpwalk -v3 -a SHA -l authPriv -u snmp-poller -A "PASSWORD1" -x AES -X "PASSWORD2" 10.10.10.50
snmpwalk -v3 -a SHA -l authPriv -u snmp-poller -A "PASSWORD1" -x AES -X "PASSWORD2" 10.10.10.50 sysName.0 system.sysUpTime.0
Необходимо просто экранировать пароли в ', т.к. в паролях использовались не только буквы и цифры.
snmpwalk -v3 -a MD5 -l authPriv -A 'auth_passphrase1' -u user1 -x DES -X 'priv_passphrase1' 10.10.10.50

Уровень безопасности noAuthNo Priv или authNoPriv или authPriv

Уровень безопасности noAuthNo Priv или authNoPriv или authPriv snmpwalk -v3 -a MD5 -l authPriv -u APCV3 -A Пароль -x DES -X Пароль IP:Порт если не 161 | head -10 отобразить первые 10 строк

snmpwalk -v 2c -c public

ИСПОЛЬЗОВАНИЕ: snmpwalk [Опции] AGENT [OID]

Опции:
-h, --help -Вызов справки
-H -показать понятные директивы файла конфигурации
-v 1|2c|3 -указывает используемую версию SNMP
-V, --version Вывести на экран версию snmpwalk

SNMP V1 или V2С
-c COMMUNITY -установите строку сообщества например: -c public

SNMP V3 с авторизацией
-a PROTOCOL - установить протокол аутентификации (MD5 или SHA)
-A PASSPHRASE -установить протокол проверки подлинности пароля
-e ENGINE-ID -комплектация код двигатель (напр. 800000020109840301)
-E ENGINE-ID -установить идентификатор контекстного движка (например. 800000020109840301)
-l LEVEL -установить уровень безопасности (noAuthNoPriv|authNoPriv|authPriv)
-n CONTEXT -задать имя контекста (например. bridge1)
-u USER-NAME -установить имя (пользователя) безопасности (например. bert)
-x PROTOCOL -установить протокол конфиденциальности (DES или AES)
-X PASSPHRASE -Установить пароль протокола конфиденциальности
-Z BOOTS,TIME -установка загрузки двигателя назначения / времени

Общие параметры связи
-r RETRIES -установите количество повторных попыток
-t TIMEOUT -установите время ожидания запроса (в секундах)

Отладка debug
-d -дамп входных / выходных пакетов в шестнадцатеричном формате
-D[TOKEN[. ]] -включить вывод отладки для указанных токенов (ALL дает чрезвычайно подробный отладочный вывод)

Прочие Опции
-m MIB[. ] -загрузить данный список МИБ (ALL загружает все) snmpwalk -v 2c -c public -m DNS-340L_MIB.mib 192.168.
-M DIR[. ] -посмотрите в данном списке каталогов для MIBs
(Поумолчанию: $HOME/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp)

-P MIBOPTS -Переключить различные значения по умолчанию, контролирующие разбор MIB:
u: разрешить использование подчеркивания в символах MIB
c: запретить использование «--» для прекращения комментариев
d: сохранить ОПИСАНИЕ объектов MIB
e: отключить ошибки при конфликте символов MIB
w: включить предупреждения при конфликте символов MIB
W: включить подробные предупреждения при конфликте символов MIB
R: заменить символы MIB из последнего модуля

-O OUTOPTS -Переключение различных значений по умолчанию, управляющих отображением выхода:
0: печатать начальный 0 для шестнадцатеричных символов
a: распечатать все строки в формате ascii
b: не разбивайте индексы OID indexes down
e: печатать перечисления численно
E: экранировать кавычки в строковых индексах
f: печатать полные OID на выходе
n: печатать OIDs численно
q: быстрая печать для облегчения анализа
Q: быстрая печать со знаками равенства
s: печатать только последний символический элемент OID
S: распечатать идентификатор модуля MIB плюс последний элемент
t: распечатывать временные метки в виде числовых целых
T: печатать читабельный текст вместе с шестнадцатеричными строками
u: вывод OID с использованием подавления префикса в стиле UCD
U: не печатать единицы юниты
v: только для печати значений (нет OID = value значения)
x: распечатать все строки в шестнадцатеричном формате
X: расширенный индексный формат

-I INOPTS -Переключение различных значений по умолчанию, управляющих анализом ввода:
b: сделать лучшее / регулярное выражение, чтобы найти узел MIB
h: не применять DISPLAY-подсказки
r: не проверять значения для легальности диапазона / типа
R: сделать произвольный доступ к меткам OID
u: OID верхнего уровня должны иметь '.' префикс (в стиле UCD)
s SUFFIX: Добавьте все текстовые OID с SUFFIX перед анализом
S PREFIX: Перед синтаксическим анализом добавьте все текстовые OID с помощью PREFIX.

-L LOGOPTS -Переключение различных настроек по умолчанию для управления журналом:
e: Вывод стандартного лога ошибок
o: Вывод стандартного лога ошибок
n: Отключить весь Лог
f file: Специфичный лог файл
s facility: войти в системный журнал (через указанное средство)

(Варианты)
[EON] pri: войти в стандартную ошибку, output or /dev/null for level 'pri' and above
[EON] p1-p2: log to standard error, output or /dev/null for levels 'p1' to 'p2'
[FS] pri token: log to file/syslog for level 'pri' and above
[FS] p1-p2 token: log to file/syslog for levels 'p1' to 'p2'

-C APPOPTS -Установить различные специфичные для приложения поведения:
p: выведите количество найденных переменных
i: включить данный OID в диапазон поиска
I: не включать данный OID, даже если результаты не возвращаются
c: не проверять количество возвращаемых OID увеличивается
t: Display wall-clock time to complete the walk
T: Display wall-clock time to complete each request
E : End the walk at the specified OID

Путь поиска MIB
/root/.snmp/mibs:
/usr/share/snmp/mibs:
/usr/share/snmp/mibs/iana:
/usr/share/snmp/mibs/ietf:
/usr/share/mibs/site:
/usr/share/snmp/mibs:
/usr/share/mibs/iana:
/usr/share/mibs/ietf:
/usr/share/mibs/netsnmp

snmpwalk [-d] [-p порт] -v 1 хост сообщество [имя_переменной]
-d Выгрузить входные и выходные пакеты.

Если шаблон будет подключатся к Хосту (узлу) где используется SNMP V3 с авторизацией и шифрованием
Для удобства задайте Макросы (переменные) Для того чтобы в каждом элементе в дальнейшем не прописывать логин пароли
Пример

После подключения шаблона к узлу, В узле задайте данные Макросы и пропишите для них логин пароль!
Имя контекста
Имя безопасности
Пароль аутентификации
Ключевая фраза безопасности
Порт обычно 161

Далее в обычном элементе получаем следующий вид

макросы для SNMP V3 Прототип элемента данных пример

макросы для SNMP V3 Прототип элемента данных пример

И так по аналогии создаем все элементы если у вас SNMP V3.

snmpwalk -v3 -a MD5 -l authPriv -u APCV3 -A Пароль1 -x DES -X Пароль2 192.168.xxx.xxx:166 PowerNet-MIB::upsAdvBatteryTemperature.0

Если в виде макросов посмотреть получим
snmpwalk -v3 -a MD5 -l authPriv -u -A -x DES -X 192.168.xxx.xxx: PowerNet-MIB::upsAdvBatteryTemperature.0

snmpwalk -v3 -a MD5 -l authPriv -u Имя безопасности -A Пароль аутентификации -x DES -X Ключевая фраза безопасности 192.168.xxx.xxx:Порт обычно 161 PowerNet-MIB::upsAdvBatteryTemperature.0

Если Пароль 1 неверен получим ошибку Authentication failed for и так же Timeout
Если Пароль 2 неверен получим ошибку Timeout: No Response from , Timeout while connecting to (красный snmp то что нет соединения)

Если удаленный хост Debian и его планируется опрашивать по snmp v3

Создать имя пользователя для аутентификации
Установить пароль аутентификации
Установить пароль шифрования
Определить права доступа
Определить алгоритм шифрования

Создание пароля для подключения к узлу на котором cоздается пароль пример
net-snmp-create-v3-user [-ro] [-A authpass] [-a MD5|SHA] [-X privpass][-x DES|AES] [username]
systemctl stop snmpd - остановить службу
net-snmp-create-v3-user -ro -A SecUREDpass -a SHA -X StRongPASS -x AES snmpreadonly

Получаем ответ
adding the following line to /var/lib/snmp/snmpd.conf:
createUser snmpreadonly SHA "SecUREDpass" AES StRongPASS
adding the following line to /usr/share/snmp/snmpd.conf:
rouser snmpreadonly

Для интерактивного запуска net-snmp-create-v3-user
net-snmp-create-v3-user -x AES -a SHA

Запускаем службы
systemctl start snmpd
systemctl enable snmpd

Проверка
snmpwalk -v3 -a SHA -A SecUREDpass -x AES -X StRongPASS -l authPriv -u snmpreadonly localhost | head -10
snmpwalk -v3 -a SHA -A hacker100 -x AES -X hacker101 -l authPriv -u snmpreadonly 192.168.43.188 | head -10

В Zabbix появился официальный Template DB PostgreSQL. В этой статье настроим его в Zabbix 4.4.



Если у вас все хорошо с английским, то рекомендую установить шаблон по официальному мануалу

Тем не менее в моей статье учтены нюансы, которых нет по этой ссылке.

Подготовка шаблона

1. Переходим в домашний каталог.


2. Скачиваем утилиту git и клонируем официальный репозиторий Zabbix, который находится на GitHub.


3. Переходим в каталог с шаблоном PostgreSQL.

Настройка шаблона для агента Zabbix

1. Подключимся к PostgreSQL.


2. Создадим пользователя zbx_monitor только для чтения с доступом к серверу PostgreSQL.

Для PostgreSQL версии 10 и выше:


Для PostgreSQL версии 9.6 и ниже:


3. Скопируем каталог postgresql/ в каталог /var/lib/zabbix/. Если у вас в /var/lib/ отсутствует каталог zabbix/, то создайте его. Каталог postgresql / содержит файлы, необходимые для получения метрик из PostgreSQL.


4. Затем скопируем файл template_db_postgresql.conf в каталог конфигурации агента Zabbix /etc/zabbix/zabbix_agentd.d/ и перезапустите агента Zabbix.


Добавьте одну из строк (Если не понимаете зачем это нужно, то добавьте только первую строку.):

Если PostgreSQL установлен из репозитория PGDG, добавьте путь к pg_isready в переменную среды PATH для пользователя zabbix.

Как вариант:


* — так как у меня pgsql 12 версии, то у вас вместо pgsql-12 будет другой путь.

Если этого не сделать, то Status: Ping всегда будет в состоянии Down.

Добавление шаблона на фронтенде Zabbix

Считаю, что те, кому требуется снимать метрики с PostgreSQL итак знают как добавлять шаблоны. Поэтому опишу процесс кратко.

  1. Заходим на страницу Zabbix;
  2. Переходим на страницу "Configuration" => "Host";
  3. Нажимаем на кнопку "Create host" или выбираем существующий хост;
  4. На странице создания/редактирования хоста выбираем вкладку "Templates" и и жмём на линк "Add";
  5. В «Group» из списка выбираем «Templates/Databases», выбираем шаблон "Template DB PostgreSQL", жмём кнопку "Select" и нажимаем кнопку "Update";



Enjoy!

Zabbix в примерах

Zabbix. Получение и первичная настройка.

Zabbix можно получить по ссылке:

Системные требования: 2 ядра CPU / 2ГБ

Далее предполагается, что вы скачали с официального сайта образ виртуальной машины, либо ISO-файл и установили его в Ubuntu Server 16.04 LTS.

По умолчанию доступ к веб-интерфейсу разрешен отовсюду.

Инсталляция готового решения Zabbix имеет следующие пароли:

SSH доступ логин.пароль:

Используйте “sudo su” команду вместе с паролем от “appliance” пользователя для получения привилегированных root прав.

Создание своего пользователя. adduser имя_пользователя

После того, как пользователь создан, добавляем его в группу sudo.

usermod -a -G sudo имя_пользователя Не забудьте отключить пользователя по умолчанию

passwd appliance –l

На все вопросы по работе сервера и клиента вам с удовольствием ответят логи. Логи сервера лежат по пути:

tail -f /путь/к/файлу

поможет в прямом эфире отслеживать, что же происходит.

На картинке пример просмотра логов агента.

Zabbix добавление узла сети вручную

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

Присваиваем узлу сети имя, вводим его видимое имя, добавляем в существующую или создаем новую группу, задаем интерфейс, посредством которого будет осуществляться мониторинг.

Для получения информации по узлу сети необходимо добавить к нему шаблон(ы). Делается это так: выбираем узел сети, переходим на вкладку шаблоны, нажимаем кнопку выбрать, в открывшемся окне выбираем необходимый шаблон или шаблоны и нажимаем выбрать. Когда шаблоны выбраны, нажимаем на главной странице добавить и обновить. В результате получаемые с узла данные будут доступны в меню мониторинг, подменю последние данные.

Обнаружение узлов в сети.

Для того, чтобы не создавать все узлы сети вручную, полезно использовать функцию обнаружения. Она позволяет находить узлы и производить с ними различные действия: добавлять в определенные группы узлов привязывать шаблоны прочее. Чтобы создать правило обнаружения необходимо перейти в раздел обнаружение и выбрать пункт создать правило обнаружения. Дальнейшие действия будем производить на примере принтеров. Предполагается, что нам известен диапазон их адресов.

Установка Zabbix agent в CentOS 7

yum install zabbix-agent

По умолчанию в CentOS сервис не запускается автоматически при перезагрузке! Убеждаемся в этом: systemctl status zabbix-agent

И добавляем его в автозагрузку: systemctl enable zabbix-agent

Запускаем сервис: systemctl start zabbix-agent Проверяем, все ли в порядк: systemctl status zabbix-agent

Установка Zabbix agent в Ubuntu 16.04 LTS

dpkg -i zabbix-release_3.4-1+trusty_all.deb

apt-get install zabbix-agent

Установка Zabbix agent в Windows 7/8/2012 32-x/64-x

  1. Открыть в файерволе TCP порт 10050, по которому агент общается с сервером

netsh advfirewall firewall add rule name="Zabbix Agent" dir=out protocol=tcp localport=10050 action=allow

netsh advfirewall firewall add rule name="Zabbix Agent" dir=in protocol=tcp localport=10050 action=allow

Переименовать папку в zabbix_agent

c:\zabbix_agent\bin\win64\zabbix_agentd.exe --config c:\zabbix_agent \conf\zabbix_agentd.conf --install

Где: c:\zabbix_agent\bin\win64\zabbix_agentd.exe – путь к исполняемому файлу тебуемой разрядности;

--config c:\zabbix_agent\conf\zabbix_agentd.conf – путь к конфигурационному файлу;

--install – команда для установки сервиса с указанными выше параметрами.

На 64-битных системах требуется 64-битная версия Zabbix агента, чтобы все проверки связанные с запущенными 64-битными процессами корректно работали.

Или возьмите готовое у меня:

Для облегчения задачи я написал скрипт, который автоматически создает конфигурационный файл, открывает порты и устанавливает сервис требуемой разрядности. Полный комплект (zabbix_agent) лежит на яндекс диске в папке soft Скрипт требует настройки SET String=%computername%.%userdomain%.local – заменяем на постфикс вашего домена (ru/loc/net) SET Zabbix=192.168.10.31 – заменяем на адрес вашего сервера Zabbix.

Настройка Zabbix agent (универсальная)

Zabbix agent хранит свои настройки в файле zabbix_agentd.conf . В ОС UNIX он хранится по пути /etc/zabbix/zabbix_agentd.conf В ОС Windows он хранится по пути zabbix_agent\conf\zabbix_agentd.conf Ниже приведена минимальная необходимая для работы конфигурация.

Server=192.168.10.31 – адрес сервера Zabbix

ServerActive=192.168.10.31 – адрес сервера Zabbix

Hostname=001-0036.et.local – полное имя хоста, в таком виде, каким его видит сервер.

ListenPort=10050 - порт, на котором будет работать агент.

LogFile=c:\zabbix_agent\zabbix_agentd.log - расположение файла журнала в Windows

LogFile=/var/log/zabbix/zabbix_agentd.log - расположение файла журнала в UNIX

LogFileSize=10 – размер файла журнала в мегабайтах.

Подробнее про настройку можно почитать тут: для Windows

Получение данных от агента.

В целях отладки очень удобно получать данные от агента в консоли. За это отвечает утилита zabbix_get. Синтаксис у нее такой: zabbix_get -s -p -k ключ Где: -s - адрес узла -p - порт, на котором слушает агент -k ключ – ключ, значение которого необходимо получить

В примере выше мы запросили у узла 192.168.10.30, агент у которого работает на порту 10050 значение ключа sip.status. .

Мониторинг журналов событий Windows

Для того, чтобы работать с журналом событий, достаточно создать элемент данных следующего вида: Тип: Zabbix агент (активный) Ключ: eventlog[System,,"Error|Information","^Zabbix test event$"] Тип информации: Журнал (лог) Затем создаем триггер с текстом <имя.хоста:eventlog[Application,,"Warning|Error|Failure". ].logseverity()>>1 and < имя.хоста:eventlog[Application,,"Warning|Error|Failure". ].nodata(60)><>1

Чтобы упростить себе мониторинг журналов Система и Приложения достаточно импортировать на сервер шаблон YandexDisk\soft\zabbix_templates\zbx_eventlog_template.xml Настройки-Шаблоны-Импорт

Затем выбираем файл и нажимаем импорт

После того, как шаблон добавлен, необходимо прикрепить его к нужному узлу сети. Проверить работу можно, зайдя в Мониторинг-Последние данные

Выбираем узел сети, или группу узлов и видим, какие ошибки и предупреждения поступали.

Мониторинг нестандартных журналов событий Windows

Тип - активный, Ключ eventlog[Microsoft-Windows-Hyper-V-VMMS-Admin,,"Error|Critical". 100,skip] тип информации: лог

Ищем ошибки, относящиеся к работе Windows Scheduler:

eventlog[Microsoft-Windows-TaskScheduler/Operational,,"Error|Critical". 100,skip] Основная проблема - что указать в качестве первого параметра ключа eventlog. Делаем так: открываем родной виндовый Event Viewer (например, right-click на MyComputer -> Manage, затем открываем System Tools -> Event Viewer); в Event Viewer-е находим нужный лог (например, в данном случае: Application and Services Logs -> Microsoft -> Windows -> TaskScheduler -> Operational), на нём RightClick -> Properties; в свойствах находим поле "Full Name" (самое первое), его содержимое и копипастим в качестве первого параметра ключа.

Мониторинг необходимости перезагрузки Windows.

Бывает полезно знать, каким серверам требуется перезагрузка, а когда их много, то удобно об этом узнавать, не заходя на сервер. Для мониторинга нам понадобится клиент, настроенный для активных проверок и соответствующий скрипт. Скрипт берем в галерее технета по ссылке ниже. https://gallery.technet.microsoft.com/scriptcenter/Get-PendingReboot-Query-bdb79542/view/Discussions set-executionpolicy remotesigned Полученный скрипт определяем в папку \zabbix_agent\scripts на клиенте, в конфигурации пишем: UserParameter=Reboot.IsNedeed,powershell -NoProfile -ExecutionPolicy Bypass -command "$ErrorActionPreference = 'silentlycontinue'; $eval = get-pendingreboot; if ($eval.RebootPending) < Write-Host '1'; >else < Write-Host '0' >; На стороне Zabbix создаем элемент данных: Zabbix (активный) ключ: Reboot.IsNedeed

Мониторинг Asterisk на примере Elastix (CentOS 7 x64)

Подразумевается, что агент у вас уже установлен. Если это не так – смотрите соответствующий раздел руководства. Для того, чтобы настроить мониторинг нам нужно сделать несколько вещей: 0 добавить пользователю zabbix от чьего имени работает zabbix agent право запускать программы баз ввода пароля, 1 добавить в конфигурационный файл агента нужные параметры 3 скачать, импортировать и применить к нужному узлу шаблон. Приступим. Открываем файл sudo nano /etc/sudoers И в самый конец допишем: zabbix ALL=(ALL) NOPASSWD:ALL Теперь создадим отдельный файл настроек для работы с Asterisk

nano /etc/zabbix/zabbix_agentd.d/asterisk.conf ```UserParameter=ast.pid,sudo -u zabbix sudo cat /var/run/asterisk/asterisk.pid

UserParameter=ast.uptime,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'core show uptime' | grep uptime | cut -f2 -d: | sed 's/ //g'

UserParameter=ast.reloadtime,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'core show uptime' | grep reload | cut -f2 -d: | sed 's/ //g'

UserParameter=ast.version,sudo -u zabbix sudo /usr/sbin/asterisk -V | cut -f2 -d' '

INFO: Active Calls is Buggy yet.

UserParameter=ast.callsdone,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'core show calls'| grep -i 'processed' | awk ''

UserParameter=iax.status,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'iax2 show registry'|grep Registered |wc -l

UserParameter=sip.status,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'sip show registry'|grep Registered |wc -l

UserParameter=sip.peersonline,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'sip show peers'|grep --text -i 'sip peers'|awk ''

UserParameter=sip.peersoffline,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'sip show peers'|grep --text -i 'sip peers'|awk ''

UserParameter=sip.peers,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'sip show peers'|grep --text -i 'sip peers'|awk ''

UserParameter=dns.status,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'dnsmgr status' | grep 'DNS Manager' | awk ''

UserParameter=dns.entries,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'dnsmgr status' | grep 'Number of entries' | awk ''

UserParameter=fax.sessions,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'fax show stats' | grep 'Current Sessions' | awk ''

UserParameter=fax.transmits,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'fax show stats' | grep 'Transmit Attempts' | awk ''

UserParameter=fax.receive,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'fax show stats' | grep 'Receive Attempts' | awk ''

UserParameter=fax.done,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'fax show stats' | grep 'Completed' | awk ''

UserParameter=fax.fail,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'fax show stats' | grep 'Failed' | awk ''

UserParameter=ast.parkedcalls,sudo -u zabbix sudo /usr/sbin/asterisk -rvvvvvx 'parkedcalls show' | grep 'parked calls in total' | awk ''

Version Info -- Edit this part for your own loss

UserParameter=ast.tribily.ver,sudo -u zabbix sudo echo $

Мониторинг доступности телефонов на примере аппаратов Yealink.

Поскольку SNMP доступен не для всех телефонов, а получать с них информацию необходимость есть, мы воспользуемся функцией Zabbix, которая называется Веб мониторинг. Создаем узел сети с произвольным именем, без указания адреса, он нам нужен только для привязки к нему сценария. После создания кликаем по пункту веб Далее выбираем создать веб сценарий

Даём ему имя, например, «Доступность», потом переходим на вкладку шаги, и нажимаем на кнопку добавить. Вводим название шага, url, по которому необходимо проследовать, строку, которая там должна быть и код ответа. Нажимаем добавить, и еще раз добавить на основной страничке.

Называем триггер, далее нажимаем добавить, и в появившемся окошке из элементов данных выбираем ошибку проверки, а в значении функции Последнее значение NOT N, и нажимаем вставить. Выбираем высокую важность и нажимаем добавить.

Триггер означает, что, если проверка не удалась, и вернула любой код ответа, отличный от N (200, как мы его задали), это будет означать событие высокой важности с немедленным уведомлением заинтересованных лиц.

Настройка оповещений по Email на примере почты от yandex.

Переходим в раздел Администрирование(1)->Способы оповещений(2)->Email(3)

Мониторинг хоста Hyper-V

Для работы нам потребуется пакет freeipmi

'sudo apt-get install freeipmi'

/usr/sbin/ipmi-sensors -D LAN2_0 -h 192.168.10.36 -u пользователь_в_iLO -p пароль -l USER -W discretereading --no-header-output --quiet-cache --sdr-cache-recreate --comma-separated-output --entity-sensor-names

date

07.05.2020

directory

CentOS, Linux, Ubuntu, Windows Server 2016

comments

комментариев 8

Zabbix это open-source система мониторинга корпоративного уровня. На текущий момент Zabbix одна из самых популярных и функциональных бесплатных систем мониторинга. Благодаря простой установке и настройке Zabbix можно использовать для мониторинга крупных инфраструктур с сотнями серверов, так и для мелких конфигураций. В этой статье мы рассмотрим, как выполнить установку и базовую настройку сервера Zabbix 4.4 с веб-интерфейсом на базе Linux Ubuntu и CentOS, установить агенты Zabbix на сервере Windows и Linux, и добавить новые хосты в систему мониторинга.

Общий интерфейс Zabbix сервера представлен на скриншоте ниже.

веб интерфейс системы мониторинга zabbix

Из чего состоит Zabbix и что он может?

Zabbix простой установке и настройке, написан на C (сервер, прокси и агент) и PHP (фронтенд). Zabbix Server и Zabbix Proxy может работать только на Linux системах. Агент можно установить на большом количестве поддерживаемых ОС и платформах.

Инсталляция Zabbix сервера состоит из:

  • бинарника zabbix_server (обычно работает как сервис);
  • MySQL (MariaDB)/PostgreSQL базы данных;
  • Веб сервера Apache2/Nginx с обработчиком PHP;
  • Файлов самого frontend сайта (.php, .js, .css и т.д.).

Обычно схема работы выглядит так:

    Агент Zabbix посылает данные на сервер

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

Установка Zabbix Server в Linux (Ubuntu, CentOS)

В этой статье мы рассмотрим пример установки Zabbix Server 4.4 на Linux (на примере Ubuntu Server 18.4 и CentOS) через пакетный менеджер.

Например, для установки Zabbix на Ubuntu 18.04 нужно последовательно выбрать :

Zabbix Version (4.4) -> OS Distribution (Ubuntu) -> OS Version (18.04 Bionic) -> Database (MySQL) -> Веб сервер (Nginx или Apache).

инструкция по установке zabbix, получение репозиториев

Скачем и добавим репозиторий:

Теперь можно установить необходимые пакеты:

установка zabbix-server в linux ubuntu

Для установки Zabbix в CentOS 8/RHEL 8 нужно подключить репозиторий с актуальной версией Zabbix (можно установить Zabbix из ветки 4.0 LTS или последнюю версию Zabbix 4.4):

Предполагаем, что на сервере уже установлены: nginx, MySQL/MariaDB, php и php-fpm. Теперь через пакетный менеджер установим сам сервер Zabbix и агент:

Создайте базу данных и дайте права пользователю, из-под которого Zabbix будет обращаться к базе данных:

mysql -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'ВашПароль';
mysql> quit;

Импортируйте базу данных Zabbix. Нужно будет ввести пароль, который вы указали при создании пользователя.

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix

Измените конфигурационный файл /etc/zabbix/zabbix_server.conf, укажите пароль от вновь созданного пользователя.

Так как в моем случае веб сервером служит nginx, нужно изменить nginx.conf, раскомментировав следующие строчки

Выставим временную зону в PHP. В файле /etc/zabbix/php-fpm.conf раскомментируем строчку

Дополнительно можно выставить следующие параметры PHP в /etc/php.ini :

Добавьте службу zabbix-server в автозапуск и запустите ее:

Настройка веб-интерфейса Zabbix

Теперь нужно настроить frontend (веб-интерфейс) Zabbix. В браузере откройте указанный ранее URL адрес zabbix сервера. В моем случае это test.zabbix.local (или на домен, который вы указывали. Не забудьте прописать его у себя в hosts файле или на DNS сервере).

zabbix веб installer

Убедитесь, что во всех требования инсталлятора указано ОК.

zabbix check pre-requisites

Укажите данные для подключения к БД. Используйте пользователя и пароль, который создали ранее.

данные для подключения к базе данных zabbix

Укажите название Zabbix сервера. Порт рекомендую оставлять стандартный – TCP 10051.

  • TCP 10050 — порт пассивного агента, по нему zabbix сервер опрашивает клиентов;
  • TCP 10051 — порт, на котором zabbix сервер получает данные от клиентов (активный агент).

Не забудьте открыть данные порты. Например, на Zabbix сервере на базе CentOS можно открыть порты в firewalld с помощью firewall-cmd:

А на агенте достаточно открыть 10050:

Не забудьте перезагрузить firewalld:

имя и порты zabbix сервера

После этого жмите Next Step и Finish. После успешной установки вас попросит залогиниться. По-умолчанию логин Admin , пароль zabbix (замените его).

авторизация веб-интерфейсе в zabbix

zabbix dashboard

На этом установка сервера Zabbix Server завершена.

Установка Zabbix Agent в Windows

Выберите нужную версию агента под Windows. Я выберу формат msi (amd64) (без OpenSSL). Если вы планируете устанавливать zabbix agent на сервера/компьютеры домена через групповые политики или SCCM, то можете скачать zip архив с бинарными файлами и конфигурационными файлами.

Запустите инсталлятор, примите лицензионное соглашение, укажите запрошенные данные. Обратите внимание, что в поле “Server or Proxy for active checks” я указал IP адрес в формате IP:PORT. Поскольку порт я оставлял стандартный, я пишу IP:10051.

настройка параметров zabbix сервера при установке агента в windows

Далее еще пару раз нажмем Next и Install.

После этого убедимся, что наш агент установлен. В списке служб должен появиться сервис Zabbix Agent.

служба zabbix agent в windows

На клиенте Windows нужно разрещить входящие подключения с IP адреса сервера Zabbix в Брандмауэре Windows:

New-NetFirewallRule -DisplayName "ZabbixMonitoring" –RemoteAddress 192.168.1.100 -Direction Inbound -Protocol TCP –LocalPort 10050 -Action Allow

Добавление устройства на Zabbix-сервере

Чтобы убедиться в работоспособности агента, нужно добавить хост testnode2 на Zabbix сервер и назначить ему проверки (checks).

Заметка. В заббиксе есть 2 типа проверок:
  • Пассивные – Zabbix сервер запрашивает у агента какие-либо данные;
  • Активные – агент посылает на сервер данные;

При установке агента мы указывали сервер в формате IP:PORT как раз для активных проверок.

Добавление нового устройства для мониторинга в Zabbix выполняется через Web-интерфейс. Перейдите в раздел Configuration -> Hosts.

добавление хоста в мониторинг Zabbix

Нажмите Create host и заполните данные. Обратите внимание, что Host name хоста должен полностью совпадать с hostname машины или значением параметра Hostname в конфиге агента.

добавление windows устройства в Zabbix сервере

Во вкладке Templates добавить несколько встроенных Windows шаблонов. Шаблоны в Zabbix это наборы значений, триггеров, графов и правил обнаружения, которые могут быть назначены одному или нескольким хостам.

Эти интегрированные шаблоны имеют постфикс “active”, значит, будут использоваться активные проверки.

шаблоны zabbix для windows

Нажмите Add. Чтобы не ждать пока сервер и агент увидят друг друга (обычно занимает пару минут), перезагрузите службу Zabbix Agent на testnode2 и проверьте лог агента (C:\Program Files\Zabbix Agent\zabbix_agentd.txt).

перезапуск службы Zabbix agent

лог zabbix_agentd.txt

проверка получение данных от хоста в zabbix

данные об устройстве в веб интерфейсе zabbix

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

Обратите внимание на то, что в дашборде Zabbix висит уведомление о том, что служба BITS не запущена. Это уведомление появилось потому что мы назначили стандартные шаблоны нашему хосту. В одном из шаблонов был мониторинг сервиса BITS и соответствующий триггер, который срабатывает если служба BITS находится не в статусе Running.

события в dashboard zabbix

На этом настройка Windows Agentа завершена.

Установка Zabbix Agent в Linux

Перед тем как мы запустим zabbix агент, нужно отредактировать конфигурационный файл /etc/zabbix/zabbix_agentd.conf. В нем нужно указать IP адрес сервера Zabbix для активных проверок.

После этого запустите сервис агента:

Убедитесь, что агент успешно запустился.

установка zabbix agent в linux ubuntu

Строка cannot parse list of active checks говорит о том, что на сервере нет активных проверок для этого хоста.

добавление ubuntu в мониторинг zabbix

23

Перезагрузите Zabbix агент и проверьте лог.

лог zabbix_agentd

Проверьте, что данные от агента появились на сервере Zabbix.

данные с linux сервера появились в веб интерфейсе zabbix

На этом настройка Zabbix-агента на Linux системе завершена. В следующей статье мы рассмотрим безагентный мониторинг доступности узлов в Zabbix через ICMP Ping.

Читайте также: