Сбор статистики Zimbra в Zabbix при помощи zmsoap
Постановка задачи
При помощи команды zmsoap
помимо прочего можно получить массу полезной информации о состоянии почтового сервера.
В данном примере будем передавать количество подключенных клиентов и количество сессий в Zabbix + будем строить график по количеству сессий.
Реализация
Для получения статистики будем использовать команду zmsoap -z -t admin DumpSessionsRequest
, полученные данные парсить и отправлять в заббикс через zabbix-sender.
Итак скрипт (/etc/zabbix/scripts/ZimbraStats.pl
):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #! /usr/bin/perl use strict; use XML::Simple; # yum install perl-XML-Simple use Data::Dumper; my $zabbix_sender = "/usr/bin/zabbix_sender"; my $zabbix_conf = "/etc/zabbix/zabbix_agentd.conf"; my $zabbix_key_prefix = "zimbra."; my $debug = 1; my $xml = new XML::Simple; # get data via soap-request my $xmldata = `/bin/su -c 'zmsoap -z -t admin DumpSessionsRequest' - zimbra`; my $data = $xml->XMLin($xmldata); &zabbix_send ('activeSessions', $data->{activeSessions}); &zabbix_send ('soapactiveAccounts', $data->{soap}{activeAccounts}); &zabbix_send ('soapactiveSessions', $data->{soap}{activeSessions}); &zabbix_send ('imapactiveAccounts', $data->{imap}{activeAccounts}); &zabbix_send ('imapactiveSessions', $data->{imap}{activeSessions}); sub zabbix_send { my $key=shift; my $value=shift; print "$zabbix_sender -c $zabbix_conf -k $zabbix_key_prefix$key -o $value\n" if $debug; system "$zabbix_sender -c $zabbix_conf -k $zabbix_key_prefix$key -o $value"; } |
Добавляем в cron:
*/1 * * * * root /etc/zabbix/scripts/ZimbraStats.pl > /dev/null 2>&1
Скрипт передает в zabbix следующие элементы данных (keys):
zimbra.activeSessions zimbra.soapactiveAccounts zimbra.soapactiveSessions zimbra.imapactiveAccounts zimbra.imapactiveSessions
Шаблон для zabbix: Template_App_Zimbra.xml
Результат
Элементы данных | График |