Улучшенный мониторинг веб-сайтов и SSL-сертификатов
В современном мире, где мониторинг веб-сайтов и проверка SSL-сертификатов становятся всё более сложными, простого «пинга» сервера уже недостаточно для определения состояния сайта. Балансировщики нагрузки, HTTPS, различные версии HTTP и нюансы сертификатов требуют более продвинутых инструментов мониторинга.
Компания Checkmk представила check_httpv2 новую, быструю и мощную реализацию мониторинга веб-сайтов и HTTPS-сервисов с открытым исходным кодом. Вместе с ним представлен инструмент check_cert для детальной проверки SSL-сертификатов.
Когда речь заходит о доступности и безопасности сайтов, на первый план выходит грамотный мониторинг. Именно этим мы и занимаемся выстраиваем систему контроля не только за работой сайтов, но и за состоянием серверов, чтобы исключить внезапные сбои и простои. Это даёт бизнесу уверенность в том, что всё работает круглосуточно и под надёжным присмотром.
Почему важен мониторинг веб-сайтов и SSL-сертификатов?
- Мониторинг сайта в один запрос.
- Контроль остаточного срока действия сертификата.
- Проверка используемых алгоритмов шифрования.
- Возможность использования в Checkmk, в любом совместимом с Nagios решении или как отдельный CLI-инструмент.

От check_http к check_httpv2
Старый плагин check_http, появившийся ещё в конце 90-х вместе с Nagios, пережил множество обновлений и до сих пор используется во многих системах.
Однако его возраст даёт о себе знать:
- Для проверки кода ответа HTTP и срока действия SSL-сертификата нужны были два отдельных запроса.
- Ряд полезных функций, которые сегодня стали стандартом, просто отсутствовал.
- Поддержка разных версий разошлась — плагин существует в вариантах Monitoring Plugins и Nagios Plugins, а объединить усилия не получилось.

