Практикум — Alloy, Beyla, Faro и Pyroscope
Практикум, шаг 8 из 9. Назад — Loki и Tempo. Дальше — OpenTelemetry и k6.
Зачем отдельные агенты
Раньше стек собирали из Prometheus Agent, Promtail, OpenTelemetry Collector и Grafana Agent. Grafana Alloy — единый конфигуратор на языке River, который заменяет эту связку.
| Компонент | Задача |
|---|---|
| Alloy | Scrape, remote_write, логи → Loki, OTLP → Tempo |
| Beyla | eBPF — HTTP/gRPC метрики и трейсы без изменения кода |
| Faro | Real User Monitoring — ошибки и performance в браузере |
| Pyroscope | Continuous profiling — CPU, memory, flame graphs |
Метрики и нагрузку с этих агентов сводят на дашбордах Grafana — Практикум Grafana — шаг 4; полный маршрут — о разделе.

Документация — Grafana Alloy, Beyla, Faro, Pyroscope.
Grafana Alloy — один агент
Пример alloy/config.alloy — scrape Prometheus + forward OTLP:
prometheus.scrape "default" {
targets = [{"__address__" = "localhost:9090"}]
forward_to = [prometheus.remote_write.default.receiver]
}
prometheus.remote_write "default" {
endpoint {
url = "http://prometheus:9090/api/v1/write"
}
}
otelcol.receiver.otlp "default" {
grpc { endpoint = "0.0.0.0:4317" }
output {
traces = [otelcol.exporter.otlp.tempo.input]
}
}
otelcol.exporter.otlp "tempo" {
client {
endpoint = "tempo:4317"
tls { insecure = true }
}
}
Compose:
alloy:
image: grafana/alloy:v1.4.0
ports:
- "12345:12345"
- "4317:4317"
volumes:
- ./alloy/config.alloy:/etc/alloy/config.alloy:ro
command: run /etc/alloy/config.alloy --server.http.listen-addr=0.0.0.0:12345
UI Alloy — http://localhost:12345 — граф компонентов и debug.
Alloy может заменить promtail в шаге 7:
loki.source.file "varlogs" {
targets = [{__path__ = "/var/log/*.log", job = "varlogs"}]
forward_to = [loki.write.default.receiver]
}
loki.write "default" {
endpoint { url = "http://loki:3100/loki/api/v1/push" }
}
Beyla — observability через eBPF
Grafana Beyla — daemon с eBPF, который видит HTTP/gRPC на уровне ядра и экспортирует RED-метрики + OTLP traces.
Запуск (Linux, нужны права CAP_BPF / privileged):
beyla:
image: grafana/beyla:1.7.0
privileged: true
pid: host
environment:
BEYLA_OPEN_PORT: "8080"
BEYLA_OTLP_TRACES_ENDPOINT: "tempo:4317"
BEYLA_PROMETHEUS_PORT: "8999"
Prometheus scrape beyla:8999. Код приложения менять не нужно — подходит для legacy и быстрого POC. RED-метрики Beyla добавляйте на дашборды Grafana — шаг 4.

Ограничения — только поддерживаемые протоколы и Linux; для полного контроля labels лучше SDK (шаг 9).
Faro — мониторинг фронтенда
Grafana Faro (Web SDK) отправляет ошибки JS, Web Vitals, session data в Grafana Cloud Frontend Observability или self-hosted collector. Визуализация RUM и backend-метрик — в одном UI Grafana (шаг 4).
Минимальная инициализация в SPA:
import { initializeFaro } from '@grafana/faro-web-sdk';
initializeFaro({
url: 'http://localhost:12347/collect',
app: { name: 'my-shop', version: '1.0.0' },
});
Alloy или Faro Collector принимает события и связывает их с backend trace через trace_id в заголовках.
Use case — «пользователь видит белый экран», а backend metrics зелёные.
Pyroscope — профилирование
Pyroscope (и grafana-pyroscope в Grafana 11+) хранит flame graphs. Приложение или Alloy отправляет профили; в Grafana — Profiles datasource, связь с traces через span profiles.
Docker:
pyroscope:
image: grafana/pyroscope:1.8.0
ports:
- "4040:4040"
SDK (Go пример):
import "github.com/grafana/pyroscope-go"
pyroscope.Start(pyroscope.Config{
ApplicationName: "myapp",
ServerAddress: "http://pyroscope:4040",
})
Сценарий — p99 latency вырос, CPU в норме → профиль показывает lock contention.
Как выбрать инструмент
| Ситуация | Инструмент |
|---|---|
| Единый agent в K8s / VM | Alloy |
| Legacy binary без SDK | Beyla |
| React/Vue ошибки пользователей | Faro |
| Утечки CPU / горячие функции | Pyroscope |
| Полный контроль телеметрии | OpenTelemetry (шаг 9) |
Чек-лист
- Alloy UI открывается, scrape targets видны
- (Linux) Beyla отдаёт метрики на :8999
- (Опционально) Faro SDK шлёт событие в collector
- (Опционально) flame graph в Pyroscope
Дальше — финальный стенд с OTel и k6.
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Два инструмента, русский UI Grafana 12, windows_exporter, UI-шпаргалки, targets, Explore, дашборд Windows и типичные сбои. Pull-модель, компоненты Prometheus, временные ряды, метки, exporters и Pushgateway — основа перед установкой. Docker Compose на Windows и Linux, Grafana 12 и ru-RU, windows_exporter, provisioning, health check и типичные сбои первого запуска. Counter, Gauge, Histogram, Summary, функции rate и increase, агрегации и типовые запросы для дашбордов. Проверка provisioned datasource, первая панель up, переменные, Explore, импорт дашбордов — после шага 2. node_exporter, windows_exporter на Windows, blackbox, Pushgateway, client libraries и /metrics. Alerting rules, Alertmanager, маршрутизация, inhibition, Grafana Unified Alerting и туториал по алертам. PLG-расширение — логи в Loki, трейсы в Tempo, долгосрочные метрики в Mimir, LogQL и корреляция в Grafana. OpenTelemetry Collector, инструментирование сервиса, нагрузочный тест k6 с метриками и полный docker-compose observability lab.Как пользоваться
Практикум Prometheus — архитектура и модель данных
Практикум Prometheus — установка и первые метрики
Практикум Prometheus — типы метрик и PromQL
Практикум Grafana — источники данных и дашборды
Практикум Prometheus — экспортёры и инструментирование
Практикум Prometheus — Alertmanager и Grafana Alerting
Практикум — Loki, Tempo и Mimir
Практикум — OpenTelemetry, k6 и итоговый стенд