Какие метрики вы собирали с кластера и как?

Общая идея

Ниже — набор метрик, которые обычно собирают с k8s-кластера, и конкретные способы их получения. Формулирую как «обычно собирают», а не «я делал», чтобы дать универсальный список и практики.

Какие метрики собирают (ключевые категории)

Ресурсы нод и контейнеров

  • CPU: использование, throttling, нагрузка по ядрам (node_cpu_seconds_total, container_cpu_usage_seconds_total).

  • Память: использование, доступная память, OOM события (node_memory_*, container_memory_usage_bytes, OOMKilled).

  • Диск: I/O, latency, заполнение диска (node_disk_* , container_fs_*).

  • Сеть: байты/пакеты в/из, ошибки, устанавливаемые соединения (node_network_* , container_network_receive_bytes_total).

Состояние k8s-ресурсов

  • Кол-во Pod в phase (Running, Pending, CrashLoopBackOff).

  • Рестарты контейнеров (kube_pod_container_status_restarts_total).

  • Доступные/желаемые реплики в Deployment/StatefulSet.

  • Node conditions (Ready, DiskPressure, MemoryPressure).

Контроль-плэйн

  • API-сервер: latency, QPS, error rate, auth failures.

  • Scheduler: scheduling latency, scheduling attempts, failed scheduling reasons.

  • Controller-manager: reconcile loops, queue length.

  • Etcd: leader changes, commit latency, db size.

Сеть и сервисы

  • kube-proxy/iptables/IPVS counters, service endpoints count.

  • L7: Ingress latency/errors, backend 5xx rates.

  • Service mesh: request rate, latency per route, retries, circuit breaker stats.

Приложение и бизнес-метрики

  • Custom /metrics от приложений: request latency (p95/p99), error rates, throughput, queue length, cache hit rate.

Логи/события/аудит

  • Kubernetes events (evictions, failed mounts).

  • Audit logs для безопасности.

Как собирают (инструменты и схема)

Prometheus-ориентированная архитектура (стандарт)

  • node-exporter на нодах для системных метрик.

  • kube-state-metrics для состояния k8s-объектов (deployments, pods, nodes).

  • cAdvisor/kubelet экспортирует контейнерные метрики (часто забирает Prometheus).

  • Prometheus с kubernetes_sd_configs для автодискавери сервисов/endpoint’ов и relabeling.

  • Recording rules для агрегатов (sum/avg), remote_write в долгосрочное хранилище.

Metrics API / HPA

  • metrics-server предоставляет resource metrics для kubectl top и HPA. Для HPA на кастомных метриках — Custom Metrics API (Adapter).

Логи и трассировка

  • Fluentd/Fluent Bit/Vector -> Elasticsearch / Loki для логов.

  • OpenTelemetry/Jaeger/Tempo для трейсинга; инструментируют код и собирают spans.

Сетевая телеметрия

  • CNI-специфичные экспортёры (Cilium/Hubble, Calico metrics) или eBPF-основанные сборщики дают подробные сетевые метрики и flow-view.

События и аудит

  • event-exporter или сбор через Fluentd. Audit logs конфигурируются на API-сервере и отправляются в хранилище.

Практические детали настройки

  • Разделять scrape jobs (краткий интервал для апи/ingress, длиннее для node exporter).

  • Использовать relabeling чтобы скрыть секреты и убрать лишние лейблы.

  • Записывать recording rules для p95/p99 и суммарных показателей.

  • Настроить Alertmanager с сигналами: node down, OOM rate, high CPU throttling, pod restarts spike, scheduler failures, apiserver errors.

  • Дашборды (Grafana) по узлам, по namespace, по контрол-плэйну и по SLA приложений.

Типичные сигналы тревоги (SRE-ориентированные)

  • Увеличение частоты OOMKilled или CrashLoopBackOff.

  • Постижения CPU throttling при высоком latency.

  • Ноды NotReady / DiskPressure.

  • Резкий рост Pending pods (недостаток allocatable).

  • APIServer 5xx error rate или рост request latency.