Доброго времени суток! Подскажите пожалуйста, можно ли мониторить сайт на предмет срока действия SSL без Агента и скриптов, просто настроив на Zabbix сервере?
Ad Widget
Collapse
Возможность мониторить срок действия SSL без Агента
Collapse
X
-
Tags: None
-
Без проблем - за основу взята статья отсюда: https://serveradmin.ru/monitoring-sr...kata-v-zabbix/ Есть lld по списку (с формированием честного json). Мои мелкие доработки свелись к возможности мониторить сертификат по любому порту (а не только 443) - в список мониторируемых хостов вставляю host: port (без пробела). Проверка - два раза в сутки. Навешан триггер - предупреждение, если осталось < 14 дней. -
Не вариант, очень большой кластер серверов, Устанавливать Agent 2, писать скрипты для Agent 1, будет очень проблематично.Comment
-
Не понял: в чём проблема со скриптами? Их же не надо на каждый сервер отдельно внедрять. Один раз, на zabbix-сервере инициируются два пользовательских скрипта - обнаружения/проверки. Добавляете (один раз) имя:порт в текстовый файлик для каждого хоста, который собираетесь мониторить на предмет сертификата - всё, собственно.
Вот реальный пример:Code:=== /etc/zabbix/scripts/disc_ssl_https.sh: #!/bin/bash JSON=$(for i in `cat /etc/zabbix/scripts/ssl_https.txt`; do printf "{\"{#DOMAIN_HTTPS}\":\"$i\"},"; done | sed 's/^\(.*\).$/\1/') printf "{\"data\":[" printf "$JSON" printf "]}" === /etc/zabbix/scripts/check_ssl_https.sh #!/bin/bash SERVER=$1 SERVERNAME=$(cut -d':' -f1 <<<"$SERVER") TIMESTAMP=`echo | date` EXPIRE_DATE=`echo | openssl s_client -connect $SERVER -servername $SERVERNAME -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 [ $EXPIRE_TIME -lt 0 ]; then RETVAL=0 else RETVAL=$(( ${EXPIRE_TIME} / 24 / 3600 )) fi echo ${RETVAL} === /etc/zabbix/scripts/ssl_https.txt host1.xxx.zzz:443 host2.xxx.zzz:993 host3.xxx.zzz:465 ... === /etc/zabbix/zabbix_agentd.d/userparameter_ssl.conf UserParameter=ssl_https.discovery[*],/etc/zabbix/scripts/disc_ssl_https.sh UserParameter=ssl_https.expire[*],/etc/zabbix/scripts/check_ssl_https.sh $1 === Создаём правило обнаружения (один раз), в нём прототип ЭД с именем "Certificate $1 expire", с ключом: ssl_https.expire[{#DOMAIN_HTTPS}], прототип триггера с именем "Certificate {#DOMAIN_HTTPS} expire less then 14 days", с выражением "{SSL Sert Expiration:ssl_https.expire[{#DOMAIN_HTTPS}].last()}<14"
Вроде ничего не забыл. В /etc/zabbix/scripts/ssl_https.txt заносим имена хостов, на которых хотим проверять сертификаты. Через max интервал обнаружения создадутся соотв. ЭД. Для которых раз в 12 часов запускается /etc/zabbix/scripts/check_ssl_https.sh. Понятные особенности такой реализации: если в момент проверки хост был недоступен, вернётся 0 => сработает триггер. Который успокоится во время следующей проверки (через 12 часов), если сертификат действительно не просрочен (> 14 дней до expire).
У меня эта схема работает уже много лет, проверка делается по нескольким десяткам SSL/TLS-хостов.
👍 1Comment
-
Не, проблем никаких нет, список серверов, у которых надо мониторить сертификат можно даже не в файле хранить, а в макросе, или в предобработке, или дискаверинг типа "Скрипт".Не понял: в чём проблема со скриптами? Их же не надо на каждый сервер отдельно внедрять. Один раз, на zabbix-сервере инициируются два пользовательских скрипта - обнаружения/проверки. Добавляете (один раз) имя:порт в текстовый файлик для каждого хоста, который собираетесь мониторить на предмет сертификата - всё, собственно.
Такое решение - отличное, если от сервера есть доступы по всем SSL портам к удаленным хостам. А вот это, зачастую бывает очень проблематично. Поэтому можно рассматривать разные варианты.
Несомненный плюс мониторинга с сервера - то, что проверяется не просто сертификат, а еще и его доступность, доступность канала, маршрутизации и т.д.
Comment
-
-
Первоначальный вопрос был "без агента". :-)И никаких внешних скриптов. krnl.fun
hdstreamz apk
Comment
Comment