Документация

Мониторинг доступности

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

Иллюстрация: панели наблюдения за сервисами.
Иллюстрация: панели наблюдения за сервисами.

Что измерять

Для большинства сервисов достаточно четырёх групп сигналов:

  • Доступность: отвечает ли сервис на проверку.
  • Задержка: за какое время приходит ответ.
  • Ошибки: доля неуспешных ответов.
  • Насыщение: загрузка процессора, памяти, диска и сети.

Типы проверок

ПроверкаЧто показываетПример
ICMPДостижимость узлаping -c 4 example.org
TCPОткрыт ли портnc -vz example.org 443
HTTP(S)Код ответа и времяcurl -sS -o /dev/null -w "%{http_code} %{time_total}\n" https://example.org
DNSКорректность разрешенияdig example.org +short
TLSСрок действия сертификатаopenssl s_client -connect example.org:443 -servername example.org

Пример: blackbox_exporter и Prometheus

Один из распространённых способов организовать внешние проверки — связка Prometheus и blackbox_exporter. Сначала описываем модуль проверки:

modules:
  http_2xx:
    prober: http
    timeout: 5s
    http:
      method: GET

Файл blackbox.yml.

Затем подключаем его в Prometheus:

scrape_configs:
  - job_name: blackbox-http
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
      - targets: ["https://example.org"]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9115

Фрагмент prometheus.yml. Адрес 127.0.0.1:9115 — где запущен blackbox_exporter.

Оповещения

Оповещение должно требовать действия. Если на него нечего ответить, его лучше убрать или превратить в график.

groups:
  - name: availability
    rules:
      - alert: ProbeFailed
        expr: probe_success == 0
        for: 5m
      - alert: CertificateExpiresSoon
        expr: probe_ssl_earliest_cert_expiry - time() < 86400 * 14
        for: 1h
Иллюстрация: коммутатор с подключёнными кабелями.
Иллюстрация: коммутатор с подключёнными кабелями.
Иллюстрация: патч-панели и коммутационные шнуры.
Иллюстрация: патч-панели и коммутационные шнуры.

Быстрая диагностика

  1. Проверьте имя: dig example.org.
  2. Проверьте путь до узла: mtr -rw example.org.
  3. Проверьте порт и сертификат: openssl s_client.
  4. Проверьте сам сервис: журналы и systemctl status.
Совет. Меняйте по одному параметру за раз и записывайте, что проверили: так диагностика не превращается в угадывание.