Обслуживание установленной API-платформы
Ниже представлены рекомендации по обслуживанию API-платформы внутри установленного комплекса On-Premise.
Резервное копирование инфраструктурных баз данных
Ниже представлены рекомендации по резервному копированию баз данных сервисов внутри установленного комплекса On-Premise.
PostgreSQL
Резервное копирование рекомендовано только для баз PostgreSQL сервиса Restrictions API, так как они содержат уникальные данные.
Базы данных сервиса Catalog APIs не требуют резервного копирования. В случае потери данных вы можете повторно импортировать их.
Apache Cassandra
Резервное копирование не требуется: в случае потери данных вы можете повторно импортировать их из S3-совместимого хранилища.
Примечание
Восстановление данных через импорт может занять длительное время. Если требуется обеспечить минимальные значения RPO (Recovery Point Objective) и RTO (Recovery Time Objective), рекомендуется выполнять регулярное резервное копирование всех баз данных.
Сбор логов
Ниже представлены рекомендации по сбору и отправке логов сервисов внутри установленного комплекса On-Premise.
Формат логов
Сервисы комплекса On-Premise в Kubernetes выводят логи в stdout в формате JSON или Plaintext. В некоторых случаях используется комбинация обоих форматов, что позволяет гибко адаптировать вывод логов в зависимости от нужд системы.
Инструменты для сбора логов
Для сбора и отправки логов рекомендуется установить следующие агенты:
-
Fluent Bit — легковесный инструмент с минимальным потреблением ресурсов. Поддерживает фильтрацию и маршрутизацию логов.
-
Filebeat — оптимален для интеграции с Elasticsearch (например, в стеках ELK).
Хранение и анализ логов
Для централизованного сбора, хранения и анализа логов рекомендуется использовать следующие инструменты:
-
Elasticsearch + Kibana (ELK-стек). Подходит для сложных запросов и долгосрочного хранения логов и предоставляет следующие возможности:
- полнотекстовый поиск и аналитика логов;
- гибкие дашборды и визуализации в Kibana.
Принцип работы: агенты (Fluent Bit, Filebeat) собирают логи с узлов и отправляют их в Elasticsearch. Затем данные индексируются и становятся доступны в Kibana через индекс-паттерны.
-
Grafana Loki. Оптимизирован для работы с логами Kubernetes и предоставляет следующие возможности:
- экономичное хранение логов (использует объектные хранилища, например MinIO);
- интеграция с Grafana для совместного анализа логов и метрик.
Принцип работы: агенты (Fluent Bit) отправляют логи в Loki с метками (labels) для быстрого поиска. Затем логи становятся доступны в Grafana через запросы на языке LogQL.
Мониторинг состояния сервисов
Сервисы программного комплекса 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 — метрики хранилища, объектов.
- 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 — ошибки соединений между сервисами (например,