Улучшенный мониторинг веб-сайтов и SSL-сертификатов

мониторинг веб-сайтов и SSL-сертификатов

Улучшенный мониторинг веб-сайтов и SSL-сертификатов

В современном мире, где мониторинг веб-сайтов и проверка SSL-сертификатов становятся всё более сложными, простого «пинга» сервера уже недостаточно для определения состояния сайта. Балансировщики нагрузки, HTTPS, различные версии HTTP и нюансы сертификатов требуют более продвинутых инструментов мониторинга.

Компания Checkmk представила check_httpv2 новую, быструю и мощную реализацию мониторинга веб-сайтов и HTTPS-сервисов с открытым исходным кодом. Вместе с ним представлен инструмент check_cert для детальной проверки SSL-сертификатов.

Когда речь заходит о доступности и безопасности сайтов, на первый план выходит грамотный мониторинг. Именно этим мы и занимаемся выстраиваем систему контроля не только за работой сайтов, но и за состоянием серверов, чтобы исключить внезапные сбои и простои. Это даёт бизнесу уверенность в том, что всё работает круглосуточно и под надёжным присмотром.

Почему важен мониторинг веб-сайтов и SSL-сертификатов?

Ранее используемые решения, такие как check_http из мира Nagios, служили нам более 20 лет, но теперь они не справляются с современными задачами. Проверка сертификата и кода ответа требовала двух отдельных запросов, а о продвинутых сценариях, таких как контроль конкретных криптосетей и издателя сертификата, можно было только мечтать. Теперь все эти возможности доступны:
преимущества перед check_http

От check_http к check_httpv2

Старый плагин check_http, появившийся ещё в конце 90-х вместе с Nagios, пережил множество обновлений и до сих пор используется во многих системах.
Однако его возраст даёт о себе знать:

Check_http и Check_httpv2

Разработчики Checkmk решили написать новый инструмент с нуля, чтобы преодолеть эти ограничения.

Аналогичный принцип действует и в сопровождении корпоративных сервисов: например, серверов ELMA365 или Битрикс24. Специалисты It For Prof не просто настраивают CRM-системы, но и следят за их стабильностью, безопасностью и регулярным резервным копированием.
В результате бизнес получает не разовую установку, а постоянно работающий инструмент продаж и управления.

Rust для мониторинга веб-сайтов

Для разработки нового инструмента разработчики Checkmk выбрали язык программирования Rust. Он быстрый, безопасный и удобный в поддержке. Python проигрывал по производительности, а C/C++ — по удобству поддержки.

Так появился check_httpv2 — современная, чистая реализация плагина, готовая к любым задачам мониторинга. Вместе с ним был создан отдельный инструмент для глубокого анализа сертификатов — check_cert.

Мониторинг сайтов с check_httpv2

Check_httpv2 можно использовать не только внутри Checkmk, но и как отдельный инструмент в терминале. Это позволяет тестировать новый плагин без перестройки всей инфраструктуры мониторинга.

Сборка своими руками

На свежей Ubuntu 24.04 выполняется следующим образом:
				
					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
				
			

В ответ получаем:

Проверка срока действия сертификата

Хотите, чтобы система предупредила за 40 дней до истечения сертификата и прислала CRIT за 20 дней? Легко:
				
					./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 обладает широким спектром функций для детального анализа сертификатов:

Но даже самый тщательный мониторинг требует поддержки инфраструктуры.
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-коде, даже если страница защищена паролем.

Сценарии использования включают:

В Checkmk настройка выполняется всего в несколько кликов, а при срабатывании в мониторинге можно сразу увидеть, что именно не было найдено в коде страницы.

Тесты производительности с hyperfine

Обычная проверка check_httpv2 предоставляет время отклика, но для серьёзного анализа этого недостаточно, особенно если за сайтом стоят балансировщики, прокси или CDN. В таких случаях на помощь приходит инструмент hyperfine — лёгкий, но мощный бенчмарк для команд CLI.

Hyperfine позволяет многократно запускать команду и вычислять среднее время её выполнения.
Эти инструменты позволяют:

Пример использования инструмента hyperfine:

				
					hyperfine --warmup 2 -r 20 './check_httpv2 --url https://checkmk.com'
				
			
Пример результата:
				
					Time (mean ± sigma): 124.6 ms ± 9.8 ms
Range (min ... max): 108.3 ms ... 139.9 ms (20 runs)
				
			

Такой подход позволяет отслеживать стабильность отклика и быстро реагировать на снижение производительности.

Итоги и перспективы развития check_httpv2 и check_cert

Уже сейчас check_httpv2 и check_cert способны решать большинство задач современного мониторинга:
Все эти возможности дополняются удобным веб-интерфейсом Checkmk:

Планы на будущее

Разработчики рассматривают возможность расширения функционала:

check_httpv2 и check_cert — это не просто обновлённые версии старых инструментов, а полноценные решения для глубокого анализа веб-сервисов. С ростом сложности сайтов эти инструменты становятся всё более полезными и незаменимыми.

Хочешь внедрить надёжный мониторинг веб-сервисов и SSL-сертификатов?

Напиши нам: настроим Checkmk под твою инфраструктуру, автоматизируем контроль сертификатов и оптимизируем мониторинг даже для сотен сайтов.

Разберёмся с твоими задачами и выведем инфраструктуру на новый уровень стабильности.