Перейти к основному содержимому

Мониторинг SSL сертификатов в Zabbix

·843 слов·4 минут
гайды
Юрий Семеньков
Автор
Юрий Семеньков
DevOps, tech, geek, mentor
Оглавление

Руководство по настройке мониторинга SSL сертфикатов в Zabbix с помощью Website certificate by Zabbix agent 2 без скриптов. Создание виджета для дашборда

Как можно вообще пропустить дату перевыпуска SSL-сертификата? Пфф, да вообще легко.

Если ты пользуешься certbot, то скорее всего он продляет сертификат автоматически. Но вдруг сломается? Ну или ты забыл при очередном ручном продлении сертификата поставить себе напоминалку.

Короче, нужно настроить мониторинг. В этой статье я покажу как настроить мониторинг SSL сертификатов в Zabbix. А в другой статье я покажу вариант для Prometheus и Grafana. (здесь будет ссылка, когда выйдет вторая статья)

План и схема мониторинга
#

План:

  1. Установить в Zabbix нужный шаблон.
  2. На любой из хостов, которые у нас уже мониторятся установить Zabbix Agent 2.

Схема мониторинга:

  • У нас есть Host в Zabbix-е, к которому прикреплен Template.
  • В Host указан адрес реального хоста, с установленным Zabbix Agent 2.
  • В Template указан адрес веб-сайта, на котором нужно мониторить SSL сертификат.
  • Zabbix Agent 2 с одного из хостов собирает данные об этом сертификате.

Установить Template
#

Есть вероятность, что у тебя этот шаблон уже установлен, проверь в списке ConfigurationTemplates. Он в оригинале называется Website certificate by Zabbix agent 2.

Если нет, то его можно скачать и импортировать вручную. (на некоторых скриншотах у меня шаблон переименован, но поверьте — это он) У меня шаблона не было, потому что я ранее обновлял старую версию Zabbix до новой.

👉 Здесь можно взять ссылку на шаблон для нужной тебе версии.

Теперь идем в Zabbix и импортируем шаблон. Заходим в Configuration - Templates и нажимаем Import.

Там выбираем наш файл, нажимаем Import. Всё.

Иногда после нажатия Import может появиться ошибка Invalid tag "/zabbix_export/version": unsupported version number. В таком случае просто в yaml файле шаблона вручную меняем версию на нужную, например - 6.2.

Установка Zabbix Agent 2
#

Установить его можно на любой хост. Именно с него мы будем мониторить наши SSL сертификаты, так что он должен иметь стабильный доступ в интернет.

Для начала хорошо бы выключить старый Zabbix Agent, если он установлен. Я вообще под шумок обновил агенты на всех машинах, заодно во второй версии привезли мониторинг SMART у дисков.

👉 Актуальные и корректные ссылки для установки лучше взять с официального сайта, я лишь приведу ниже пример для Ubuntu 20.04, Zabbix 6.4 на дату выхода статьи:

wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu20.04_all.deb

dpkg -i zabbix-release_6.4-1+ubuntu20.04_all.deb

apt update

apt install zabbix-agent2 zabbix-agent2-plugin-*

systemctl restart zabbix-agent2
systemctl enable zabbix-agent2

Добавляем хост для мониторинга
#

Возвращаемся в Zabbix и добавляем новый хост Configuration - Hosts - Create new host:

Затем указываем настройки:

  • Название хоста любое, но удобнее, если оно будет равно сайту, который мы мониторим
  • Линкуем наш Template (шаблон)
  • Добавляем наш хост в Host Group (группа хостов)
  • Выбираем Add InterfaceAgent, указываем адрес (или DNS) хоста с Zabbix Agent 2, откуда мы будем мониторить сайт.

На этом же экране переходим во вкладку Macros, там переходим на вкладку Inherited and host macros, там будут макросы из шаблона. Рядом с макросом {$CERT.WEBSITE.HOSTNAME} нажимаем Change и вводим в поле наш сайт для мониторинга:

Сохраняем хост и идем в Latest Data для проверки:

Меняем порог срабатывания триггера
#

Триггер срабатывает когда срок действия сертификата подходит к концу. Срабатывание триггера основывается на макросе из шаблона. Этот триггер встроен в шаблон.

Как мы можем видеть в меню TemplatesWebsite certificate by Zabbix agentTriggers наш триггер базируется на некой переменной CERT.EXPIRY.WARN.

Есть две опции как ее поменять — глобально или специфично для хоста:

Глобальная переменная
#

TemplatesWebsite certificate by Zabbix agentMacros. Таким образом это значение сменится для всех хостов, к которым привязан этот шаблон.

Host-specific macros
#

С помощью этого варианта можно поменять значение для конкретного хоста. Заходим в Configuration - Hosts, находим нужный хост, переходим на вкладку Macros, выбираем Inherited and host macros, нажимаем Change, меняем, ???, PROFIT.

Теперь триггер будет срабатывать на измененное количество дней.

Добавляем поле Days Left
#

Я хотел сделать себе виджет для дашборда, на котором видно сколько дней осталось до конца срока действия сертификата. К сожалению в изначальном шаблоне нет такого поля; только поле с датой окончания. Я решил этот вопрос добавлением _Calculated field _ — это тип item в Zabbix, который рассчитывается на основе других items.

Идем в наш основной шаблон Configuration - Templates - Website certificate by Zabbix agent 2. Там переходим во вкладку Items и нажимаем вверху справа Create Item. Вводим настройки нового Item:

  • Name: Cert: Days left
  • Type: Calculated
  • Key: cert.days_left — ключ нашего item
  • Type of information: Numeric (float) — у нас будут не целые дни
  • Formula: round(((last(//cert.not_after) - now()) / 86400),1)
  • Units: days — считаем в днях
  • Update interval — любой, у меня 1m — 1 минута

Теперь в Latest Data у нас появился новый Item, по которому мы уже сможем создать Trigger:

Создаем виджет для дашборда
#

Рекомендую заранее объединить наши хоста для мониторинга SSL сертификатов в одну Host Group.

Создадим новый дашборд или добавим виджет на имеющийся.

Переходим в левом меню в MonitoringDashboard, нажимаем Create Dashboard.

После ввода имени и других данных (не особо важных) нажимаем Add widget:

Вводим данные как на скриншоте:

To je to! Мы молодцы. 🎉


🙋‍♂️С вопросами и комментариями можно смело приходить в наш телеграм-чат https://t.me/etogeekchat

🌀Так же рекомендую подписаться на телеграм-канал, чтобы не пропускать классные посты и анонсы новых статей — https://t.me/etogeek

Related

Сканер открытых портов в Raycast
·417 слов·2 минут
софт гайды
Split DNS в MacOS, OpenVPN и Tunnelblick
·592 слов·3 минут
гайды софт
Как практиковаться начинающему DevOps-инженеру
·825 слов·4 минут
работа гайды