Разработчики Checkmk решили написать новый инструмент с нуля, чтобы преодолеть эти ограничения.
Аналогичный принцип действует и в сопровождении корпоративных сервисов: например, серверов ELMA365 или Битрикс24. Специалисты It For Prof не просто настраивают CRM-системы, но и следят за их стабильностью, безопасностью и регулярным резервным копированием.
В результате бизнес получает не разовую установку, а постоянно работающий инструмент продаж и управления.
Rust для мониторинга веб-сайтов
Для разработки нового инструмента разработчики Checkmk выбрали язык программирования Rust. Он быстрый, безопасный и удобный в поддержке. Python проигрывал по производительности, а C/C++ — по удобству поддержки.
Так появился check_httpv2 — современная, чистая реализация плагина, готовая к любым задачам мониторинга. Вместе с ним был создан отдельный инструмент для глубокого анализа сертификатов — check_cert.
Мониторинг сайтов с check_httpv2
Check_httpv2 можно использовать не только внутри Checkmk, но и как отдельный инструмент в терминале. Это позволяет тестировать новый плагин без перестройки всей инфраструктуры мониторинга.
Сборка своими руками
sudo apt install cargo libssl-dev pkg-config git
cd ~/git
git clone https://github.com/Checkmk/checkmk.git
cd checkmk/packages/site/check-http/
cargo check --release
cargo build --release
cd ../target/release/
Для проверки сертификатов путь будет почти таким же — просто вместо check-http используем check-cert.
Первая проверка сайта
В Checkmk всё настраивается через меню:
Настройка → Службы → HTTP, TCP, электронная почта… → Сеть → Проверить веб-службу HTTP.
Там указываем имя и URL сайта, который хотим отслеживать, и через пару кликов получаем в мониторинге статус веб-сервера.
Если хочется протестировать автономно, в терминале это выглядит так:
./check_httpv2 --url https://www.checkmk.com
В ответ получаем:
- Код состояния (200 OK, 301 Redirect и т. д.).
- Факт наличия или отсутствия HTTPS.
- Перенаправления, если они есть.
Проверка срока действия сертификата
./check_httpv2 --url https://www.checkmk.com --certificate-levels 40,20
Теперь у вас всегда будет запас времени на продление сертификата.
Check_cert: когда «валидный» сертификат — ещё не гарантия безопасности
Многие администраторы считают, что если SSL-сертификат валиден, то всё в порядке. Но это не всегда так. Представьте атаку типа man-in-the-middle: сертификат действителен, но выдан совершенно другим центром сертификации, чем ваш обычный. Или сайт вроде бы использует TLS 1.3, но с небезопасными алгоритмами шифрования.
Здесь в игру вступает check_cert — инструмент для детальной проверки сертификатов, созданный с нуля на Rust и интегрированный в Checkmk.
Программа check_cert обладает широким спектром функций для детального анализа сертификатов:
- Определение времени до окончания срока действия сертификата, с возможностью указания оставшегося времени в днях или секундах.
- Контроль за максимальным сроком действия сертификата.
- Анализ алгоритмов подписи и длины ключа.
- Проверка информации о центре сертификации (issuer) и имени субъекта (subject).
- Гибкость использования: может быть интегрирована как плагин в системы, совместимые с Nagios, или применяться как автономная утилита с командной строкой CLI.
Но даже самый тщательный мониторинг требует поддержки инфраструктуры.
It For Prof предлагает администрирование серверов под ключ: настройку, виртуализацию, резервное копирование и круглосуточный контроль. Это помогает компаниям концентрироваться на бизнесе, не отвлекаясь на технические риски.
Пример мощной проверки
./check_cert --url checkmk.de --port 443 \
--not-after 3456000 1728000 \
--max-validity 90 \
--serial 05:0e:50:04:eb:b0:35:ad:e9:d7:6d:c1:0b:36:d6:0e:33:f1 \
--signature-algorithm 1.2.840.10045.4.3.2 \
--issuer-o "Let's Encrypt" \
--pubkey-algorithm rsa \
--pubkey-size 256
Эта команда обеспечивает всестороннюю проверку, охватывая такие аспекты, как серийный номер и алгоритм шифрования.
В Checkmk все настройки выполняются всего в несколько кликов через раздел «Сеть» → «Проверка сертификатов», а результаты мониторинга отображаются вместе с предупреждениями в случае несоответствия параметров ожиданиям.
Массовый мониторинг сайтов в Checkmk
Управление несколькими сайтами (3–5) не вызывает сложностей, однако при работе с более чем 200 сайтами ручная настройка каждого правила становится утомительной задачей.
Checkmk предлагает два эффективных метода для решения этой проблемы:
1. Группировка конечных точек (endpoints) в одном правиле
В конфигурации check_httpv2 можно задать список URL-адресов, для которых будет применяться общая базовая настройка. При этом для каждого сайта можно определить индивидуальные параметры, переопределяющие общие.
Например, можно создать одно правило для домена, поддоменов и страницы с политикой конфиденциальности, задав для каждого адреса уникальные пороги времени ответа.
2. Использование макросов ($HOSTNAME$)
Вместо конкретного URL в правиле используется переменная $HOSTNAME$. Если в папке хостов присутствует example.com, проверка автоматически выполняется по адресу https://example.com.
Этот метод позволяет создать одно правило для целой группы хостов и автоматически проверять каждый новый сайт, добавленный в соответствующую папку.
Анализ работы балансировщиков нагрузки с check_httpv2
Большинство крупных сайтов скрывают свою инфраструктуру за балансировщиками нагрузки. Для пользователя это выглядит как простой редирект, но для администратора это может стать проблемой, поскольку неполадки могут возникать как в самом балансировщике, так и на одном из бэкенд-серверов.
Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое.
Check_httpv2 способен проводить более глубокий анализ. По умолчанию он отслеживает редиректы и указывает их конечные адреса:
URL to test: https://example.com/
Stopped on redirect to: https://www.example.com/ (changed IP) (!)
Status: 301 Moved Permanently
Для проверки конкретного сервера в обход балансировщика используется параметр –server:
./check_httpv2 --url example.com --server 192.0.2.73
Это позволяет выполнить тестирование напрямую по IP-адресу и быстро определить работоспособность бэкенда. В Checkmk эта настройка осуществляется через опцию «Подключение к физическому хосту». Не следует путать это с прокси, для которого предусмотрен отдельный параметр –proxy-url.
Таким образом, в одном правиле можно задать проверку основного домена и каждого IP-адреса за балансировщиком. Это особенно полезно для диагностики проблем с производительностью, когда необходимо определить, какой сервер вызывает неполадки.
Проверка содержимого сайта с check_httpv2
Иногда страница может быть открыта, сертификат действителен, но содержимое оказывается пустым или содержит ошибки. Причина может быть банальной: сбой CMS, падение бэкенда или загрузка «пустого» HTML.
Check_httpv2 способен искать в ответе определённые строки или регулярные выражения как в заголовках, так и в теле страницы. Это превращает проверку из простого пинга в полноценный контроль бизнес-логики.
Например, можно проверить наличие ключевого слова на странице с авторизацией:
./check_httpv2 \
--auth-user peter \
--auth-pw-plain spiderman \
--body-regex '(?m)check(_)?mk'
В этом случае плагин проверит наличие строк checkmk или check_mk в HTML-коде, даже если страница защищена паролем.
Сценарии использования включают:
- Убедиться, что на главной странице присутствует важный элемент (например, кнопка «Купить»).
- Следить за появлением определённых слов во внутреннем портале компании (например, «реструктуризация» или «срочное уведомление»).
- Мониторить наличие баннеров или акций на e-commerce сайте.
В Checkmk настройка выполняется всего в несколько кликов, а при срабатывании в мониторинге можно сразу увидеть, что именно не было найдено в коде страницы.
Тесты производительности с hyperfine
Обычная проверка check_httpv2 предоставляет время отклика, но для серьёзного анализа этого недостаточно, особенно если за сайтом стоят балансировщики, прокси или CDN. В таких случаях на помощь приходит инструмент hyperfine — лёгкий, но мощный бенчмарк для команд CLI.
Hyperfine позволяет многократно запускать команду и вычислять среднее время её выполнения.
Эти инструменты позволяют:
- обнаружить резкие изменения в скорости ответа;
- определить, есть ли неполадки с отдельными серверами за балансировщиком;
- оценить влияние изменений в конфигурации.
Пример использования инструмента hyperfine:
hyperfine --warmup 2 -r 20 './check_httpv2 --url https://checkmk.com'
- --warmup 2 — два предварительных запуска для «прогрева», чтобы исключить влияние кэша на результаты;
- -r 20 — проведение 20 измерений.
- По завершении hyperfine предоставляет среднее время отклика, стандартное отклонение и диапазон значений.
Time (mean ± sigma): 124.6 ms ± 9.8 ms
Range (min ... max): 108.3 ms ... 139.9 ms (20 runs)
Такой подход позволяет отслеживать стабильность отклика и быстро реагировать на снижение производительности.
Итоги и перспективы развития check_httpv2 и check_cert
- проверка доступности и скорости работы сайта;
- контроль сертификатов (срок действия, валидность, алгоритмы, издатель);
- работа с несколькими сайтами в рамках одного правила;
- проверка содержимого страниц;
- гибкая интеграция в Nagios-совместимые системы или использование в качестве самостоятельного инструмента командной строки.
- параметры, доступные в командной строке, также присутствуют в GUI;
- результаты можно визуализировать с помощью графиков (время отклика, загрузка заголовков, контента и т. д.);
- предусмотрены встроенные подсказки и контекстная справка.
Планы на будущее
- мониторинг сертификатов за прокси-серверами;
- внедрение новых метрик производительности;
- добавление дополнительных сценариев тестирования контента.
check_httpv2 и check_cert — это не просто обновлённые версии старых инструментов, а полноценные решения для глубокого анализа веб-сервисов. С ростом сложности сайтов эти инструменты становятся всё более полезными и незаменимыми.
Хочешь внедрить надёжный мониторинг веб-сервисов и SSL-сертификатов?
Напиши нам: настроим Checkmk под твою инфраструктуру, автоматизируем контроль сертификатов и оптимизируем мониторинг даже для сотен сайтов.
Разберёмся с твоими задачами и выведем инфраструктуру на новый уровень стабильности.