Мониторинг состояния сервисов
Сервисы программного комплекса On-Premise предоставляют метрики в формате Prometheus. Этот формат позволяет обеспечить безопасность передачи данных (по HTTPS или защищенным endpoint-ам), а также легко интегрируе тся с большинством современных систем мониторинга.
Ниже представлены рекомендации по настройке мониторинга сервисов.
Методы мониторинга
Рекомендуется использовать два основных метода мониторинга:
-
Для API и сервисов в Kubernetes — метод RED:
- Rate (Частота запросов),
- Errors (Ошибки),
- Duration (Время выполнения).
-
Для баз данных и хранилищ на виртуальных машинах — метод USE:
- Utilization (Использование ресурсов),
- Saturation (Насыщение),
- Errors (Ошибки).
Инструменты
Для полного цикла мониторинга (сбор, хранение, визуализация и отправка уведомлений) рекомендуется использовать следующие инструменты:
- Сбор и хранение метрик: Prometheus — обеспечивает гибкость запросов (язык PromQL) и надежное хранение данных.
- Визуализация: Grafana — предоставляет дашборды с возможностью настройки под конкретные запросы.
- Отправка уведомлений (алертинг): AlertManager — позволяет отправлять уведомления по e-mail, в Slack, Telegram и другие каналы при превышении пороговых значений.
Сбор метрик
Рекомендуется собирать метрики непосредственно с подов сервиса. Если в вашем кластере Kubernetes используется Prometheus с Kubernetes SD (Service Discovery), добавьте следующие аннотации в параметр podAnnotations
в Helm-чарты сервисов:
prometheus.io/scrape: "true"
— включить сбор метрик с данного пода.prometheus.io/path: "/metrics"
— путь, по которому доступны метрики.prometheus.io/port: "80"
— порт пода.
Рекомендуется использовать следующие инструменты для сбора метрик:
- PostgreSQL: postgres_exporter — сбор статистики запросов, репликаций и блокировок.
- Apache Cassandra: cassandra_exporter — мониторинг производительности и состояния кластера.
- Виртуальные машины: node_exporter — метрики CPU, памяти, дисков и сети.
- MinIO: см. документацию MinIO — метрики хранилища, объектов.
- Elasticsearch: elasticsearch_exporter — метрики кластера, индексов и узлов.
- Apache Kafka: kafka_exporter — метрики кластера, брокеров и топиков.
Метрики API-сервисов в Kubernetes
При мониторинге API-сервисов в Kubernetes важно учитывать следующие ключевые показатели, которые помогут оценить производительнос ть и стабильность системы и обнаружить потенциальные проблемы:
-
Сетевые показатели:
-
RPS (Requests Per Second) — количество запросов в секунду, проходящих через Ingress или Service. Этот показатель помогает отслеживать нагрузку на сервис. Важно снимать метрики именно с Ingress-controller, так как он показывает полный входящий трафик.
-
Latency — задержки обработки запроса:
- p50 — медиана.
- p90 — 90-й перцентиль.
- p99 — 99-й перцентиль. Важно отслеживать рост p99, так как это показатель наиболее критичных задержек.
-
HTTP-коды ответов:
- 2xx — успешные запросы.
- 4xx — ошибки клиента. Важно отслеживать рост ошибок 429 (Too Many Requests).
- 5xx — ошибки сервера. Количество этих ошибок должно быть минимальным.
-
-
Ресурсы контейнеров (CPU и RAM):
- CPU Usage (%) — фактическое потребление ресурсов CPU контейнером.
- CPU Throttling (троттлинг) — если контейнер превышает лимиты CPU (
limits.cpu
), Kubernetes ограничивает его выполнение. - Memory Usage (RAM, MB/GB) — текущее использование памяти.
- OOMKills (Out of Memory Kills) — если контейнер превышает лимит памяти (
limits.memory
), Kubernetes может завершить его выполнение.
-
Ресурсы узлов:
- Общая загрузка CPU и памяти на узле — если узел перегружен, поды могут испытывать проблемы.
- Disk utilization — использование дискового пространства и производительности дисков (IOPS, скорость чтения/записи).
-
Сетевые ошибки и ошибки соединений:
- Connection Errors — ошибки соединений между сервисами (например,
Connection reset
,Timeout
). - DNS Latency & Failures — задержки и ошибки в DNS-запросах (CoreDNS).
- Connection Errors — ошибки соединений между сервисами (например,