01 февраля 2016

Мониторинг срока действия SSL сертификатов в Zabbix

Есть минимум 2 способа проверки даты протухания SSL сертификата. Через опрос веб сервера или через опрос файлов сертификатов на сервере где они лежат. Первым способом можно мониторить любые хосты, с любых серверов.

Я пошел вторым путем, т.к. в моем случае сертификатов меньше чем хостов и опрос непосредственно файлов сертификатов мне показался более надежным.





Добавлять новые сертификаты в Zabbix будет скрипт автообнаружения. Опрашивать будем не все лежащие на сервере сертификаты, а будем искать в файлах конфигураций веб-сервера(в моем случае Nginx) только используемые.
Создаем скрипт certdiscovery.sh в папке /etc/zabbix/scripts
#!/bin/bash
certs=`grep -v "ssl_certificate " /etc/nginx/conf.d/* |sed -n 's/.*ssl_certificate *//p' |sed 's/\.[^.]*$//;s/.*\///' |tr -d ";"`
  if [[ -n ${certs} ]]; then
    JSON="{ \"data\":["
    for CRT in ${certs}; do
        JSON=${JSON}"{ \"{#CERTIFICATE}\":\"${CRT}\"},"
    done
    JSON=${JSON}"]}"
   echo ${JSON}|sed '$s/,]}$/]}/'
  fi

И скрипт опроса сертификатов certdate.sh
#!/bin/bash
  
  CERT=/etc/nginx/cert/$1.crt
  
  end_date=`openssl x509 -noout -enddate -in $CERT | cut -d '=' -f 2` 
  
  if [ -n "$end_date" ]
  then
      end_date_seconds=`date '+%s' --date "$end_date"`
      now_seconds=`date '+%s'`
      echo "($end_date_seconds-$now_seconds)/86400" | bc
  fi

Делаем их исполняемыми
chmod +x /etc/zabbix/scripts/certdiscovery.sh
chmod +x /etc/zabbix/scripts/certdate.sh

В настройки zabbix агента добавляем
UserParameter=certdiscovery, /etc/zabbix/scripts/certdiscovery.sh
UserParameter=certdate[*],sudo /etc/zabbix/scripts/certdate.sh $1

Далее создаем автообноржение в zabbix


Прототип айтемов

И прототип триггера

Ваш дедушка/