В процессе добавления на мониторинг 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).

В новом окне указываем: zbx-mem-aix1.png

  • name: MEM Total size - имя нашего элемента,
  • type: Zabbix agent - тип проверки, остается по умолчанию,
  • key: mem.total - здесь указывается ключ, по которому заббикс будет дергать скриптец. Из вспомогательных настроек, я указал Update interval - 5 часов, так как постоянно опрашивать эту метрику, нет смысла.

Также во вкладке - Tags, я указал тег - component: mem.

Создаем второй элемент, который который будет дергать значения по использованию памяти. zbx-mem-aix2.png Здесь используются аналогичные поля, изменения только в:

  • name: MEM Used size - имя нашего элемента,
  • key: mem.used - ключ, по которому заббикс будет дергать скриптец с аргументом --used.

Этот элемент данных уже значимый для нас, поэтому интервал обновления выставлен на каждые 5 минут. Во вкладке с тегами, также указал тег - component: mem.

Остаеться создать последний айтем, который будет вычислять свободное количество памяти. Создаем новый элемент данных, и выбираем тип айтема - Calculated: zbx-mem-aix3.png В полях name и key, по аналогии указываем значения.

В поле формулы вставляем - last(//mem.total) - last(//mem.used), тут понятно вычисляем разницу ранее созданных элементов. В конце указываем интервал (5мин), и тег.

Создадим еще один элемент данных, который будет высчитывать утилизацию памяти в процентах. Жмеем на создать айтем, тип айтема выбираем - Calculated. zbx-mem-aix4.png Указываем имя айтема, ключ айтема.

В поле формулы указываем - last(//mem.used) / last(//mem.total) * 100. В Units, нужно указать процент (%).

На последок создадим триггер, который будет срабатывать при достижении утилизации памяти в 98%. В шаблоне кликаем на вкладку - триггеры (Triggers). И жмем на создание нового триггера: zbx-mem-aix5.png В полях, указываем:

  • Имя триггера;
  • Severity (Уроверь проблемы) - на усмотрение;
  • Expression (Выражение триггера) - last(/AIX by Zabbix agent/mem.usageproc)>=98. (Добавляем тег, для удобства)

В дополнение мы можем в шаблоне создать отдельный график, и вынести его на дешбоард. zbx-mem-dash.png

Ссылка на гит-репозиторий с файлами: (gitlab)[https://gitlab.com/lckrspirit/zbx-monitoring-memory-usage-on-aix]