Pull to refresh

Даем почву для авто обнаружения пользователей Linux для Zabbix

Reading time2 min
Views5.1K

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

Система мониторинга Zabbix обладает возможностью авто обнаружения различных объектов, например из коробки система умеет обнаруживать файловые системы: vfs.fs.get или сетевые интерфейсы: net.if.discovery.

Но что делать если нужно обнаруживать те объекты для которых разработчик не заложил инструмента?

Рассмотрим задачу.

Требуется наладить мониторинг потребляемых ресурсов памяти и процессора каждым пользователем системы Linux в отдельности.

Мониторить по отдельно взятому пользователю не сложно, - разработчик Zabbix дает нам инструмент для взятия метрики по процессору:

proc.cpu.util[,USER]

Так ж по памяти:

proc.mem[,USER]

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

Перейдем к самому обнаружению пользователей LLD (Low Level Discovery)

Примем за данность что список пользователей содержится в файле:

/etc/passwd

Но там текст совсем не подходящий для Zabbix LLD. Для начала выведем только пользователей:

awk -F: '{print $1}' /etc/passwd

И получим просто список пользователей.

Для работы Zabbix LLD необходимо подать данные в JSON формате. Для обертки простого списка в JSON используем следующее:

echo "["|tr -d '\r\n'; awk -F: ' {print "{\"{#USER}\":" "\""$1"\"}," }' /etc/passwd | tr -d '\r\n'| sed 's/.$//'; echo "]" "]"

Если нам потребуется взять пользователей только определенной группы, например номер 1005 то скрипт придется немного изменить:

echo "["|tr -d '\r\n'; awk -F: ' /1005/ {print "{\"{#USER}\":" "\""$1"\"}," }' /etc/passwd | tr -d '\r\n'| sed 's/.$//'; echo "]" "]"

В обнаружение остается добавить нужные прототипы метрик, графиков основываясь на макросе {#USER}.

Пользуйтесь :-)

Подводя итог отмечу, что такой подход можно применить для Zabbix LLD практически любой сущности в Linux вселенной.

Tags:
Hubs:
Total votes 6: ↑5 and ↓1+4
Comments13

Articles