Я пытаюсь контролировать около 60 серверов с помощью Zabbix 2.2 и SNMP. Я могу отслеживать множество значений, но я столкнулся с одной проблемой, связанной с идентификационным статусом процессов на серверах Linux.
Когда служба запущена и работает, я могу собирать данные через SNMP, используя OID:
HOST-RESOURCES-MIB::hrSWRunStatus
[
"index",
"HOST-RESOURCES-MIB::hrSWRunPath",
"name_of_the_service_or_process"
]
Проблема в том, что служба не работает. Zabbix этого не распознает и просто показывает последнее значение. Выявить сбой можно на графике, где линия даже не на уровне 1 или уровне 0. Она просто отсутствует (из-за отсутствия данных).
Есть ли возможность, как контролировать службы / процессы с помощью SNMP? Есть ли у кого-нибудь опыт в этом?
Большое спасибо ...
Так что я не стал вдаваться в подробности и решил что-то разработать сам. Это скрипт в bash примерно так
#!/bin/bash
# Arguments:
# hostname
# service name
# please review community string when you debug any issue with this script
SNMP_COMM_STRING="public"
HOST_NAME=$1
SERVICE_NAME=$2
case $SERVICE_NAME in
test)
echo "For testing purposes only ..."
echo $HOST_NAME
echo $SERVICE_NAME
;;
*)
RESULT=$(snmpwalk -v2c -c $SNMP_COMM_STRING $HOST_NAME HOST-RESOURCES-MIB::hrSWRunPath | grep $SERVICE_NAME )
#if the variable is null then the service is down (or the host is unreachable)
if [ -z "$RESULT" ]; then
echo 0
else
echo 1
fi
esac
exit 0
Создайте элемент в Zabbix WebUI со следующими параметрами:
Надеюсь это поможет. Любые другие комментарии приветствуются ... Гл.