Заметил, что хосты очень плохо мониторятся через IPMI, никак не мог понять в чём дело. И вот сегодня звёзды сложились так, что удалось подметить некоторую закономерность в поведении хостов.
С помощью ipmitool получаем значения сенсоров одного из хостов. Получение информации о сенсорах IPMI с помощью ipmitool. В примере ниже это my_server_dns_name, не суть важно:
root@zabbix:~# ipmitool -I lanplus -H my_server_dns_name -U my_user -P my_password sensor list
***
FAN1 | 3200.000 | RPM | ok | 300.000 | 500.000 | 700.000 | 25300.000 | 25400.000 | 25500.000
FAN2 | 3100.000 | RPM | ok | 300.000 | 500.000 | 700.000 | 25300.000 | 25400.000 | 25500.000
FAN3 | 3100.000 | RPM | ok | 300.000 | 500.000 | 700.000 | 25300.000 | 25400.000 | 25500.000
FAN4 | na | | na | na | na | na | na | na | na
FAN5 | 3200.000 | RPM | ok | 300.000 | 500.000 | 700.000 | 25300.000 | 25400.000 | 25500.000
FAN6 | 3100.000 | RPM | ok | 300.000 | 500.000 | 700.000 | 25300.000 | 25400.000 | 25500.000
***
В качестве примера я оставил только сенсоры вентиляторов.
Если присмотреться, то четвёртого вентилятора нет, — это первый пункт, который следует взять на заметку. Вентилятора и правда нет, вот такой сервер. В шаблоне заббикса, который используется для этого хоста, имеются все сенсоры вентиляторов с первого по шестой и все в статусе enabled, — это второй пункт для заметки.
Третий пункт: в заббиксе относительно нормально отображаются значения первых трёх вентиляторов, хотя график всё равно рваный. А пятый и шестой почти не отображаются или не отображаются вовсе. Думал, что IPMI сервис плохо работает на серверах, но нет.
Случайно заметил в логах zabbix-сервера такую картину:
1174:20180816 IPMI agent item "ipmi.supermicro.fan4" on host "server1" failed: first network error, wait for 15 seconds
1174:20180816 IPMI agent item "ipmi.supermicro.fan4" on host "server2" failed: first network error, wait for 15 seconds
1174:20180816 resuming IPMI agent checks on host "server55": connection restored
1174:20180816 resuming IPMI agent checks on host "server66": connection restored
1174:20180816 IPMI agent item "ipmi.supermicro.fan4" on host "server3" failed: first network error, wait for 15 seconds
Это четвёртый пункт. Странность заключается в том, что сенсор один и тот же, а сервера разные.
Если обобщить все странности, то получается следующее:
- Zabbix-сервер имеет таблицу IPMI сенсоров и бежит циклом по этим сенсорам в алфавитном порядке.
- Берет FAN1, получает значение этого сенсора для каждого хоста, которому это значение нужно получить.
- Пишет полученные значения, потом берет следующий сенсор FAN2, потом FAN3, пока всё в порядке.
- Доходит до сенсора в состоянии "na" - у нас это FAN 4 - не находит его на server1 и пишет "first network error, wait for 15 seconds".
- И получение IPMI сенсоров для server1 останавливается на 15 секунд, для всех IPMI сенсоров!
- Дальше zabbix-сервер пытается найти FAN4 у server2, если его не находит, то " wait for 15 seconds".
- Пробегает по всем остальным хостам, уже не важно находит он у них FAN4 или нет, хосты заканчиваются.
- Zabbix-сервер берет FAN5, бежит по серверам, доходит до server1. А хост-то всё ещё " wait for 15 seconds", 15 секунд не прошли, заббикс пропускает этот сервер.
- В итоге для server1 значение FAN5 не записывается, хотя сенсор прекрасно работает.
- С FAN6 та же история, если 15 секунд не прошли, то значение не записывается.
- Потом 15 секунд простоя истекают, хост дальше нормально мониторится.
В результате имеем дырки не меньше 15 секунд в значениях у работающих IPMI сенсоров, рваные графики и даже вовсе пустые значения.
Что делать? Избавляться от "na" сенсоров. Проанализируем наши шаблоны. Если все сервера внутри шаблона имеют одинаковую конфигурацию, то ставим все сенсоры "na" в disabled. Если сервера имеют разную конфигурацию (у кого-то сенсор работает, у кого-то нет), то ставим все сенсоры "na" в disabled уже на каждом конкретном хосте.
Сделал так в рамках одного из шаблонов, — провалы прекратились, полёт нормальный.