Серверы
  • Готовые серверы
  • Конфигуратор
  • Серверы с 1CPU
  • Серверы с 2CPU
  • 4 поколение AMD EPYC и Intel Xeоn
  • Серверы с AMD Ryzen и Intel Core i9
  • Серверы для хранения данных
  • Cерверы с портом 10 Гбит/c
  • GPU
  • Распродажа
  • VPS
    GPU
  • Выделенные серверы с GPU
  • Виртуальные серверы с GPU
  • Распродажа
    Маркетплейс
    Colocation
  • Размещение серверов в дата-центре в Москве
  • Обслуживание серверов в других ЦОД
  • Кластеры
    Прокат
    Услуги
  • Аренда сетевого оборудования
  • Защита L3-L4 от DDoS атак
  • IPV4 и IPV6 адреса
  • Администрирование серверов
  • Уровни технической поддержки
  • Мониторинг сервера
  • BYOIP
  • USB диск
  • IP-KVM
  • Трафик
  • Коммутация серверов
  • AI-чат-бот Lite
  • О нас
  • Работа в HOSTKEY
  • Панель управления серверами и API
  • Дата-центры
  • Сеть
  • Тест скорости
  • Специальные предложения
  • Отдел продаж
  • Для реселлеров
  • Гранты для специалистов по Data Science
  • Гранты для научных проектов и стартапов
  • Документация и Частые вопросы
  • Новости
  • Блог
  • Оплата
  • Документы
  • Сообщите о нарушении
  • Looking Glass
  • 17.04.2023

    Мониторинг HTTP и SSL через Prometheus blackbox_exporter

    server one
    HOSTKEY
    Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

    Автор: DevOps компании Hostkey Никита Зубарев

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

    В одной из прошлых статей мы рассмотрели варианты установки федерации Prometheus, Alertmanager и Node Exporter, но у нас также есть задача мониторинга задержки производительности наших приложений и точного выявления проблемных конечных точек. Мы отслеживали время отклика всех конечных точек, которые использовались в потоке приложения, и с помощью BlackBox Exporter обнаружили наши конечные точки, вызывающие задержку. Соответственно, перед нами возникла задача наладить мониторинг статус-кодов ответов наших web-сервисов, а также сроков действия SSL-сертификатов.

    Что такое мониторинг конечных точек, зачем он нужен?

    Мониторинг конечных точек позволяет обнаруживать и анализировать подозрительную активность на устройствах, такую как несанкционированные попытки доступа к системе, внедрение вредоносного ПО, изменение настроек без разрешения пользователя и другие аномальные действия.

    Такой мониторинг позволяет обеспечить безопасность информации, защитить конфиденциальные данные, предотвратить утечки информации и другие кибератаки. Он также помогает управлять рисками и повышать эффективность работы сети, используя данные о конечных точках для оптимизации настроек и процессов.

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

    В контексте нашей статьи мониторинг конечных точек относится к мониторингу внутренних и внешних конечных точек (HTTP/S, DNS, TCP и ICMP) для различных параметров, включая задержки HTTP, задержки поиска DNS, информацию об истечении срока действия сертификата SSL, версию TLS.

    Мониторинг Whitebox против Blackbox

    Мониторинг белого ящика (white-box testing) относится к мониторингу внутренних компонентов системы, включая журналы приложений, метрики от обработчиков. Мониторинг черного ящика, с другой стороны, включает в себя отслеживание поведения извне, которое влияет на пользователей, такое как сбои в работе сервера, снижение производительности сайта или отдельных страниц.

    Blackbox Exporter для Prometheus позволяет реализовать мониторинг внешних сервисов через HTTP, HTTPS, DNS, TCP, ICMP. Каким образом следить за истечением срока действия SSL-сертификата? Самый распространенный способ — blackbox_exporter в сочетании с Prometheus.

    Мы собрали rpm-пакет из исходников кода и с помощью Ansible доставили его на хост мониторинга, запустили через Jenkins. Общий алгоритм мониторинга представлен ниже. Собранный бинарник помещаем в /usr/local/bin/, создаем сервис и конфигурацию (с помощью Ansible):
    blackbox.service
    [Unit]
    Description=Blackbox Exporter Service
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    Type=simple
    User=root
    Group=root
    ExecStart=/usr/local/bin/blackbox_exporter --config.file=/etc/blackbox/blackbox.yml
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    

    В конфигурации blackbox.yml сразу добавляем модули http_2xx, ssh, icmp:

    modules:
      http_2xx:
        prober: http
        timeout: 10s
        http:
          valid_status_codes: [200,302,301,304,401,403] 
          method: GET
      http_post_2xx:
        prober: http
        timeout: 10s
        http:
          valid_status_codes: [200,302,301,304,401,403]
          method: POST
      tcp_connect:
        prober: tcp
      pop3s_banner:
        prober: tcp
        tcp:
          query_response:
          - expect: "^+OK"
          tls: true
          tls_config:
            insecure_skip_verify: false
      grpc:
        prober: grpc
        grpc:
          tls: true
          preferred_ip_protocol: "ip4"
      grpc_plain:
        prober: grpc
        grpc:
          tls: false
          service: "service1"
      ssh_banner:
        prober: tcp
        tcp:
          query_response:
          - expect: "^SSH-2.0-"
          - send: "SSH-2.0-blackbox-ssh-check"
      irc_banner:
        prober: tcp
        tcp:
          query_response:
          - send: "NICK prober"
          - send: "USER prober prober prober :prober"
          - expect: "PING :([^ ]+)"
            send: "PONG ${1}"
          - expect: "^:[^ ]+ 001"
      icmp:
        prober: icmp

    Затем подключаемся к web-интерфейсу Blackbox Exporter через web-браузер по адресу localhost:9115

    При переходе по адресу http://localhost:9115/probe?module=http_2xx&target=“your_ip”.com можно увидеть результат проверки указанного URL https://“your_ip”.com:
    probe_http_status_code 200  - status code 200
    
    	probe_success равное 1 означает успешную проверку. Значение 0 говорит об ошибке.
    	
    	probe_ssl_earliest_cert_expiry 1.705363199e+09
    	# HELP probe_ssl_last_chain_expiry_timestamp_seconds Returns last SSL chain expiry in timestamp seconds

    probe_ssl_earliest_cert_expiry — время до окончания действия цепочки сертификатов. Об этом автоматически сообщается для любых конечных точек SSL.

    Добавление конфигурации Prometheus для проверки внешних целей

    Мы можем исследовать определенные статические цели из Prometheus с помощью Blackbox Exporter, используя static_configs.

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

    В нашем случае метка param_target указывает Prometheus установить target для параметра запроса заданного значения, которое в данном случае является адресом цели, то есть hostkey.com.

     - job_name: blackbox-ssl
    	metrics_path: /probe
    	params:
    		module:
    		- http_2xx
    	relabel_configs:
    	- source_labels:
    		- __address__
    		target_label: __param_target
    	- source_labels:
    		- __param_target
    		target_label: instance
    	- replacement: localhost:9115
    		target_label: __address__
    	static_configs:
    	- targets:
    			 - hostkey.com
    
    

    Аналогично для http:

      - job_name: blackbox-http
    	metrics_path: /probe
    	params:
    		module:
    		- http_2xx
    	relabel_configs:
    	- source_labels:
    		- __address__
    		target_label: __param_target
    	- source_labels:
    		- __param_target
    		target_label: instance
    	- replacement: localhost:9115
    		target_label: __address__
    	static_configs:
    	- targets:
    		- https://hostkey.com

    Проверка сгенерированных метрик в Prometheus

    После применения изменений и развертывания ресурсов для Blackbox Exporter мы можем проверить статус целей в Prometheus: работает ли экспортер с зарегистрированными целями. Для этого необходимо перейти на вкладку «Статус» и выбрать «Цели» в пользовательском интерфейсе Prometheus.

    Здесь можно увидеть, что мы используем https://hostkey.com — внешнюю цель для ссылки с ее состоянием UP. Мы также можем проверить, заполняются ли метрики, выполнив поиск метрик, начинающихся с “probe_…”:

    Метрика probe_ssl_earliest_cert_expiry возвращает самый ранний срок действия SSL-сертификата в unixtime.

    В promethus.yml добавляем файл правил алерта:

    rule_files:
    	- ssl_check.yml
    	
    	groups: 
    	- name: ssl_expiry.rules 
    		rules: 
    		- alert: SSLCertExpiringSoon 
    			expr: probe_ssl_earliest_cert_expiry{job="blackbox-ssl"} - time() < 86400 * 10 
    			for: 10m
    			labels:
    				severity: critical
    			annotations:
    				description: SSL Cerificate will expire after 10 days
    probe_ssl_earliest_cert_expiry{job="blackbox-ssl"} - time() < 86400 * 10 

    Согласно формуле, получим предупреждение за 10 дней до истечения сертификата. И увидим предупреждения в дашборде Alermanager:

    В канале Rocket.Chat мы можем получить как уведомления об истечении сертификата, так и об иных ошибках, например, уведомления о проблемах работы сайта:

    В приведенном выше примере панели мониторинга видно, что теперь мы можем отслеживать производительность сайта, измеряя время отклика с помощью метрик probe_http_duration_seconds, сгенерированных Blackbox Exporter.

    В этом сценарии мы сосредоточимся на проблеме, связанной с истечением срока действия сертификата. Если мы хотим отслеживать, когда истечет срок действия сертификата нашего домена, мы можем добиться этого, используя метрику probe_ssl_earliest_cert_expiry, созданную экспортером для наших входных ресурсов. Мы также можем использовать его для мониторинга работы разрешения DNS или при наличии каких-либо задержек/проблем со стороны балансировщика нагрузки.

    Мы можем проверять модули и создавать панель мониторинга работоспособности для наших приложений. В приведенном выше примере мы видим, что мы проверяем модуль на конечной точке /health, используя метрики probe_http_status_code, сгенерированные Blackbox Exporter.

    Преимущества Blackbox Exporter

    • Измерение времени отклика — самая важная функция Blackbox Exporter, в таких случаях его можно рассматривать как отличный инструмент для анализа задержки/доступности конечных точек, включая наши конечные точки, с которыми сталкиваются пользователи и сторонние службы.
    • Blackbox Exporter можно использовать для обнаружения сбоев конечных точек и проверки работоспособности, его можно интегрировать с Alertmanager (мы можем добавить правила оповещения в Prometheus, чтобы получать оповещения о Blackbox Exporter).
    • Мы всегда можем оставаться в курсе, отслеживая дату истечения срока действия сертификатов конечных точек с помощью Blackbox Exporter.

    Заключение

    В этой статье мы рассмотрели следующие моменты:

    • Что такое Blackbox Exporter, зачем он нужен.
    • Как установить и использовать Blackbox Exporter и отслеживать его с помощью Grafana.
    • Каковы некоторые важные варианты использования/преимущества Blackbox Exporter.

    Мониторинг HTTP и SSL через Prometheus blackbox_exporter может быть полезен для различных целей и для разных типов пользователей.

    Владельцам сайтов и администраторам web-серверов мониторинг HTTP и SSL может помочь отслеживать доступность web-ресурсов и быстро обнаруживать любые проблемы, такие как ошибки 404, 500 и другие. Он также может помочь определить проблемы с SSL-сертификатами и другие проблемы безопасности, которые могут повлиять на пользователей.

    Разработчикам и инженерам, занимающимся разработкой web-приложений, мониторинг HTTP и SSL может помочь отслеживать производительность и доступность своих приложений, а также обнаруживать и устранять проблемы с кодом и инфраструктурой.

    Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

    Другие статьи

    25.10.2024

    TS3 Manager: что происходит, когда додумываешь документацию

    Есть проблемы с подключением к TS3 Manager после установки на VPS? Управление сервером TeamSpeak через TS3 Manager не такое уж и простое, как кажется. Давайте решим проблемы вместе!

    07.10.2024

    Список всех кодов состояния HTTP-ответа сервера

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

    01.10.2024

    Устанавливаем Python 3 на VPS и VDS

    Пошаговая инструкция установки Python 3 на VPS и VDS для быстрой и корректной работы.

    27.09.2024

    В чем основные отличия VPS-сервера от VDS?

    VPS или VDS — в чем разница? Узнайте ключевые отличия между этими типами виртуальных серверов и решите, какой вариант подходит именно вам.

    24.09.2024

    Как выбрать сервер для Telegram-бота?

    Нужен надежный сервер для Telegram-бота? Рассказываем как выбрать сервер и как его настроить для стабильной работы и безопасности вашего проекта.

    HOSTKEY Выделенные серверы в Европе, России и США Готовые решения и индивидуальные конфигурации серверов на базе процессоров AMD, Intel, карт GPU, Бесплатной защитой от DDoS-атак и безлимитный соединением на скорости 1 Гбит/с 30
    4.3 48 48
    Upload