netpulse
Релиз v1.4.2 — добавлено профилирование сокетов через eBPF →

Сетевая телеметрия с нулевым оверхедом.
Прямо из ядра Linux.

netpulse подключает легковесные eBPF-трейспоинты к сетевой подсистеме Linux, непрерывно транслируя пропускную способность сокетов и интерфейсов без нагрузки на центральный процессор.

$curl -fsSL https://get.netpulse.io | sh

Поток телеметрии в реальном времени

Прямой мониторинг физических сетевых карт и шифрованных оверлеев (WireGuard, Docker bridges) в лаконичном консольном интерфейсе.

netpulse top — узел: edge-node-01
┌── ИНТЕРФЕЙС ─── СТАТУС ─── СКОРОСТЬ RX ─── СКОРОСТЬ TX ─── ПАКЕТЫ ───── ОШИБКИ/СБРОС ── ШЛЮЗ ────┐ │ eth0 UP 10G 48.24 MB/s 14.12 MB/s 128.4k p/s 0 / 0 1.1ms │ │ wg0 UP VIRT 8.71 MB/s 8.69 MB/s 34.2k p/s 0 / 0 14.2ms │ │ docker0 UP BRDG 1.20 MB/s 0.18 MB/s 4.1k p/s 0 / 0 — │ │ lo LOOPBACK 114.20 KB/s 114.20 KB/s 1.1k p/s 0 / 0 — │ └── АКТИВНЫЕ СОКЕТЫ (НАИБОЛЬШАЯ ПРОПУСКНАЯ СПОСОБНОСТЬ) ───────────────────────────────────────────┘ PID ПРОЦЕСС FD ИСХОДЯЩИЙ АДРЕС ЦЕЛЕВОЙ АДРЕС ПРОТО НАГРУЗКА 29410 nginx-worker 4 192.168.1.10:443 104.21.72.1:58432 TCP 32.1 MB/s 31104 envoy-ingress 12 0.0.0.0:8080 172.17.0.4:38910 TCP 11.4 MB/s 44912 vector-agent 7 127.0.0.1:9000 10.0.0.5:9000 UDP 2.8 MB/s ─────────────────────────────────────────────────────────────────────────────────────────────────── Сводка по узлу: Прием (RX): 58.15 MB/s | Отдача (TX): 22.99 MB/s | Загрузка CPU: 1.8% | Память (RSS): 14.2 MB

Ключевые возможности

Разработано для production-окружений, где предсказуемость потребления ресурсов и надежность критически важны.

Трейсинг сокетов через eBPF

Перехватывает события TCP/UDP ядра без переключения контекста и задержек для хост-приложений.

Бинарник без зависимостей

Полностью статический исполняемый файл без привязки к glibc. Запускается на Alpine, NixOS и Ubuntu.

Нативный эндпоинт Prometheus

Встроенный HTTP-сервер отдает метрики для сбора в Prometheus и визуализации в Grafana из коробки.

Потоковый вывод в NDJSON

Перенаправляйте структурированные события в Vector, Fluentbit или собственные bash-скрипты.

Установка

Загрузите предсобранный бинарник или воспользуйтесь пакетным менеджером вашей ОС.

# Загрузка и проверка контрольной суммы бинарника в /usr/local/bin
curl -fsSL https://get.netpulse.io | sudo sh
brew tap netpulse/tap
brew install netpulse
yay -S netpulse-bin
docker run --rm -it --net=host --cap-add=NET_ADMIN ghcr.io/netpulse/netpulse:latest
Привилегии ядра Linux

Для трейсинга сетевых событий через eBPF требуются права CAP_NET_ADMIN либо запуск через sudo. Базовая статистика сетевых карт работает от непривилегированного пользователя.

Параметры запуска (CLI)

netpulse работает как в интерактивном режиме терминала, так и в виде фонового демона.

Параметр По умолчанию Описание
-i, --interface all Выбор конкретного сетевого интерфейса (например, eth0, wg0).
-w, --interval 1s Периодичность опроса и агрегации телеметрии.
-f, --format interactive Формат вывода данных: interactive, json или csv.
--prom-port отключен TCP-порт для встроенного Prometheus HTTP-эндпоинта (например, 9102).
-s, --sockets true Включение модуля eBPF для привязки трафика к процессам и сокетам.

Файл конфигурации

Постоянные параметры сервиса указываются в ~/.config/netpulse/config.yaml.

# Параметры демона netpulse
version: 1

collector:
  interval: "1s"
  interfaces:
    - "eth0"
    - "wg0"
  enable_ebpf_sockets: true

exporter:
  prometheus:
    enabled: true
    listen_addr: "127.0.0.1:9102"
    metrics_path: "/metrics"

Диагностика и решение проблем

Ошибка доступа к BPF-трейспоинтам (Permission denied)

Если при старте возникает ошибка загрузки BPF-объектов, назначьте права на исполняемый файл без полного root-доступа:

sudo setcap cap_net_admin,cap_net_raw+ep /usr/local/bin/netpulse