Ответ
Комплексный мониторинг Python-приложений строится на трёх основных столпах observability: метриках, логах и трейсах.
1. Метрики (Metrics)
Показывают состояние системы в числовом виде (CPU, RAM, RPS). Основной стек — Prometheus для сбора и хранения метрик и Grafana для их визуализации.
- Сбор метрик приложения: Используется библиотека
prometheus-client. - Ключевые метрики: Загрузка CPU/RAM, время ответа (latency), количество ошибок (error rate), глубина очередей (Celery/RQ), состояние пула соединений к БД.
# Пример кастомной метрики: счётчик HTTP-запросов
from prometheus_client import start_http_server, Counter
# Метрика 'requests_total' с описанием
REQUESTS = Counter('requests_total', 'Total number of requests received')
@app.route('/')
def index():
REQUESTS.inc() # Увеличиваем счётчик при каждом запросе
return "Hello, World!"
if __name__ == '__main__':
# Запускаем HTTP-сервер для сбора метрик Prometheus на порту 8000
start_http_server(8000)
app.run()
2. Логи (Logs)
Записи о событиях, произошедших в системе. Помогают в отладке и анализе инцидентов. Популярный стек — ELK (Elasticsearch, Logstash, Kibana) или Loki от Grafana Labs.
- Настройка: В Python используется встроенный модуль
logging. - Практика: Логи должны быть структурированными (например, в формате JSON) для удобного парсинга и поиска.
import logging
logging.basicConfig(
level=logging.INFO,
format='{"timestamp": "%(asctime)s", "level": "%(levelname)s", "message": "%(message)s"}',
datefmt='%Y-%m-%dT%H:%M:%S'
)
logging.info("User successfully authenticated.")
# Output: {"timestamp": "...", "level": "INFO", "message": "User successfully authenticated."}
3. Трейсинг (Tracing)
Отслеживание пути запроса через несколько сервисов в распределенной системе. Незаменим для поиска узких мест. Инструменты: Jaeger, Zipkin, OpenTelemetry.
Дополнительные инструменты:
- Health Checks: Специальные эндпоинты (
/health,/ready), которые проверяют работоспособность сервиса. Активно используются в Kubernetes (liveness/readiness probes). - Alerting: Настройка уведомлений о критических событиях на основе метрик и логов. Инструменты: Alertmanager (для Prometheus), PagerDuty, Opsgenie.