Проверка даты окончания сертификата для домена в консоли:
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 минут подтянутся данные в элементах данных.