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

tempo — скилл для Claude Code: трейсинг Grafana Tempo и TraceQL

Скилл для развёртывания Grafana Tempo и написания запросов TraceQL: от локального Docker Compose до Helm в Kubernetes.

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

Что делает tempo

Скилл описывает Grafana Tempo как бэкенд распределённого трейсинга, которому нужно только объектное хранилище. Внутри — рабочие сценарии: поднять Tempo локально через Docker Compose, отправить синтетический OTLP-спан, проверить, что трейс дошёл, и выполнить запрос в Grafana Explore. Есть пример конфигурации Alloy для приёма OTLP и отправки в Tempo.

Отдельный блок — TraceQL. Показаны запросы по медленным и ошибочным запросам, структурные операторы (>>, <<), метрики вроде rate() с разбивкой по сервисам. Запрос можно выполнить и через API поиска. Для Kubernetes приведена установка Helm-чарта tempo-distributed с настройкой бакета S3, а также проверка готовности подов и порт-форвард на query-frontend.

Для распределённого развёртывания нужен бакет S3, GCS или Azure. При включённой мультитенантности все запросы обязаны нести заголовок X-Scope-OrgID — если он не совпадает у отправителя и источника данных Grafana, в Explore будет пусто. Это первое, что стоит проверить при такой жалобе. В скилле есть раздел с типовыми сбоями: 503 на /ready, 429 при отправке, медленные запросы TraceQL.

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

  • поднять Tempo локально и убедиться, что спаны доходят
  • написать запрос TraceQL по медленным или упавшим запросам
  • развернуть tempo-distributed в Kubernetes через Helm
  • настроить бакет S3, GCS или Azure для блоков
  • разобраться, почему в Explore не видно трейсов

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

  • Подними Tempo локально через Docker Compose и проверь, что тестовый OTLP-спан дошёл
  • Напиши запрос TraceQL: медленные запросы сервиса frontend дольше 1s
  • Разверни tempo-distributed в Kubernetes с хранением блоков в S3

Как установить tempo

1Через Skills CLI (Vercel)

npx skills add grafana/skills --skill tempo -a claude-code

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

~/.claude/skills/tempo/SKILL.md

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

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

Вопросы о tempo

Как установить tempo в Claude?

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

Что делает скилл tempo?

Помогает развернуть Grafana Tempo и писать запросы TraceQL. Покрывает приём OTLP, Jaeger и Zipkin, путь записи через distributor и block-builder в объектное хранилище, а также метрики и графы сервисов.

Почему в Grafana Explore не видно трейсов?

Проверьте, что заголовок X-Scope-OrgID у отправителя совпадает с настройкой источника данных Tempo в Grafana. При включённой мультитенантности несовпадение даёт пустой результат.

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

SKILL.md · Apache-2.0
---
name: tempo
license: Apache-2.0
description: Stand up Grafana Tempo as a cost-efficient distributed-tracing backend that only needs object storage, and write TraceQL queries against it. Covers OTLP + Jaeger + Zipkin ingestion, the distributor → live-store → block-builder → object-storage write path, metrics-generator for RED spanmetrics + service graphs, Helm `tempo-distributed` deployment, multi-tenant `X-Scope-OrgID`, TraceQL span / resource / event scopes, structural operators (`>>`, `<<`), `rate()` + `quantile_over_time` metrics, and the traces-to-logs / metrics / profiles datasource links. Use when deploying Tempo, writing a TraceQL query for slow / errored requests, debugging "no traces showing in Explore", sizing queriers / compactors, configuring S3 / GCS / Azure block storage, or wiring trace ↔ log ↔ profile correlation — even when the user says "tracing backend", "find slow requests", "show me the service graph", "store traces in S3", "Jaeger compatible store", or "what called this span" without naming Tempo.
---

# Grafana Tempo

> **Docs**: https://grafana.com/docs/tempo/latest/

Cost-efficient distributed tracing. Accepts OTLP / Jaeger / Zipkin / OpenCensus / Kafka. Stores Parquet blocks in S3/GCS/Azure.

## Prerequisites

- Docker (quick start) or Kubernetes (production)
- Object storage bucket (S3/GCS/Azure) for distributed deployments
- An OTLP-emitting app or `tempo-cli` for synthetic traffic
- A Grafana stack with a Tempo datasource for querying

## Common Workflows

### 1. Stand up Tempo locally + verify ingestion

```bash
# 1. Start the official Docker Compose example
git clone https://github.com/grafana/tempo.git
cd tempo/example/docker-compose/local
mkdir -p tempo-data
docker compose up -d

# 2. Verify readiness
curl -sf http://localhost:3200/ready                              # → "ready"

# 3. Send a synthetic OTLP span (full payload in scratch terminal)
curl -X POST -H 'Content-Type: application/json' \
  http://localhost:4318/v1/traces \
  -d '{"resourceSpans":[{"resource":{"attributes":[{"key":"service.name","value":{"stringValue":"my-service"}}]},
       "scopeSpans":[{"spans":[{"traceId":"5B8EFFF798038103D269B633813FC700","spanId":"EEE19B7EC3C1B100",
       "name":"my-op","startTimeUnixNano":1689969302000000000,"endTimeUnixNano":1689969302500000000,"kind":2}]}]}]}'

# 4. Verify the trace landed (ingestion-counter > 0 and the trace is fetchable)
curl -s http://localhost:3200/metrics | grep tempo_distributor_spans_received_total | head
curl -s http://localhost:3200/api/v2/traces/5B8EFFF798038103D269B633813FC700 | jq '.batches | length'
# Expect > 0.

# 5. In Grafana → Explore → Tempo, run TraceQL: {resource.service.name="my-service"}
```

