Ответ
Типичная архитектура современной системы мониторинга, которую я настраиваю, основана на стеке Prometheus и включает несколько ключевых компонентов.
Основные компоненты:
-
Сбор метрик (Agents/Exporters): На целевых серверах и сервисах запускаются экспортеры, которые преобразуют внутренние метрики в формат, понятный Prometheus.
- Node Exporter — метрики ОС (CPU, память, диск, сеть).
- cAdvisor / kube-state-metrics — метрики контейнеров и Kubernetes.
- Специфичные экспортеры для PostgreSQL, Nginx, RabbitMQ и т.д.
-
Хранилище временных рядов (Time-Series Database - TSDB): Prometheus выступает в роли основного сервера. Он периодически "скрабит" (опрашивает) эндпоинты экспортеров по HTTP, собирает и хранит метрики в своей эффективной локальной TSDB.
Пример конфигурации Prometheus (
prometheus.yml):global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'kubernetes-nodes' kubernetes_sd_configs: - role: node relabel_configs: - source_labels: [__address__] regex: '(.*):10250' replacement: '${1}:9100' target_label: __address__ - job_name: 'application' static_configs: - targets: ['app:8080'] -
Визуализация и дашборды: Grafana подключается к Prometheus (и другим источникам) как к datasource. В ней создаются дашборды с графиками, которые помогают визуализировать состояние системы, например, график latency 95-го перцентиля или потребления памяти.
-
Система алертинга: Alertmanager (часть экосистемы Prometheus) получает алерты от Prometheus по правилам, определенным в
*.rulesфайлах. Он занимается группировкой, подавлением дубликатов и маршрутизацией уведомлений в нужные каналы: Slack, email, PagerDuty. -
Сбор логов (опционально, но часто сопутствует): Отдельный, но связанный стек, например Loki (для логов) + Promtail (агент), который также интегрируется с Grafana для корреляции логов и метрик.
Принцип работы: Экспортеры предоставляют метрики → Prometheus собирает и хранит их → Grafana запрашивает данные для визуализации → При нарушении правил Prometheus шлет алерт в Alertmanager → Команда получает уведомление.