Мониторинг ssl-сертификата в Zabbix

Проверка даты окончания сертификата для домена в консоли:

openssl s_client -connect rmn-lux.ru:443 -servername serveradmin.ru -tlsextdebug 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d'=' -f2

Далее скрипты по пути /etc/zabbix/scripts
1) Файл со списком доменов, каждый домен на новой строке

/etc/zabbix/scripts/ssl_certs.txt:

rmn-lux.ru
another-domen.ru

2) Файл автообнаружения доменов из файла ssl_certs.txt

/etc/zabbix/scripts/discover_ssl.sh

JSON=$(for i in `cat /etc/zabbix/scripts/ssl_certs.txt`; do printf "{\"{#DOMAIN_HTTPS}\":\"$i\"},"; done | sed 's/^\(.*\).$/\1/')
printf "{\"data\":["
printf "$JSON"
printf "]}"

3) Собственно, сама проверка и вывод кол-ва дней, сколько осталось:

/etc/zabbix/scripts/check_ssl.sh

#!/bin/bash

SERVER=$1
TIMEOUT=25
RETVAL=0
TIMESTAMP=`echo | date`
EXPIRE_DATE=`echo | openssl s_client -connect $SERVER:443 -servername $SERVER -tlsextdebug 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d'=' -f2`
EXPIRE_SECS=`date -d "${EXPIRE_DATE}" +%s`
EXPIRE_TIME=$(( ${EXPIRE_SECS} - `date +%s` ))
if test $EXPIRE_TIME -lt 0
then
RETVAL=0
else
RETVAL=$(( ${EXPIRE_TIME} / 24 / 3600 ))
fi

echo ${RETVAL}

Далее всем скриптам chmod +x и chown -R zabbix:zabbix /etc/zabbix/scripts. И прописать в конфиг zabbix агента:

/etc/zabbix/zabbix_agentd.d/ssl-cert.conf

UserParameter=ssl_https.discovery[*],/etc/zabbix/scripts/discover_ssl.sh
UserParameter=ssl_https.expire[*],/etc/zabbix/scripts/check_ssl.sh $1

Далее рестарт агента и чек ручками, что значения есть и всё работает:

# zabbix_agentd -t ssl_https.discovery
ssl_https.discovery [t|{"data":[{"{#DOMAIN_HTTPS}":"rmn-lux.ru"}]}]

# zabbix_agentd -t ssl_https.expire[serveradmin.ru]
ssl_https.expire[rmn-lux.ru] [t|66]

Далее в заббикс импортируем шаблон и в правилах автообнаружения шаблона меняем тип на Zabbix агент вместо Zabbix агент (активный), если в конфиге агента не включены активные проверки. Аналогичные изменения в шаблоне в разделе Прототип элементов данных – меняем на Zabbix агент.

В шаблоне в прототипе элементов данных также активировать новые создаваемые значения, чтобы получать данные и видеть их:

Через 5-7 минут подтянутся данные в элементах данных.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: