Мониторинг срока действия сертификата веб-сайта в zabbix

Задача:
---------------------------------------------------------------Настроить мониторинг срока действия сертификата веб-сайта в zabbix.
Для сайта osBSD.com настроен Let’s Encrypt сертификат, который автоматически продлевается каждые три месяца при помощи ACME.
Статьи где я настраивал Let’s Encrypt на других систем:
- Устанавливаем и настраиваем certbot на FreeBSD
- Настраиваем Let’s Encrypt сертификат на OPNSense
- acme – настройка Let’s Encrypt на pfsense
И так есть сертификат, который будет действителен ещё более одного месяца.

Для мониторинга общих задач, не требующих быстрого реагирования, я обычно использую отдельный прокси заббикса на виртуальной машину в интернете или непосредственно сам zabbix сервер при небольшой сети или нагрузках.
Я буду использовать сервер забиска версии 5.2.3
[root@appliance zabbix]# zabbix_server -V zabbix_server (Zabbix) 5.2.3 Revision ae46273eae 21 December 2020, compilation time: Dec 21 2020 15:02:06 Copyright (C) 2020 Zabbix SIA License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it according to the license. There is NO WARRANTY, to the extent permitted by law. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/). Compiled with OpenSSL 1.1.1c FIPS 28 May 2019 Running with OpenSSL 1.1.1g FIPS 21 Apr 2020 [root@appliance zabbix]#
Авторизуемся на нём и проверяем версию агента
[root@appliance scripts]# zabbix_agentd -V zabbix_agentd (daemon) (Zabbix) 5.2.3 Revision ae46273eae 21 December 2020, compilation time: Dec 21 2020 15:02:38 Copyright (C) 2020 Zabbix SIA License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it according to the license. There is NO WARRANTY, to the extent permitted by law. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/). Compiled with OpenSSL 1.1.1c FIPS 28 May 2019 Running with OpenSSL 1.1.1g FIPS 21 Apr 2020 [root@appliance scripts]#
Начиная с версии 5 параметр EnableRemoteCommands устаревает , поэтому он больше не рекомендуется и в конечном итоге перестанет работать по мере обновления версии. Добавляем параметр AllowKey = system.run [*] и комментируем DenyKey. Но он может быть уже быть комментированным. Более подробно можно найти в официальной документации по запросу “ОГРАНИЧЕНИЕ ПРОВЕРОК АГЕНТА”

Пробуем узнать до какого числа действует сертификат
[root@appliance scripts]# echo | openssl s_client -servername osbsd.com -connect osbsd.com:443 2>/dev/null | openssl x509 -noout -dates | grep "notAfter" | cut -d'=' -f2 May 17 10:06:52 2021 GMT [root@appliance scripts]#
В папке с настройками заббикса я создал папку для скриптов
[root@appliance zabbix]# mkdir /etc/zabbix/scripts [root@appliance zabbix]# cd scripts/ [root@appliance scripts]# vi checkssl.sh
содержимое скрипта
data=`echo | openssl s_client -servername $1 -connect $1:${2:-443} 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'` ssldate=`date -d "${data}" '+%s'` nowdate=`date '+%s'` diff="$((${ssldate}-${nowdate}))" echo $((${diff}/24/3600))
Сохраняем скрипт и выдаём необходимые права
[root@appliance scripts]# chmod a+x checkssl.sh [root@appliance scripts]# chown -R zabbix. /etc/zabbix/scripts [root@appliance scripts]# systemctl restart zabbix-agent Job for zabbix-agent.service failed because the control process exited with error code. See "systemctl status zabbix-agent.service" and "journalctl -xe" for details. [root@appliance scripts]#
Проверяем работы скрипта. Можно указывать порт, если он отличен от стандартного.
[root@appliance scripts]# ./checkssl.sh osbsd.com 443 43 [root@appliance scripts]# ./checkssl.sh osbsd.com 43 [root@appliance scripts]#
Теперь открываем, веб-интерфейс забикса, переходим в настройки, выбираем заббикс сервер и добавляем item

Копируем ключь для проверки
system.run[/etc/zabbix/scripts/checkssl.sh osbsd.com 443]
Заполняем все согласно картинки ниже.

Если правильно настроили в последних данных можно проверить работу мониторинга.

Параметр “Update interval” равный 10 секунд был установлен для тестирование и настройки. Проверять срок действия сертификата достаточно один раз в день, устанавливаем 1d.

Для кириллических доменов необходимо использовать конвертер punycode. В сети их много, ищите что то подобное этому.

Если возникли ошибки. Попробуйте перенастроить конфиг
AllowKey=system.run[*] DenyKey=*
Должно получится

В завершении нам необходимо настроить тригер. Я уже описывал настройку в статье по мониторингу доступности сайта “Настройка триггеров для мониторинга сайта в Zabbix” Для мониторинга срока действия ssl сертификата в zabbix я бы уведомлял за месяц.
Создаём новый тригер “Create trigger”

Настройки тригера:

На этом всё. Если у вас не настроено оповещение, можно глянуть “Подключаем Telegram к Zabbix“
Ссылки под заголовком
“Статьи где я настраивал Let’s Encrypt на других систем:”
все пустые, кроме первой.
Спасибо исправил