Какие метрики вы собирали с кластера и как?
Общая идея
Ниже — набор метрик, которые обычно собирают с 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.