---
tags: [linux, tooling, cheatsheet]
verified: 2026-09-02
---

# Linux — справочник команд: cgroup v2, контейнеры, Kubernetes

[← Назад к обзору](./linux-perf-tools.md)

---

## systemd-cgtop 🟢

Top-подобный вид потребления ресурсов по cgroup. Встроен в systemd.

```bash
# Интерактивный мониторинг
systemd-cgtop

# С обновлением раз в секунду, по CPU
systemd-cgtop -d 1 --order=cpu

# По памяти
systemd-cgtop --order=memory

# Batch mode для скриптов (5 итераций)
systemd-cgtop -b -n 5
```

---

## /proc/pressure/* (PSI) 🟢

Pressure Stall Information — встроенный механизм ядра для измерения дефицита ресурсов. Показывает, какой процент времени задачи простаивали в ожидании CPU, памяти или I/O.

```bash
# Давление на CPU (some = хотя бы один поток ждёт, full = все ждут)
cat /proc/pressure/cpu

# Давление на память
cat /proc/pressure/memory

# Давление на I/O
cat /proc/pressure/io

# Мониторинг в цикле
watch -n1 'echo "=== CPU ===" && cat /proc/pressure/cpu && echo "=== MEM ===" && cat /proc/pressure/memory && echo "=== IO ===" && cat /proc/pressure/io'

# PSI для конкретного cgroup (контейнера/сервиса)
cat /sys/fs/cgroup/system.slice/docker-<id>.scope/cpu.pressure
```

`avg10` > 10% — заметная деградация. `avg10` > 40% — серьёзная проблема.

---

## /sys/fs/cgroup/ 🟢

Прямой доступ к статистике cgroup v2.

```bash
# CPU-статистика cgroup
cat /sys/fs/cgroup/system.slice/docker-<id>.scope/cpu.stat

# Использование памяти (current, limit, max)
cat /sys/fs/cgroup/system.slice/docker-<id>.scope/memory.current
cat /sys/fs/cgroup/system.slice/docker-<id>.scope/memory.max
cat /sys/fs/cgroup/system.slice/docker-<id>.scope/memory.stat

# I/O статистика
cat /sys/fs/cgroup/system.slice/docker-<id>.scope/io.stat

# Найти cgroup контейнера по PID
cat /proc/<pid>/cgroup
```

---

## docker stats 🟢

Потребление ресурсов по контейнерам.

```bash
# Все запущенные контейнеры (интерактивно)
docker stats

# Конкретный контейнер, без stream (разовый снимок)
docker stats --no-stream mycontainer

# Кастомный формат
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.BlockIO}}"
```

---

## podman stats 🟢

Аналог docker stats для Podman (daemonless).

```bash
# Все контейнеры
podman stats

# Разовый снимок
podman stats --no-stream

# По конкретному контейнеру
podman stats --no-stream mycontainer
```

---

## cAdvisor 🟢

Метрики по контейнерам с экспортом в Prometheus. Работает как сервис.

```bash
# Запуск в Docker
docker run -d \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --name=cadvisor \
  gcr.io/cadvisor/cadvisor:latest

# UI: http://localhost:8080
# Prometheus endpoint: http://localhost:8080/metrics

# Метрики конкретного контейнера
curl -s http://localhost:8080/api/v1.3/containers/docker/<container_id> | jq .
```

---

## crictl stats 🟢

Статистика CRI-совместимых рантаймов (containerd, CRI-O).

```bash
# Статистика всех контейнеров
crictl stats

# Конкретный контейнер
crictl stats --id <container_id>

# С выводом в JSON
crictl stats -o json
```

---

## kubectl top 🟢

Метрики ресурсов узлов и подов через Metrics API.

```bash
# Утилизация по узлам
kubectl top nodes

# Утилизация по подам в namespace
kubectl top pods -n production

# С разбивкой по контейнерам
kubectl top pods --containers -n production

# Сортировка по CPU
kubectl top pods --sort-by=cpu -n production

# По памяти
kubectl top pods --sort-by=memory -n production
```

---

## Tetragon 🟢

eBPF security и observability от Cilium. Трассировка процессов, файлов, сети на уровне ядра с K8s-контекстом.

```bash
# Установка через Helm
helm install tetragon cilium/tetragon -n kube-system

# CLI: наблюдение за событиями в реальном времени
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents

# Фильтр по namespace
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -n production

# Применить политику трассировки (TracingPolicy)
kubectl apply -f - <<EOF
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
  name: monitor-sensitive-files
spec:
  kprobes:
  - call: "security_file_open"
    args:
    - index: 0
      type: "file"
    selectors:
    - matchArgs:
      - index: 0
        operator: "Prefix"
        values: ["/etc/shadow", "/etc/passwd"]
EOF
```

---