### 2. Send traces from an app via Alloy

```alloy
// alloy.river
otelcol.receiver.otlp "default" {
  grpc { endpoint = "0.0.0.0:4317" }
  http { endpoint = "0.0.0.0:4318" }
  output { traces = [otelcol.exporter.otlp.tempo.input] }
}

otelcol.exporter.otlp "tempo" {
  client {
    endpoint = "tempo:4317"
    tls { insecure = true }
  }
}
```

```bash
# Verify Alloy forwarded successfully
curl -s http://localhost:12345/metrics | grep otelcol_exporter_sent_spans
# Then: same Grafana → Explore → Tempo check.
```

### 3. Write + run TraceQL

```traceql
# Slow requests from a service
{ resource.service.name = "frontend" && duration > 1s }

# Server span that has a downstream error (structural)
{ kind = server } >> { status = error }

# Error rate per service (metrics)
{ status = error } | rate() by (resource.service.name)
```

Full operator + scope cheat sheet, intrinsics list, metric functions: [`references/traceql.md`](references/traceql.md).

```bash
# Via the API
curl -sG --data-urlencode 'q={resource.service.name="frontend" && duration > 1s}' \
  --data-urlencode "start=$(date -d '1h ago' +%s)" --data-urlencode "end=$(date +%s)" \
  http://localhost:3200/api/search | jq '.traces | length'
```

### 4. Deploy on Kubernetes (Helm)

```bash
helm repo add grafana https://grafana.github.io/helm-charts
helm install tempo grafana/tempo-distributed --version 1.61.3 \
  --set storage.trace.backend=s3 \
  --set storage.trace.s3.bucket=my-tempo-bucket \
  --set storage.trace.s3.region=us-east-1

# Verify every pod is Ready (distributor, ingester, querier, query-frontend, compactor)
kubectl get pods -n default -l app.kubernetes.io/instance=tempo
kubectl port-forward svc/tempo-query-frontend 3200:3200 &
curl -sf http://localhost:3200/ready
```

## Multi-tenancy

```yaml
multitenancy_enabled: true
# All requests must include header: X-Scope-OrgID: <tenant-id>
```

Full architecture, ports, performance tuning, metrics-generator config, multi-tenant client snippets, traces-to-logs/metrics/profiles datasource: [`references/architecture-and-operations.md`](references/architecture-and-operations.md).

## Troubleshooting

- `/ready` → 503 → ingester still joining; check `tempo_ingester_*` metrics + logs
- 429 on push → raise `max_outstanding_per_tenant` or per-tenant ingest limits
- "no traces showing in Explore" → confirm `X-Scope-OrgID` matches between writer and Grafana datasource
- TraceQL slow → narrow `start`/`end`, add a service.name filter, enable dedicated Parquet columns for hot attributes

## Resources

- [Tempo docs](https://grafana.com/docs/tempo/latest/)
- [TraceQL reference](https://grafana.com/docs/tempo/latest/traceql/)
- [`references/traceql.md`](references/traceql.md) — full TraceQL cheat sheet
- [`references/architecture-and-operations.md`](references/architecture-and-operations.md) — components, ports, Helm, tuning, datasource links

© grafana · Apache-2.0 · grafana/skills

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

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

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

prometheus Справочник по PromQL, правилам алертов Prometheus и маршрутизации Alertmanager. Помогает генерировать метрики, алерты и правила записи. CX Codex +1 5 200установок alerting-irm Настраивает Grafana Alerting, IRM и SLO: от правил и маршрутизации до дежурств и эскалаций. Пригодится для YAML- и API-конфигурации. CX Codex +1 5 100установок assistant-mcp Помогает подключить ИИ-агентов к Grafana Cloud через MCP-сервер mcp-grafana. Пригодится для чтения метрик, поиска дашбордов и проверки алертов прямо в кодовой базе. CX Codex +1 5 000установок alloy Помогает писать и проверять конфиги Grafana Alloy: сбор метрик, логов, трейсов и профилей в один пайплайн. CX Codex +1 5 000установок pyroscope Скилл для непрерывного профилирования приложений через Grafana Pyroscope: флейм-графы CPU, памяти и аллокаций прямо в диалоге с агентом. CX Codex +1 4 700установок beyla Автоматически подключает eBPF-мониторинг HTTP, gRPC и баз данных через Grafana Beyla без изменения кода. Пригодится для сбора трейсов и RED-метрик с готовых бинарников. CX Codex +1 4 700установок app-observability Ведёт агента по настройке Grafana Cloud: RED-метрики из OTel-трейсов, карты сервисов, браузерный RUM через Faro и наблюдение за вызовами LLM. CX Codex +1 4 400установок infrastructure Настраивает передачу метрик, логов и трейсов из Kubernetes, Linux-хостов и облаков в Grafana Cloud. Пригодится при подключении кластеров и виртуалок. CX Codex +1 4 300установок

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

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