Мониторинг баз Exchange. Zabbix+PowerShell

Задача мониторинга состояния баз Exchange оказалась не такой уж простой. Из коробки Zabbix мониторить базы не может, придется его этому научить.

Получить статус баз мы можем всего одной командой PowerShell:

Get-MailboxDatabaseCopyStatus -Identity *

Эту команду можно выполнить на любом из серверов Exchange и она вернет подробный статус всех баз. Тут нас интересует примонтирована ли база, величина очереди и состояние индекса базы.

Теперь нужно сделать так, чтобы Zabbix уведомил нас если с какой-то из баз что-то не так.

  1. Создадим пользовательский ключ данных в Zabbix агенте на Exchange сервере. Просто дописываем в конфиг строку:
UserParameter=DB_status,PowerShell.exe -nologo "C:\scripts\DB_status_tst.ps1"

Теперь при запросе Заббиксом ключа данных DB_status будет выполняться скрипт который лежит в папке «C:\scripts\» и имеет имя «DB_status_tst.ps1».

2. Скрипт в свою очередь должен отдать нас статус баз. Чтобы не усложнять скрипт я решил что в случае когда все хорошо скрипт будет отдавать нам «ОК», если с какой-то базой что-то не так, то скрипт будет отдавать в чем проблема и с какой базой. Например если у базы DB1 длинная очередь — скрипт отдаст нам «queue DB1». А теперь сам скрипт:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 #Подключаем модуль 
$dbs = Get-MailboxDatabaseCopyStatus -Identity * #Получаем статус баз
$nok = $NULL
foreach ($db in $dbs) #Перебираем базы
{
    $status = $db.status
    $name = $db.DatabaseName
    $queue = $db.CopyQueueLength
    $index = $db.ContentIndexState
    if ($status -ne "Healthy" -and $status -ne "Mounted") #Если статус базы не Healthy и не Mounted
    {
        $nok += "not ok "+ $name + "; "
    }
    if ($queue -gt 100) #Если длинна очереди больше 100
    {
        $nok += "queue "+ $name + "; "
    }
    if ($index -ne "Healthy") #Если индекс не исправен
    {
        $nok += "index "+ $name + "; "
    }
}
#Возвращаем результат
if ($nok -ne $NULL)
{
    Write-Host $nok
}
else
{
    Write-Host "OK"
}

3. Создаем элемент данных в Zabbix

4.Создаем триггер

Обращаем внимание на поле Description. В случае срабатывания триггера в описании будет то, что отдал наш скрипт. Т.е. имя проблемной базы.

Один ответ к «Мониторинг баз Exchange. Zabbix+PowerShell»

Добавить комментарий для Dimque Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *