К основному содержанию
скилл CX Codex

fleet-management — скилл для Claude Code: флот Alloy через OpAMP

Скилл для управления парком коллекторов Grafana Alloy: один раз описать пайплайн, раскатать его на нужные коллекторы по атрибутам и без перезапуска.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add grafana/skills --skill fleet-management -a claude-code
Открыть на GitHub

Что делает fleet-management

Скилл описывает работу с Fleet Management в Grafana Cloud. Пайплайн Alloy вы пишете один раз, а потом выбираете коллекторы через matchers по атрибутам — например env="production" или регуляркой region=~"us-.*". Доставка идёт по OpAMP, поэтому конфиг применяется на ходу, без рестарта коллекторов.

Внутри — три сценария: создание и деплой пайплайна, разбор коллектора со статусом REMOTE_CONFIG_STATUS_FAILED и подключение нового Alloy через bootstrap-блок remotecfg. Перед отправкой конфиг проверяется локально командой alloy fmt, а после раскатки статус каждого коллектора виден через ListCollectors — ждём REMOTE_CONFIG_STATUS_APPLIED. Здоровье компонентов смотрится в локальном UI Alloy на порту 12345.

Что нужно заранее: стек Grafana Cloud с включённым Fleet Management, API-токен с доступом к нему в формате Authorization: Bearer <STACK_ID>:<TOKEN>, Alloy версии 1.0 и выше на целевых машинах и CLI alloy локально для проверки синтаксиса. Без токена запросы к API не пройдут, так что это первое, что стоит завести.

Какие задачи решает

  • раскатать один конфиг Alloy на двести коллекторов сразу
  • найти коллектор, у которого конфиг не применился, и увидеть текст ошибки
  • проверить синтаксис River до отправки в Fleet Management
  • подключить новый Alloy одним блоком remotecfg
  • связать discovery.kubernetes с prometheus.remote_write

Примеры запросов агенту

  • Проверь pipeline.alloy через alloy fmt и задеплой его на коллекторы с атрибутом env="production"
  • Покажи коллекторы со статусом REMOTE_CONFIG_STATUS_FAILED и их сообщения об ошибке
  • Собери bootstrap-блок remotecfg для нового Alloy с атрибутами env и team

Как установить fleet-management

1Через Skills CLI (Vercel)

npx skills add grafana/skills --skill fleet-management -a claude-code

2Вручную: положить файлы

~/.claude/skills/fleet-management/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/fleet-management/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о fleet-management

Как установить fleet-management в Claude?

Выполните npx skills add grafana/skills --skill fleet-management -a claude-code. Скилл появится в ~/.claude/skills/fleet-management/SKILL.md.

Что делает fleet-management?

Помогает описывать пайплайны Alloy и раскатывать их на парк коллекторов через Fleet Management по OpAMP. Плюс разбирает неудачные применения конфига.

Что нужно для работы скилла?

Стек Grafana Cloud с включённым Fleet Management, API-токен с доступом к нему, Alloy 1.0 или новее на целевых машинах и локальный CLI alloy для проверки синтаксиса.

Исходный текст

SKILL.md · Apache-2.0
---
name: fleet-management
license: Apache-2.0
description: Manage a fleet of Grafana Alloy collectors with Fleet Management — author Alloy pipelines once, target them via attribute matchers (`env="production"`, regex `region=~"us-.*"`), push remotely via OpAMP without restarting collectors. Covers pipeline create / update / matcher RPCs, collector attribute API, `remotecfg` bootstrap block (standalone + Helm), pre-deploy `alloy fmt` validation, the local Alloy UI at port 12345 for component health, and post-deploy `REMOTE_CONFIG_STATUS_APPLIED` verification. Use when standing up a Cloud Alloy fleet, pushing a config change to 200 collectors, hunting why one collector shows `REMOTE_CONFIG_STATUS_FAILED`, validating River syntax before saving, or wiring `discovery.kubernetes` → `prometheus.remote_write` — even when the user says "configure Alloy", "remote config the collectors", "push pipeline", "OpAMP", "collector is unhealthy", or "manage agent config centrally" without naming Fleet Management.
---

# Grafana Fleet Management + Alloy Configuration

> **Docs**: https://grafana.com/docs/grafana-cloud/send-data/fleet-management/

Remote pipeline distribution to Alloy collectors via OpAMP — author once, target with matchers, hot-apply (no restart).

## Prerequisites

- Grafana Cloud stack with Fleet Management enabled
- API token with Fleet Management access (`Authorization: Bearer <STACK_ID>:<TOKEN>`)
- Alloy ≥ 1.0 installed on the targets (standalone or via `grafana/alloy` Helm chart)
- `alloy` CLI locally for `alloy fmt` syntax validation

## Concepts

- **Collector** — Alloy instance with unique ID + attributes
- **Pipeline** — named Alloy River config stored in Fleet Management
- **Matcher** — selector mapping a pipeline to collectors by attribute
- **Attributes** — key/value labels on a collector (`env`, `team`, `region`)

## Common Workflows

### 1. Author + validate + deploy a pipeline

```bash
# 1. Save the pipeline to a local file (lint catches typos before remote)
cat > pipeline.alloy <<'EOF'
prometheus.scrape "default" {
  targets    = []
  forward_to = [prometheus.remote_write.grafana_cloud.receiver]
  scrape_interval = "60s"
}

prometheus.remote_write "grafana_cloud" {
  endpoint {
    url = "https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push"
    basic_auth {
      username = "<METRICS_USERNAME>"
      password = env("GRAFANA_CLOUD_API_KEY")
    }
  }
}
EOF

# 2. Validate syntax LOCALLY before sending to Fleet Management
alloy fmt pipeline.alloy            # rewrites in place or errors with line number
alloy validate pipeline.alloy       # full semantic check (newer Alloy releases)

# 3. Create the pipeline via API (see references/api.md for the payload schema)
BASE=https://fleet-management-prod-us-east-0.grafana.net
TOKEN=<STACK_ID>:<API_TOKEN>
PAYLOAD=$(jq -n --rawfile c pipeline.alloy '{
  name:"k8s-metrics", contents:$c,
  matchers:[{name:"env",value:"production",type:"EQUAL"}]
}')
curl -s -X POST "$BASE/pipeline.v1.PipelineService/CreatePipeline" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "$PAYLOAD" | jq

# 4. Verify it rolled out — every targeted collector should report APPLIED within 1-2 polls
curl -s -X POST "$BASE/collector.v1.CollectorService/ListCollectors" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{}' \
  | jq '.collectors[] | select(.attributes[]?.value=="production")
        | {name, remoteConfigStatus}'
# Expect every row: remoteConfigStatus == "REMOTE_CONFIG_STATUS_APPLIED"
```

### 2. Troubleshoot a `REMOTE_CONFIG_STATUS_FAILED` collector

```bash
# 1. Find failed collectors and surface the error message
curl -s -X POST "$BASE/collector.v1.CollectorService/ListCollectors" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{}' \
  | jq '.collectors[] | select(.remoteConfigStatus=="REMOTE_CONFIG_STATUS_FAILED")
        | {name, msg:.remoteConfigStatusMessage}'

# 2. Re-validate the offending pipeline locally
alloy fmt pipeline.alloy

# 3. Inspect Alloy directly — UI at port 12345 shows per-component health
#    http://<COLLECTOR_HOST>:12345 → Graph / Components / Clustering tabs
kubectl -n monitoring logs -l app.kubernetes.io/name=alloy --tail=100 | grep -iE 'remote|error'

# 4. After fixing + re-pushing, re-list collectors and confirm the row flips to APPLIED.
```

Failure-message decoder table: [`references/api.md`](references/api.md).

### 3. Onboard a new Alloy with the bootstrap block

