Оригинал шаблона взят с zabbix-zimbra-monitoring от 10 May 2016
Далее был переведен и немного переделан
Скачать Данные о работе служб получаем из файла лога
tail -n 1000 /var/log/zimbra-stats.log | grep STATUS | cut -d ':' -f 10 | sort | uniq
Группа элементов данных: Статус сервисов Zimbra
Правила обнаружения
Имя: Zimbra service discovery
Тип: Zabbix agent
Ключ: zimbra.discoverya
Интервал обновления: 3600
Прототипы элементов данных
Имя: {#ZIMBRASERVICE} Статус
Тип: Zabbix agent
Ключ: zimbra.statusa[{#ZIMBRASERVICE}]
Тип информации: Числовой (целое положительное)
Интервал обновления: 120
Отображение значения: Service state
Группа: Статус сервисов Zimbra
Создать активированным: V
Прототипы триггеров
Имя: Служба Zimbra ({#ZIMBRASERVICE}) не работает на {HOSTNAME}
Важность: Средняя
Выражение: {Zimbra App andreynasonov:zimbra.statusa[{#ZIMBRASERVICE}].last(0)}=0
Скрипт zimbra_monitoring.sh
zimbra_monitoring.sh
Показать
#!/bin/bash
# Сравниваем что входные не пустые выполняем скрипт далее, -z строка "пустая", т.е. имеет нулевую длину, если пусто выходим
if [[ -z "$1" ]]; then
exit 1
fi
# Переменные
zimbra_log_file="/var/log/zimbra-stats.log"
zimbra_discovery="$(tail -n 1000 /var/log/zimbra-stats.log | grep STATUS | cut -d ':' -f 10 | sort | uniq)"
# При входном discovery обнаруживаем службы, входные имена служб если пустые входные данные выходим, если имя службы есть подставляем в команду, если служба Running передает 1 если нет 0
case "$1" in
discovery)
echo -n '{"data":['
for service in $zimbra_discovery; do
echo -n "{\"{#ZIMBRASERVICE}\": \"$service\"},";
done |sed -e 's:\},$:\}:'
echo -n ']}'
exit 0;
;;
*)
if [ $1 = "" ]; then
echo "ОШИБКА: требуется аргумент"
exit 1
fi
state="$(/usr/bin/tail -n 1000 $zimbra_log_file | grep STATUS | grep $1 | tail -1 | cut -d ':' -f 11|sed -e 's/^ *//')"
if [ "$state" != "Running" ]; then
echo 0
else
echo 1
fi
;;
esac
exit 0;
# Сравниваем что входные не пустые выполняем скрипт далее, -z строка "пустая", т.е. имеет нулевую длину, если пусто выходим
if [[ -z "$1" ]]; then
exit 1
fi
# Переменные
zimbra_log_file="/var/log/zimbra-stats.log"
zimbra_discovery="$(tail -n 1000 /var/log/zimbra-stats.log | grep STATUS | cut -d ':' -f 10 | sort | uniq)"
# При входном discovery обнаруживаем службы, входные имена служб если пустые входные данные выходим, если имя службы есть подставляем в команду, если служба Running передает 1 если нет 0
case "$1" in
discovery)
echo -n '{"data":['
for service in $zimbra_discovery; do
echo -n "{\"{#ZIMBRASERVICE}\": \"$service\"},";
done |sed -e 's:\},$:\}:'
echo -n ']}'
exit 0;
;;
*)
if [ $1 = "" ]; then
echo "ОШИБКА: требуется аргумент"
exit 1
fi
state="$(/usr/bin/tail -n 1000 $zimbra_log_file | grep STATUS | grep $1 | tail -1 | cut -d ':' -f 11|sed -e 's/^ *//')"
if [ "$state" != "Running" ]; then
echo 0
else
echo 1
fi
;;
esac
exit 0;
UserParameter=zimbra.statusa[*],/usr/local/bin/zimbra_monitoring.sh "$1"
UserParameter=zimbra.discoverya,/usr/local/bin/zimbra_monitoring.sh discovery
У автора данные команды лежат в userparameter_zimbra_monitoring.conf , а затем включите в файл конфигурации агента zabbix ("Include=/etc/zabbix/zabbix_agentd.d/").
после делаем рестарт агента
После цепляем шаблон к узлу все должно заработать.
Инструкция автора
Показать
# zabbix-zimbra-мониторинг
Мониторинг состояний служб Zimbra с помощью zabbix.
####файлы в репозитории:
1)zbx_zimbra_template.xml - шаблон для мониторинга zimbra. Импорт на сервере zabbix.
2)zabbix-read-logs.te - модуль для selinux (если включен режим selinux). Разрешить агенту zabbix читать файлы журнала zimbra. Если заббикс агент работает от root пункт можно поропустить
Установите с помощью команды
"checkmodule -M -m -o zabbix-read-logs.mod zabbix-read-logs.te && semodule_package -m zabbix-read-logs.mod -o zabbix-read-logs.pp && semodule -i zabbix-read-logs.pp"
3)userparameter_zimbra_monitoring.conf - Конфигурация с настройками пользовательских параметров.
Поместите его в каталог /etc/zabbix/zabbix_agentd.d/ (или что-то в этом роде), а затем включите в файл конфигурации агента zabbix ("Include=/etc/zabbix/zabbix_agentd.d/").
Или копируем скрипт zimbra_monitoring.sh в /etc/zabbix/scripts/ (возможно нужно будет дать права на выполнение chmod 777 zimbra_monitoring.sh)
прописать в конфигурации заббикс агента для пути со скриптом /etc/zabbix/scripts/
UserParameter=zimbra.statusa[*],/etc/zabbix/scripts/zimbra_monitoring.sh "$1"
UserParameter=zimbra.discoverya,/etc/zabbix/scripts/zimbra_monitoring.sh discovery
После выполнить перезапуск заббикс агента
4)zimbra_monitoring.sh - сценарий мониторинга. Поместите в каталог скриптов мониторинга zabbix (в моем случае это "/etc/zabbix/scripts/")
Мониторинг состояний служб Zimbra с помощью zabbix.
####файлы в репозитории:
1)zbx_zimbra_template.xml - шаблон для мониторинга zimbra. Импорт на сервере zabbix.
2)zabbix-read-logs.te - модуль для selinux (если включен режим selinux). Разрешить агенту zabbix читать файлы журнала zimbra. Если заббикс агент работает от root пункт можно поропустить
Установите с помощью команды
"checkmodule -M -m -o zabbix-read-logs.mod zabbix-read-logs.te && semodule_package -m zabbix-read-logs.mod -o zabbix-read-logs.pp && semodule -i zabbix-read-logs.pp"
3)userparameter_zimbra_monitoring.conf - Конфигурация с настройками пользовательских параметров.
Поместите его в каталог /etc/zabbix/zabbix_agentd.d/ (или что-то в этом роде), а затем включите в файл конфигурации агента zabbix ("Include=/etc/zabbix/zabbix_agentd.d/").
Или копируем скрипт zimbra_monitoring.sh в /etc/zabbix/scripts/ (возможно нужно будет дать права на выполнение chmod 777 zimbra_monitoring.sh)
прописать в конфигурации заббикс агента для пути со скриптом /etc/zabbix/scripts/
UserParameter=zimbra.statusa[*],/etc/zabbix/scripts/zimbra_monitoring.sh "$1"
UserParameter=zimbra.discoverya,/etc/zabbix/scripts/zimbra_monitoring.sh discovery
После выполнить перезапуск заббикс агента
4)zimbra_monitoring.sh - сценарий мониторинга. Поместите в каталог скриптов мониторинга zabbix (в моем случае это "/etc/zabbix/scripts/")
Команды проверки
Показать
tail -n 1000 /var/log/zimbra-stats.log | grep STATUS | cut -d ':' -f 10 | sort | uniq
Ответ
amavis
antispam
antivirus
cbpolicyd
ldap
logger
mailbox
memcached
mta
opendkim
service
snmp
stats
zimbra
zimbraAdmin
zimlet
zmconfigd
su - zimbra -c "/opt/zimbra/bin/zmcontrol status"| grep -v ^Host | awk '{$(NF--)=""; print}' | sed 's/^/\t{ \"{#ZIMBRASERVICE}\":\"/' | sed 's/\ $/\" },/'
su - zimbra -c "/opt/zimbra/bin/zmcontrol status"
Host csv35.ru
amavis Running
antispam Running
antivirus Running
cbpolicyd Running
ldap Running
logger Running
mailbox Running
memcached Running
mta Running
opendkim Running
service webapp Running
snmp Running
stats Running
zimbra webapp Running
zimbraAdmin webapp Running
zimlet webapp Running
zmconfigd Running+
Через скрипт
/etc/zabbix/scripts/zimbra_monitoring.sh discovery
Ответ
{"data":[{"{#ZIMBRASERVICE}": "amavis"},{"{#ZIMBRASERVICE}": "antispam"},{"{#ZIMBRASERVICE}": "antivirus"},{"{#ZIMBRASERVICE}": "cbpolicyd"},{"{#ZIMBRASERVICE}": "ldap"},{"{#ZIMBRASERVICE}": "logger"},{"{#ZIMBRASERVICE}": "mailbox"},{"{#ZIMBRASERVICE}": "memcached"},{"{#ZIMBRASERVICE}": "mta"},{"{#ZIMBRASERVICE}": "opendkim"},{"{#ZIMBRASERVICE}": "service"},{"{#ZIMBRASERVICE}": "snmp"},{"{#ZIMBRASERVICE}": "stats"},{"{#ZIMBRASERVICE}": "zimbra"},{"{#ZIMBRASERVICE}": "zimbraAdmin"},{"{#ZIMBRASERVICE}": "zimlet"},{"{#ZIMBRASERVICE}": "zmconfigd"}]}root@csv35:/etc/zabbix/scripts# /etc/zabbix/scripts/zimbra_monitoring.sh
Статутс служб
/usr/bin/tail -n 1000 /var/log/zimbra-stats.log | grep STATUS | grep Имя службы | tail -1 | cut -d ':' -f 11|sed -e 's/^ *//'
Пример zmconfigd
/usr/bin/tail -n 1000 /var/log/zimbra-stats.log | grep STATUS | grep zmconfigd | tail -1 | cut -d ':' -f 11|sed -e 's/^ *//'
Ответ Running
/etc/zabbix/scripts/zimbra_monitoring.sh zmconfigd
Ответ 1
Ответ
amavis
antispam
antivirus
cbpolicyd
ldap
logger
mailbox
memcached
mta
opendkim
service
snmp
stats
zimbra
zimbraAdmin
zimlet
zmconfigd
su - zimbra -c "/opt/zimbra/bin/zmcontrol status"| grep -v ^Host | awk '{$(NF--)=""; print}' | sed 's/^/\t{ \"{#ZIMBRASERVICE}\":\"/' | sed 's/\ $/\" },/'
su - zimbra -c "/opt/zimbra/bin/zmcontrol status"
Host csv35.ru
amavis Running
antispam Running
antivirus Running
cbpolicyd Running
ldap Running
logger Running
mailbox Running
memcached Running
mta Running
opendkim Running
service webapp Running
snmp Running
stats Running
zimbra webapp Running
zimbraAdmin webapp Running
zimlet webapp Running
zmconfigd Running+
Через скрипт
/etc/zabbix/scripts/zimbra_monitoring.sh discovery
Ответ
{"data":[{"{#ZIMBRASERVICE}": "amavis"},{"{#ZIMBRASERVICE}": "antispam"},{"{#ZIMBRASERVICE}": "antivirus"},{"{#ZIMBRASERVICE}": "cbpolicyd"},{"{#ZIMBRASERVICE}": "ldap"},{"{#ZIMBRASERVICE}": "logger"},{"{#ZIMBRASERVICE}": "mailbox"},{"{#ZIMBRASERVICE}": "memcached"},{"{#ZIMBRASERVICE}": "mta"},{"{#ZIMBRASERVICE}": "opendkim"},{"{#ZIMBRASERVICE}": "service"},{"{#ZIMBRASERVICE}": "snmp"},{"{#ZIMBRASERVICE}": "stats"},{"{#ZIMBRASERVICE}": "zimbra"},{"{#ZIMBRASERVICE}": "zimbraAdmin"},{"{#ZIMBRASERVICE}": "zimlet"},{"{#ZIMBRASERVICE}": "zmconfigd"}]}root@csv35:/etc/zabbix/scripts# /etc/zabbix/scripts/zimbra_monitoring.sh
Статутс служб
/usr/bin/tail -n 1000 /var/log/zimbra-stats.log | grep STATUS | grep Имя службы | tail -1 | cut -d ':' -f 11|sed -e 's/^ *//'
Пример zmconfigd
/usr/bin/tail -n 1000 /var/log/zimbra-stats.log | grep STATUS | grep zmconfigd | tail -1 | cut -d ':' -f 11|sed -e 's/^ *//'
Ответ Running
/etc/zabbix/scripts/zimbra_monitoring.sh zmconfigd
Ответ 1