вторник, 5 ноября 2013 г.

Zabbix Отслеживание даты истечения сертификатов

Есть сеть на Windows, есть AD CS, который выдает сертификаты. Появилось желание отслеживать дату истечения срока сертификата на некоторых Windows серверах. В основном используется авто выдача\обновление, но кастомные сертификаты(например Exchange,WEB\Sharepoint,NPS,RD,Lync и т.д) приходится запрашивать вручную. Поначалу я вел список задач в Sharepoint\Outlook, но это неудобно, например, легко забыть поменять у задачи дату выполнения после обновления сертификата, да и вообще иногда я про него забывал. Уже был заббикс, который занимался мониторингом, поэтому было логично этот функционал поручить ему.



В заббикс агенте нету никакого функционала, который позволяет работать(или хотя бы просматривать) информацию по установленным сертификатам, поэтому делаться это будет простеньким скриптом на PoSh:

checkcert.ps1
param ($ThumbPrint)
$Cert = Get-Item cert:\LocalMachine\My\$ThumbPrint
$NotAfterDate = $Cert.NotAfter
$CurrentDate = Get-Date
$DaysLeft = $NotAfterDate - $CurrentDate
return $DaysLeft.Days

В качестве единственного аргумента принимается отпечаток сертификата, которые однозначно его идентифицирует. Далее, получаем объект сертификата, получаем дату его истечения, вычитаем из нее текущую дату и получаем количество дней, оставшихся до окончания срока действия, их и возвращаем.

Теперь, в конфигурационном файле Zabbix агента добавляем:
zabbix_agentd.conf
UserParameter=CheckCert[*],%systemroot%\system32\windowspowershell\v1.0\powershell.exe -noprofile -nologo c:\Zabbix\Plugins\CheckCert\checkcert.ps1 -ThumbPrint $1

Со стороны Zabbix сервера все просто:
Можно проверить, что команда:
zabbix_get -h x.x.x.x -k CheckCert[XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] 
вернет количество дней.

Далее все стандартно, создаем item у нужного сервера, вписываем название\ключ и т.д. и вешаем триггер(например, если осталось меньше 30 дней - слать аларм).

P.S. Я вешал itemы не на сами сервера, а для каждого сервера создал шаблон, в котором создавал нужные элементы.









1 комментарий:

  1. Приветствую, попробывал ваше решение, но не хочет работать(((
    Проверял через cmd:
    "C:\Zabbix\zabbix_agentd.exe" --config "C:\Zabbix\zabbix_agentd.conf" --print
    Ошибка:
    CheckCert[%systemroot%\system32\windowspowershell\v1.0\powershell.exe -noprofile
    -nologo c:\Zabbix\plugins\CheckCert\checkcert.ps1 -ThumbPrint ] [t|C:\Zabbix\pl
    ugins\CheckCert\checkcert.ps1 : Отсутствует аргумент для параметра
    "ThumbPrint". Укажите параметр типа "System.Object" и повторите попытку.
    строка:1 знак:54
    + c:\Zabbix\plugins\CheckCert\checkcert.ps1 -ThumbPrint <<<<
    + CategoryInfo : InvalidArgument: (:) [checkcert.ps1], ParameterB
    indingException
    + FullyQualifiedErrorId : MissingArgument,checkcert.ps1]


    Подскажите пожалуйста где что нужно подправить

    ОтветитьУдалить