Zabbix — элементы данных агента
В этой статье я опишу некоторые элементы данных Zabbix агента. Кратко опишу эти элементы, расскажу где можно применить предобработку.
Введение
Я уже рассказывал про то как установить Zabbix агента на Linux или Windows и как начать мониторинг за хостом — здесь . В этой статье я расскажу про некоторые элементы данных (метрики), которые предоставляет Zabbix агент. Всего таких метрик в 6 версии Zabbix более 80, их описание вы можете посмотреть в официальной документации . Здесь я покажу лишь некоторые из элементов, в качестве примеров. А дальше, используя документацию, вы сможете подключить те элементы, которые нужны именно вам.
Доступность агента
- Ключ — agent.ping.
- Возвращает 1 если агент запущен и ничего не возвращает, если агент не запущен.
- Тип информации — Числовой (целое положительное).
- Можно использовать и на Linux, и на Windows.
- В качестве триггера можно указать отсутствие данных, например за минуту.

Количество открытых файлов
- Ключ — kernel.openfiles.
- Как известно, в Linux есть лимит по максимальному числу открытых файлов. Об этом я писал здесь . В Windows такого лимита нет, вы сможете открыть столько файлов, сколько вам позволит объём памяти. Этот элемент данных возвращает текущее количество открытых файлов.
- Тип информации — Числовой (целое положительное).
- Можно использовать только на Linux.
- В качестве триггера можно указать приближение к указанному лимиту. Посмотреть текущее значение открытых файлов и лимит можно с помощью команды:
cat /proc/sys/fs/file-nr. Например лимит 150000, тогда триггером будет превышение 140000.

Ошибки при входящем и исходящем трафике
- Ключ для входящего трафика —
net.if.in[<интерфейс>, errors] + предобработка «Простое изменение». - Ключ для исходящего трафика —
net.if.out[<интерфейс>, errors] + предобработка «Простое изменение». - Эти элементы данных с предобработкой возвращают количество ошибок со времени предыдущей проверки.
- Тип информации — Числовой (целое положительное).
- Можно использовать и на Linux, и на Windows. На Windows я вместо имени интерфейса указываю назначенный ему ip адрес.
- В качестве триггера можно указать что возвращаемое число не равно нулю. Это будет означать что на интерфейсе появились ошибки.


Загрузка CPU
Здесь я для LInux и Windows использую разные стратегии и разные элементы данных.
- Ключ для Linux —
proc.cpu.util[] + предобработка «Пользовательский множитель».- Покажет загрузку CPU всеми процессами в процентах. Если у вас 8 ядер, то полная загрузка будет равняться 800%. Поэтому стоит добавить предобработку «Пользовательский множитель» чтобы поделить полученное значение на количество ядер. Чтобы получить множитель, нужно 1/n, где n — это количество ядер. Например: множитель 0.5 для 2 ядер, множитель 0.125 для 8 ядер.
- Тип информации — Числовой (с плавающей точкой).
- Можно использовать только на Linux.
- Ключ для Windows —
system.cpu.util[].- В системе Windows покажет загрузку CPU, как показывает диспетчер задач. Но в Linux показывает загрузку только по определённому типу (idle, user (по умолчанию), system) а в сумме нельзя.
- Тип информации — Числовой (с плавающей точкой).
- Можно использовать и на Linux, и на Windows. Но в данном примере следует использовать только на Windows.
- В обоих случаях, в качестве триггера, можно указать превышение 70% в течении 5 минут.


Load Average
- Ключ —
system.cpu.load[]. - Про него (для Linux) я писал здесь , это как бы средняя нагрузка на систему. Если нагрузка меньше чем число ядер, значит всё хорошо, если больше — то плохо. Этот элемент возвращает среднюю нагрузку на систему (Load Average) усреднённую за 1 минуту.
- Тип информации — Числовой (с плавающей точкой).
- Можно использовать и на Linux, и Windows.
- В качестве триггера можно указать превышение количества ядер в системе в течении 5 минут.

Занято памяти
- Ключ —
vm.memory.size[pused]. - С параметром pused покажет использованную память в системе, в процентах.
- Тип информации: Числовой (с плавающей точкой).
- Можно использовать и на Linux, и Windows.
- В качестве триггера можно указать превышение 75% в течении 5 минут.

Использование SWAP
- Ключ —
system.swap.size[,pused]. Для Linux. Тип информации: Числовой (с плавающей точкой). - Ключ —
system.swap.size[,used]. Для Windows. Тип информации: Числовой (целое положительное). - Покажет использование файла или раздела подкачки. На Linux, в качестве второго параметра я указываю pused (просмотр занятой памяти в процентах). А на Windows, второй параметр — used (просмотр занятой памяти в байтах), так как pused не поддерживается.
- Можно использовать и на Linux, и Windows.
- В обоих случаях, в качестве триггера можно указать превышение 75%, только для Windows нужно будет произвести расчет самостоятельно и вместо процентов указать количество байтов.

Занято на диске
- Ключ —
vfs.fs.size[/,pused]— ключ для Linux. - Ключ —
vfs.fs.size[C:\,pused]— ключ для Windows. - Покажет на сколько процентов занят раздел жёсткого диска. Для Linux нужно указать точку монтирования, а для Windows — букву диска.
- Можно использовать и на Linux, и Windows.
- Тип информации: Числовой (с плавающей точкой).
- В качестве триггера можно указать превышение 75%.

Занято inode
- Ключ —
vfs.fs.inode[/,pused]. - Создавая файлы, мы занимаем индексные дескрипторы (inode) на файловой системе. Об этом я писал здесь . На Windows (NTFS) inode не могут закончится. А на Linux (Ext4) — могут закончится. Элемент с параметром pused возвращает процент занятых файловых дескрипторов на файловой системе.
- Тип информации: Числовой (с плавающей точкой).
- Можно использовать только на Linux.
- В качестве триггера можно указать превышение 75%.

Проверка изменения файла
- Ключ —
vfs.file.cksum[/etc/passwd]. - Покажет хэш указанного файла. Это бывает полезно, чтобы знать, что файл не изменялся.
- Тип информации — Числовой (целое положительное).
- Можно использовать и на Linux, и Windows. Для Windows нужно указать путь в виде
C:\…. - В качестве триггера можно указать изменение получаемого значения в сравнении с предыдущим значением. То есть, если полученное значение не такое, как при предыдущей проверке, значит файл изменился.

Проверка открытого TCP порта
- Ключ проверяющий работает ли web сервер —
net.tcp.listen[443]. - Ключ проверяющий работает ли rdp сервер
net.tcp.listen[3389]. - Если нам нужно следить за определённым сервисом, то мы можем следить, прослушивается ли указанный порт на сервере. Возвращает 1 если порт находится в состоянии LISTEN, 0 — если не находится.
- Тип информации — Числовой (целое положительное).
- Можно использовать и на Linux, и Windows.
- В качестве триггера можем указать 0, то есть наблюдаемый порт не прослушивается на сервере.

Производительность TCP сервиса
- Ключ для проверки web-сервера (https) —
net.tcp.service.perf[https, 127.0.0.1, 443]. - Ключ для проверки сервера удалённых рабочих столов —
net.tcp.service.perf[tcp, 127.0.0.1, 3389]. - Этот элемент может проверить работу TCP сервиса, есть подобный и для udp. Проверять можно следующие сервисы: ssh, ldap, smtp, ftp, http, pop, nntp, imap, tcp, https, telnet — подробнее об этом здесь . Возвращает 0 если сервис недоступен или количество секунд за которые сервис ответил.
- Тип информации: Числовой (с плавающей точкой).
- Можно использовать и на Linux, и Windows.
- В качестве триггера можем указать 0 — значит сервер не доступен. Или превышение какого-то количества секунд, например 3, значит сервер отвечает очень медленно.

Количество определённых процессов
- Ключ —
proc.num[<процесс>]. - Этот элемент данных покажет количество определённых процессов. В качестве процесса вы должны указать его имя, например zabbix_agentd (для Linux), zabbix_agentd.exe (для Windows).
- Тип информации — Числовой (целое положительное).
- Можно использовать и на Linux, и Windows.
- В качестве триггера можно указать 0, что будет означать отсутствие наблюдаемых процессов на сервере.

Если понравилась статья, подпишись на мой канал в VK или Telegram .