The bootstrap `remotecfg` block is the only local config required:

```alloy
remotecfg {
  url = "https://<FLEET_MANAGEMENT_HOST>"
  basic_auth { username = "<STACK_ID>"; password = env("GRAFANA_CLOUD_API_KEY") }
  poll_frequency = "1m"
  attributes = { "env" = env("ENVIRONMENT"), "team" = "platform" }
}
```

```bash
# Verify after start
curl -s http://localhost:12345/api/v0/web/components \
  | jq '.[] | select(.id=="remotecfg") | {id, health:.health.state}'
# health.state == "healthy"
```

Full bootstrap (standalone + Helm) + Assistant tool list: [`references/bootstrap.md`](references/bootstrap.md).

## Resources

- [Fleet Management docs](https://grafana.com/docs/grafana-cloud/send-data/fleet-management/)
- [Alloy components](https://grafana.com/docs/alloy/latest/reference/components/)
- [OpAMP spec](https://github.com/open-telemetry/opamp-spec)

© grafana · Apache-2.0 · grafana/skills

Похожие скиллы

Всё по теме «DevOps и инфраструктура» →
iot-fleet ruvnet Скилл управляет флотами устройств Cognitum Seed через CLI-утилиту cognitum-iot. Помогает создавать группы оборудования, добавлять устройства и контролировать удаление. CX Codex +1 764установок grafana-dashboards Seth Hobson Скилл помогает создавать Grafana-дашборды для метрик систем и приложений. Подойдёт для мониторинга, SLO и операционных интерфейсов наблюдаемости. CX Codex 13 097установок qdrant-monitoring qdrant Скилл подсказывает, как настроить мониторинг Qdrant и разобраться с зависшим оптимизатором, ростом памяти или медленными запросами. CX Codex +1 1 500установок grafana-dashboard aj-geddes Помогает агенту собирать дашборды Grafana: панели, переменные, алерты и провижининг. Пригодится, когда нужно быстро накидать мониторинг по метрикам. CX Codex +1 494установок monitoring-observability ahmedasmar Скилл для настройки мониторинга и наблюдаемости: стратегия метрик, алерты, дашборды, SLO и разбор инцидентов. CX Codex +1 493установок loki-logging devops-skills Скилл помогает настроить Grafana Loki, Promtail и запросы LogQL прямо в проекте, без похода в документацию. CX Codex +1 330установок

Из того же набора47

infrastructure Настраивает передачу метрик, логов и трейсов из Kubernetes, Linux-хостов и облаков в Grafana Cloud. Пригодится при подключении кластеров и виртуалок. CX Codex +1 4 300установок dpm-finder Скилл помогает найти метрики Prometheus с наибольшим числом точек в минуту в Grafana Cloud и выявить причины растущих расходов на мониторинг. CX Codex +1 4 200установок oncall-irm Помогает агенту настроить маршрутизацию алертов, дежурные ротации и жизненный цикл инцидентов в Grafana IRM / OnCall. CX Codex +1 4 200установок send-data Помогает настроить отправку метрик, логов, трейсов и профилей в Grafana Cloud. Пригодится при настройке Alloy, OTLP-экспортёров, Prometheus remote write и Helm-чартов. CX Codex +1 4 200установок cost-management Скилл разбирает счёт Grafana Cloud по командам и сервисам и подсказывает, как урезать метрики, логи и трейсы. CX Codex +1 4 200установок k6-docs Скилл для составления и проверки документации k6, генерации типов TypeScript и подготовки заметок к релизу. CX Codex +1 4 200установок testing Настраивает проверки доступности, нагрузочные тесты k6 и наблюдаемость фронтенда через Grafana Cloud. Нужен перед релизом и для поиска сбоев. CX Codex +1 4 200установок cue-kind-definition Помогает описывать ресурсы приложения в CUE: схемы spec и status, версии, ограничения полей и кодогенерация через grafana-app-sdk. CX Codex +1 4 200установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой