Какие три основных компонента включает в себя современный мониторинг систем

Ответ

Современный мониторинг (часто называемый Observability или наблюдаемость) строится на трех основных компонентах, известных как «три столпа наблюдаемости».

  1. Метрики (Metrics)

    • Что это? Числовые значения, измеряемые через регулярные интервалы времени (например, загрузка ЦП, количество запросов в секунду, время ответа).
    • Зачем? Для отслеживания производительности, выявления трендов и аномалий, а также для настройки оповещений (алертинга).
    • Инструменты: Prometheus + Grafana, InfluxDB, Zabbix.
  2. Логи (Logs)

    • Что это? Записи о событиях, происходящих в системе, с привязкой ко времени. Логи могут быть неструктурированными (простой текст) или структурированными (JSON).
    • Зачем? Для детального анализа ошибок, отладки и расследования инцидентов. Логи отвечают на вопрос «что именно произошло?».
    • Инструменты: ELK Stack (Elasticsearch, Logstash, Kibana), Graylog, Loki.
  3. Трассировка (Traces)

    • Что это? Отслеживание полного пути прохождения одного запроса через все компоненты распределенной системы (микросервисы, базы данных).
    • Зачем? Для поиска узких мест (bottlenecks) в производительности и понимания взаимодействия между сервисами.
    • Инструменты: Jaeger, Zipkin, OpenTelemetry.

Пример сбора метрик в Python с помощью prometheus_client:

from prometheus_client import start_http_server, Counter
import time

# Создаем метрику типа Counter для подсчета HTTP-запросов
REQUEST_COUNT = Counter('http_requests_total', 'Total HTTP requests received')

def process_request():
    # При каждом вызове функции увеличиваем счетчик на 1
    REQUEST_COUNT.inc()
    print("Request processed.")

if __name__ == '__main__':
    # Запускает HTTP-сервер для сбора метрик Prometheus на порту 8000
    # Метрики будут доступны по адресу http://localhost:8000/metrics
    start_http_server(8000)

    # Имитация входящих запросов
    while True:
        process_request()
        time.sleep(2)

Совместное использование метрик, логов и трейсов позволяет не только обнаружить проблему (что произошло), но и понять ее причину (почему) и контекст (где).