Мониторинг загрузки CPU сервера под FreeBSD в Zabbix

Интересная петрушка, но для меня было неожиданностью что нету простого и однозначного рецепта по мониторингу загрузки CPU сервера под FreeBSD через SNMP. Максимум что удалось найти — догадки как это можно делать в принципе, но вот будет работать или нет — никто не гарантирует. Мдяяяяя……
Ну чтоже, очень неуверенно, но всеже заявляю что удалось настроить, в моем конкретном случае «вроде бы как» показывает более-менее честно.
Есть вот такая дока по zabbix, которая описывает принцип вычисления загрузки CPU в Linux/Solaris/AIX/HP-UX системах. Некоторые товарищи в инете утверждают что для FreeBSD подходит формула вычисления множителя для Linux. Поверим на слово и попробуем настроить, дальше посмотрим, совпадет ли с реальной нагрузкой или нет.
Для себя в заметку скопирую то что важно по данной теме — OID-ы для мониторинга загрузки CPU:

UCD-SNMP-MIB::ssCpuRawUser.0 -> Number of timeticks used by users's process (AIX, Solaris, Linux, HP-UX)
UCD-SNMP-MIB::ssCpuRawSystem.0 -> Number of timeticks used by system's process (AIX, Solaris, Linux, HP-UX)
UCD-SNMP-MIB::ssCpuRawIdle.0 -> Number of timeticks unused (AIX, Solaris, Linux, HP-UX)
UCD-SNMP-MIB::ssCpuRawWait.0-> Number of timeticks used by process waiting (AIX, Solaris, HP-UX)
UCD-SNMP-MIB::ssCpuRawNice.0-> Number of timeticks used by nice process (Linux, HP-UX)
UCD-SNMP-MIB::ssCpuRawKernel.0 -> Number of timeticks used by kernel process (AIX, Solaris, Linux, HP-UX)

Формулы для вычисления множителя:

Configure the item with an OID, chose a custom multiplier of :
- 1 * 100 / (delay between checks * number of timeticks per second * number of CPU) for Linux
- 1 * 100 * number of CPU / (delay between checks * number of timeticks per second) for HP-UX
- 1 * 100 / (delay between checks * number of timeticks per second) for AIX and Solaris
store 'Delta Simple Change'.

Другие данные необходимые для вычисления множителя:

To get the number of timeticks per second, use 'getconf CLK_TCK'. It's always 100 on hosts I've tested.
For example, with CLK_TCK=100 (Linux i386), check every 10 seconds, 2 CPU, the custom multiplier is 0.05.
For Linux, it's the logical number of CPU displayed by command 'top', not the physical number.

Если короче и по русски то:
number of CPU вычисляется командой:

top -P

Смотрим сколько CPU отображается вверху, в моем случае — 2
Количество «timeticks» в секунду смотрим командой:

getconf CLK_TCK

В моем случае — 128
Итак, множитель для FreeBSD нужно считать по формуле №1, тоесть по такой же как для Linux, я получил вот что:

1 * 100 / 60 * 128 * 2 = 100/15360 = 0.00651

Мониторить хочу ssCpuRawUser и ssCpuRawSystem, остальное обычно стремится к нулю, может попозже прикручу, если будет необходимость. Писать про элементы данных дольше чем показать скрин, поэтому вот:
SNMP_CPU_Monitoring_raw_system
SNMP_CPU_Monitoring_raw_user
Дальше создал график, как это сделать, думаю, любой розберется, вот что получилось:
SNMP_CPU_user_system_graphik
В результате сравнений реальной нагрузки на CPU сервера (смотрел top) и того что показывает график, могу сказать, что вполне соответствует действительности, так что можно пользовать!
Тестил банальным архивированием

tar cjvf /backup/usr_test.tbz /usr

Та полочка на графике какраз он и есть (зеленым цветом)
Enjoy!

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?