====== Мониторинг срока действия SSL сертификат для сайтов ======
Мониторинг сертификатов можно привязать к любому linux хосту, я использую zabbix-server.\\
Для удобства, использую узел только для мониторинга SSL, который является копией zabbix-server'а с единственным шаблоном, SSL.
* Создать файл ssl_discovery.sh по пути /etc/zabbix со следующим содержимым:
#!/bin/bash
DOMAINS_FILE="/etc/zabbix/ssl_domain.txt"
echo "{"
echo " \"data\": ["
first=1
while IFS= read -r line; do
if [ -n "$line" ]; then
if [ $first -eq 0 ]; then
echo ","
fi
echo " { \"{#DOMAIN}\": \"$line\" }"
first=0
fi
done < "$DOMAINS_FILE"
echo " ]"
echo "}"
* Сделать исполняемым.
* Создать файл ssl_domain.txt по пути /etc/zabbix
* Выдать права на файл ssl_domain.txt и ssl_discovery.sh пользователю zabbix
* Добавить в zabbix_agentd.conf строки:
UserParameter=ssl.discovery,/etc/zabbix/ssl_discovery.sh
UserParameter=site.time[*],openssl s_client -servername $1 -connect $1:443 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d'=' -f2 | { read gmt ; echo $(( ($(date -d "$gmt" +%s) - $(date +%s)) / 86400 )) ; }
* Перезапустить zabbix-agentd
* Создать шаблон "SSL"
* Добавить Правило обнаружения:
- Имя **Estimate-time SSL**
- Ключ **ssl.discovery**
- Интервал обновления 1d
- Остальное, на своё усмотрение.
* Создать прототип элемента данных
- Имя **{#DOMAIN} SSL Estimate**
- Ключ **site.time[{#DOMAIN}]**
- Интервал обновления 1d
- Остальное, на своё усмотрение.