## Inspektor Gadget 🟢

eBPF-гаджеты для отладки K8s. Знакомые BPF-инструменты с автоматическим K8s-контекстом (pod, namespace, container).

```bash
# Установка
kubectl gadget deploy

# Гаджеты-образы (основная форма с 0.31): имя гаджета — OCI-образ
kubectl gadget run trace_open:latest -n production
kubectl gadget run trace_tcp:latest -n production
kubectl gadget run trace_dns:latest -n production

# Встроенные гаджеты старой формы ещё работают, но объявлены нежелательными
kubectl gadget trace open -n production
kubectl gadget top block-io -n production
kubectl gadget profile cpu -n production -p mypod
```

С версии 0.31 гаджеты распространяются как OCI-образы и запускаются через
`kubectl gadget run <образ>`; встроенные в бинарник гаджеты сохранены ради
совместимости, но их использование в документации не рекомендуется.

---

## Hubble 🟢

eBPF сетевая observability от Cilium. L3/L4/L7 видимость сетевых потоков в K8s.

```bash
# CLI: наблюдение за сетевыми потоками
hubble observe

# Фильтр по namespace
hubble observe -n production

# Только dropped пакеты
hubble observe --verdict DROPPED

# Потоки к/от конкретного пода
hubble observe --pod production/frontend

# HTTP-потоки (L7)
hubble observe --protocol http -n production

# Hubble UI (веб-интерфейс)
cilium hubble ui
```

---

## Kepler 🟢

Энергопотребление K8s-кластера. Использует RAPL + GPU метрики, экспорт в Prometheus.

```bash
# Установка
helm install kepler kepler/kepler -n kepler --create-namespace

# Prometheus-метрики
curl -s http://kepler-exporter:9103/metrics | grep kepler_container

# Ключевые метрики:
# kepler_container_joules_total — потребление по контейнерам
# kepler_node_core_joules_total — потребление CPU по узлам
# kepler_node_dram_joules_total — потребление DRAM по узлам
```

---

## Falco (eBPF) 🟢

Обнаружение угроз в рантайме. CNCF graduated проект.

```bash
# Установка через Helm
helm install falco falcosecurity/falco -n falco --create-namespace

# Просмотр алертов
kubectl logs -n falco -l app.kubernetes.io/name=falco -f

# Пример правила: обнаружение shell в контейнере
# (встроено по умолчанию — rule: Terminal shell in container)

# Кастомное правило
kubectl apply -f - <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: falco-custom-rules
  namespace: falco
data:
  custom-rules.yaml: |
    - rule: Write to sensitive directory
      desc: Detect writes to /etc in containers
      condition: >
        container and open_write and fd.directory = /etc
      output: >
        File write in /etc (user=%user.name command=%proc.cmdline file=%fd.name container=%container.name)
      priority: WARNING
EOF
```

---

## Tracee 🟢

Runtime security через eBPF от Aqua Security.

```bash
# Запуск в Docker
docker run --name tracee -d --privileged \
  -v /lib/modules:/lib/modules:ro \
  -v /usr/src:/usr/src:ro \
  aquasec/tracee:latest

# Фильтр по событиям
docker run --rm --privileged aquasec/tracee:latest \
  --events openat,execve --scope comm=nginx

# Вывод в JSON
docker run --rm --privileged aquasec/tracee:latest \
  --output json --events security_file_open
```

---

## Parca 🟢

eBPF continuous profiling. Flame graphs для всего парка серверов.

```bash
# Установка агента: ассет называется по версии и платформе, голого
# имени parca-agent в релизах нет
curl -sL "https://github.com/parca-dev/parca-agent/releases/download/v0.48.0/parca-agent_0.48.0_$(uname -s)_$(uname -m).tar.gz" | tar -xz -C /usr/local/bin parca-agent

# Запуск агента (профилирует всё на хосте)
parca-agent --remote-store-address=parca-server:7070

# В Kubernetes (через Helm)
helm install parca-agent parca/parca-agent

# Сервер (UI + хранение)
helm install parca parca/parca
# UI: http://parca-server:7070
```

---

## Pyroscope 🟢

Continuous profiling от Grafana. Интегрируется с Grafana stack.

```bash
# В Kubernetes через Helm
helm install pyroscope grafana/pyroscope -n pyroscope --create-namespace

# eBPF-агент для профилирования всех процессов
helm install grafana-agent grafana/grafana-agent \
  --set agent.mode=flow \
  --set pyroscope.enabled=true
```

---

## Связанные заметки

- [Linux — средства диагностики производительности](./linux-perf-tools.md) — обзорная карта инструментов
- [Linux — контейнеризация](./linux-containerization.md) — устройство контейнеров
- [Linux — справочник команд: сетевой стек](./linux-tldr-network.md) — сеть под контейнерами
