Инструменты пользователя

Инструменты сайта


linux:programs:zabbix:ssl-monitor

Мониторинг срока действия 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»
    • Добавить Правило обнаружения:
  1. Имя Estimate-time SSL
  2. Ключ ssl.discovery
  3. Интервал обновления 1d
  4. Остальное, на своё усмотрение.
  • Создать прототип элемента данных
  1. Имя {#DOMAIN} SSL Estimate
  2. Ключ site.time[{#DOMAIN}]
  3. Интервал обновления 1d
  4. Остальное, на своё усмотрение.
linux/programs/zabbix/ssl-monitor.txt · Последнее изменение: 2025/06/03 18:46 — admin