В процессе добавления на мониторинг aix серверов в zabbix, заметил что в стандартном шаблоне нету метрик собирающих данные по памяти. Сервера мониторятся через агентов, поправить это будет не сложно. Для начала напишем скриптец, который дергает нужные данные, и добавим скрипт на выполнение заббикс-агенту.
Сам сниппет:
#!/bin/bash
totalmem=`lsattr -El sys0 -a realmem | awk {'print $2'}`
usedmem=`svmon -G -O unit=KB | head -4 | tail -1 | awk {'print $3'}`
freemem=`expr $totalmem - $usedmem`
case $1 in
"--free")
echo "$freemem"
;;
"--used")
echo "$usedmem"
;;
"--total")
echo "$totalmem"
;;
*)
echo "Flags:"
echo " --free - Free mem"
echo " --used - Used mem"
echo " --total - Total mem"
esac
- В переменную
totalmem
, записывается результат выполнения команды (lsattr). Командаlsattr
отобразит все атрибуты определенного объекта или устройства системы, в нашем случаи мы дергаем все аттрибуты устройстваsys0
, ключ-a
отобразит определенный аттрибут, мы берем значение аттрибута -realmem
. - В переменную
usedmem
, также указывается результат выполнение команды svmon. Командаsvmon
, отобразит информацию о текущем состоянии памяти. - В значение переменной
freemem
, вычесляется из переменных$totalmem
и$usedmem
. (Кстати говоря, эту метрику можно сделать средствами заббикса) Далее идет условный операторcase
, в котором перечисляются ключи. В зависимости от ключа, будет пролистено значение одной из трех переменных.
Сам скрипт можно разместить в домашнем каталоге пользователя - zabbix, обычно это - /var/lib/zabbix
или /home/zabbix
:
$ mv meminfo.sh /home/zabbix
Теперь в конфигурациях заббикс-агента, нужно указать пользовательские параметры (UserParameters), мы прописываем:
UserParameter=mem.total, /usr/bin/bash /home/zabbix/meminfo.sh --total
UserParameter=mem.used, /usr/bin/bash /home/zabbix/meminfo.sh --used
Здесь мы указываем, что при использовании ключа - mem.total
, выполнить скрипт - meminfo.sh
с аргументом --total
. Ключ mem.used
аналогично выполнит скрипт, но с другим аргументом - --used
.
Сохраняемся и перезапускаем заббикс агента.
Последующие настройки воспроизведем уже ui заббикса. В заббиксе, находим шаблон - AIX by Zabbix agent
, и переходим в элементы данных (items), жмем создать новый элемент данных (Create item).
В новом окне указываем:
name: MEM Total size
- имя нашего элемента,type: Zabbix agent
- тип проверки, остается по умолчанию,key: mem.total
- здесь указывается ключ, по которому заббикс будет дергать скриптец. Из вспомогательных настроек, я указалUpdate interval
- 5 часов, так как постоянно опрашивать эту метрику, нет смысла.
Также во вкладке - Tags, я указал тег - component: mem
.
Создаем второй элемент, который который будет дергать значения по использованию памяти. Здесь используются аналогичные поля, изменения только в:
name: MEM Used size
- имя нашего элемента,key: mem.used
- ключ, по которому заббикс будет дергать скриптец с аргументом--used
.
Этот элемент данных уже значимый для нас, поэтому интервал обновления выставлен на каждые 5 минут. Во вкладке с тегами, также указал тег - component: mem
.
Остаеться создать последний айтем, который будет вычислять свободное количество памяти.
Создаем новый элемент данных, и выбираем тип айтема - Calculated
:
В полях name
и key
, по аналогии указываем значения.
В поле формулы вставляем - last(//mem.total) - last(//mem.used)
, тут понятно вычисляем разницу ранее созданных элементов.
В конце указываем интервал (5мин), и тег.
Создадим еще один элемент данных, который будет высчитывать утилизацию памяти в процентах.
Жмеем на создать айтем, тип айтема выбираем - Calculated
.
Указываем имя айтема, ключ айтема.
В поле формулы указываем - last(//mem.used) / last(//mem.total) * 100
. В Units
, нужно указать процент (%).
На последок создадим триггер, который будет срабатывать при достижении утилизации памяти в 98%. В шаблоне кликаем на вкладку - триггеры (Triggers). И жмем на создание нового триггера: В полях, указываем:
- Имя триггера;
- Severity (Уроверь проблемы) - на усмотрение;
- Expression (Выражение триггера) -
last(/AIX by Zabbix agent/mem.usageproc)>=98
. (Добавляем тег, для удобства)
В дополнение мы можем в шаблоне создать отдельный график, и вынести его на дешбоард.
Ссылка на гит-репозиторий с файлами: (gitlab)[https://gitlab.com/lckrspirit/zbx-monitoring-memory-usage-on-aix]