Ответ
Современный мониторинг (часто называемый Observability или наблюдаемость) строится на трех основных компонентах, известных как «три столпа наблюдаемости».
-
Метрики (Metrics)
- Что это? Числовые значения, измеряемые через регулярные интервалы времени (например, загрузка ЦП, количество запросов в секунду, время ответа).
- Зачем? Для отслеживания производительности, выявления трендов и аномалий, а также для настройки оповещений (алертинга).
- Инструменты: Prometheus + Grafana, InfluxDB, Zabbix.
-
Логи (Logs)
- Что это? Записи о событиях, происходящих в системе, с привязкой ко времени. Логи могут быть неструктурированными (простой текст) или структурированными (JSON).
- Зачем? Для детального анализа ошибок, отладки и расследования инцидентов. Логи отвечают на вопрос «что именно произошло?».
- Инструменты: ELK Stack (Elasticsearch, Logstash, Kibana), Graylog, Loki.
-
Трассировка (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)
Совместное использование метрик, логов и трейсов позволяет не только обнаружить проблему (что
произошло), но и понять ее причину (почему
) и контекст (где
).