Перейти к содержимому

Как работает сбор метрик

sequenceDiagram
  autonumber
  participant KS as kube-state-metrics<br/>+ node-exporter
  participant P as Prometheus
  participant A as Агент metrics-collector<br/>(в вашем кластере)
  participant API as API OpsMan AI
  participant DB as Хранилище платформы
  participant UI as Консоль

  loop каждые 30 секунд
    KS->>P: экспорт метрик (scrape)
    A->>P: PromQL-запросы<br/>(поды / workload / ноды)
    P-->>A: метрики
    A->>API: POST /ingest<br/>Bearer company token
    API->>DB: UPSERT
  end

  UI->>API: запрос отчёта
  API->>DB: агрегация
  DB-->>API: результат
  API-->>UI: JSON
МетрикаИсточникЕд.
CPU usagecontainer_cpu_usage_seconds_total (5-минутный rate)cores
Memory usagecontainer_memory_working_set_bytesbytes
CPU requestkube_pod_container_resource_requests{resource="cpu"}cores
CPU limitkube_pod_container_resource_limits{resource="cpu"}cores
Memory requestkube_pod_container_resource_requests{resource="memory"}bytes
Memory limitkube_pod_container_resource_limits{resource="memory"}bytes
Network RX/TXcontainer_network_{receive,transmit}_bytes_total (5-минутный rate)bytes/sec
Pod → Nodekube_pod_info
МетрикаИсточникЕд.
CPU capacitykube_node_status_capacity{resource="cpu"}cores
CPU allocatablekube_node_status_allocatable{resource="cpu"}cores
Memory capacitykube_node_status_capacity{resource="memory"}bytes
Memory allocatablekube_node_status_allocatable{resource="memory"}bytes
Usage per nodeагрегируется на стороне агента

Агент сам определяет, какому Deployment / StatefulSet / DaemonSet принадлежит под, по его имени. Типичный шаблон имени пода Kubernetes — <workload>-<replicaset-hash>-<pod-hash>. Агент отбрасывает два последних сегмента и получает имя workload’а.

Для каждого workload за цикл считаются:

  • сумма CPU/memory request и limit по всем подам,
  • количество подов (PodCount),
  • уникальный список нод, на которых они запущены.

Результат идёт в OpsMan AI как одна запись workload — в консоли вы видите агрегат, а не сотни отдельных подов.

  • Цикл строго 30 секунд. Если запрос к Prometheus занял 10 секунд, следующий цикл стартует через 20 секунд после начала предыдущего.
  • Ретраев нет. Если Prometheus недоступен или API вернул ошибку, цикл пропускается; следующая попытка через 30 секунд. Данные за пропущенный цикл теряются — это компромисс в пользу простоты.
  • Идемпотентность. Повторная отправка тех же данных приводит к перезаписи, а не дублированию.
  • Токен. Агент использует company token — он хранится в Kubernetes Secret внутри вашего кластера. Токен даёт право только отправлять метрики, не больше.
  • TLS. Трафик между агентом и API OpsMan AI — HTTPS.
  • Нет доступа из платформы в кластер. Платформа не открывает обратные соединения в вашу сеть; весь трафик инициирует агент.