database-observability — скилл для Claude Code
Подключает базу к Database Observability в Grafana Cloud: образцы запросов, explain plans и метрики по каждому digest — без правок в коде приложения.
npx skills add grafana/skills --skill database-observability -a claude-codeЧто делает database-observability
Скилл ведёт агента по шагам для PostgreSQL и MySQL. Для PostgreSQL он включает pg_stat_statements через shared_preload_libraries и перезапуск, заводит роль grafana_monitoring с правами pg_monitor и CONNECT на нужную базу, затем проверяет расширение запросом SELECT count(*) FROM pg_stat_statements. Для MySQL всё короче: пользователь с SELECT, PROCESS, REPLICATION CLIENT и проверка, что performance_schema включён.
Дальше в дело идёт Alloy: в конфиг добавляется блок database_observability.postgres или database_observability.mysql, после перезапуска примерно через минуту приходит первый сбор. В Grafana Cloud инстанс должен появиться с непустой серией db_query_total{db_instance="mydb"}. Если серии нет через две минуты — смотрите логи Alloy на ошибки подключения.
На управляемых базах вроде RDS или Cloud SQL pg_stat_statements уже стоит, но выключен: его включают через parameter group или флаг, а расширение создают на уровне базы. Учётные данные мониторинга придётся завести самому — без них Alloy не подключится.
Какие задачи решает
- включить
pg_stat_statementsи проверить, что расширение отвечает - создать отдельного пользователя для мониторинга базы
- добавить в Alloy сбор метрик PostgreSQL или MySQL
- найти медленные запросы по digest и построить explain plan
- связать медленный SQL с трейсом сервиса через
db.statement
Примеры запросов агенту
- Настрой Database Observability для PostgreSQL на RDS: включи сбор статистики запросов и заведи роль для мониторинга
- База на MySQL тормозит — подключи её к Grafana Cloud через Alloy и покажи топ запросов по среднему времени
- Почему в Grafana Cloud пусто по моему инстансу? Проверь логи Alloy и права на
pg_stat_statements
Как установить database-observability
1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill database-observability -a claude-code2Вручную: положить файлы
~/.claude/skills/database-observability/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/database-observability/
1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill database-observability -a codex2Вручную: положить файлы
.agents/skills/database-observability/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill database-observability -a cursor2Вручную: положить файлы
.cursor/skills/database-observability/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install grafana/skills database-observability2Вручную: положить файлы
.github/skills/database-observability/SKILL.md1Через Skills CLI (Vercel)
npx skills add grafana/skills --skill database-observability -a gemini-cli2Командой платформы
gemini skills install https://github.com/grafana/skills --path skills/grafana-cloud/database-observabilityВручную: положить файлы
.devin/skills/database-observability/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add grafana/skills --skill database-observability -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о database-observability
Как установить database-observability в Claude Code?
Выполните npx skills add grafana/skills --skill database-observability -a claude-code. Скилл окажется в ~/.claude/skills/database-observability/SKILL.md.
Что делает database-observability?
Готовит базу к мониторингу в Grafana Cloud: включает сбор статистики запросов, создаёт пользователя с минимальными правами и настраивает компоненты Alloy. В итоге приходят образцы запросов, explain plans и RED-метрики.
Нужно ли менять код приложения?
Нет, данные собираются со стороны базы. Корреляция с трейсами работает через атрибуты OTel db.statement, db.system и db.name.
Исходный текст
SKILL.md · Apache-2.0
---
name: database-observability
license: Apache-2.0
description: Set up Grafana Cloud Database Observability for MySQL and PostgreSQL — enables `pg_stat_statements` / Performance Schema, creates a least-privilege monitoring user, configures the `database_observability.postgres` / `database_observability.mysql` Alloy components, ships query samples + visual explain plans + RED metrics + schema details to Grafana Cloud, and correlates slow queries with application traces via `db.statement` / `db.system` OTel attributes. Use when monitoring database performance, diagnosing slow queries, setting up DB observability for RDS / Aurora / Cloud SQL / Azure Database / self-managed instances, correlating DB metrics with APM, or alerting on query latency — even when the user says "my database is slow", "find the slow queries", or "monitor RDS" without saying "observability".
---
# Grafana Cloud Database Observability
> **Docs**: https://grafana.com/docs/grafana-cloud/monitor-applications/database-observability/
Query-level insights (RED metrics, query samples, explain plans) for MySQL and PostgreSQL without application code changes. GA since April 2026.
## Common Workflows
### PostgreSQL setup
```sql
-- 1. Enable pg_stat_statements (requires restart)
-- In postgresql.conf: shared_preload_libraries = 'pg_stat_statements'
-- Then restart PostgreSQL.
-- 2. Create a least-privilege monitoring user
CREATE USER grafana_monitoring WITH PASSWORD 'secret';
GRANT pg_monitor TO grafana_monitoring;
GRANT CONNECT ON DATABASE mydb TO grafana_monitoring;
-- 3. Enable the extension on each monitored DB
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
-- 4. Verify
SELECT count(*) FROM pg_stat_statements;
-- Should return >= 0 (not an error). If "relation does not exist": step 3 didn't run.
```
5. Add the [Alloy config block from references/alloy-config.md § PostgreSQL](references/alloy-config.md#postgresql)
6. Restart Alloy and wait ~60s for first scrape
7. **Verify in Grafana Cloud** → Database Observability — the instance should appear with non-empty `db_query_total{db_instance="mydb"}` series. If empty after 2 minutes: check Alloy logs for connection errors, then re-verify pg_stat_statements permissions.
### MySQL setup
```sql
-- 1. Create least-privilege monitoring user
CREATE USER 'grafana_monitoring'@'%' IDENTIFIED BY 'secret';
GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO 'grafana_monitoring'@'%';
GRANT SELECT ON performance_schema.* TO 'grafana_monitoring'@'%';
FLUSH PRIVILEGES;
-- 2. Verify performance_schema is enabled (default in MySQL 8+)
SELECT @@performance_schema;
-- Returns 1 → enabled. 0 → set performance_schema=ON in my.cnf + restart.
```
3. Add the [Alloy config block from references/alloy-config.md § MySQL](references/alloy-config.md#mysql)
4. Restart Alloy, wait ~60s, verify the instance appears in Grafana Cloud → Database Observability
## Supported databases
| Database | Variants |
|----------|---------|
| **MySQL** | Self-managed, RDS MySQL, Aurora MySQL, Cloud SQL MySQL, Azure Database for MySQL |
| **PostgreSQL** | Self-managed, RDS PostgreSQL, Aurora PostgreSQL, Cloud SQL PostgreSQL, Azure Database for PostgreSQL |
For managed databases (RDS / Cloud SQL / Azure), `pg_stat_statements` is preinstalled but disabled — enable it via the parameter group / flag, then re-create the extension at the DB level.
## What you get
- **Query Performance dashboard** (auto-provisioned): top queries by total time / call count / mean latency, sampled query texts with parameters, visual explain plans, RED metrics per query digest
- **APM correlation**: drill from a slow service-latency span to the specific slow SQL via `db.statement` / `db.system` / `db.name` OTel attributes — see [references/queries-alerts.md § Trace correlation](references/queries-alerts.md#trace-correlation)
- **Alerting** on query latency, error rate, and connection-pool saturation — full alert YAML in [references/queries-alerts.md § Alert rules](references/queries-alerts.md#alert-rules)
## References
- [`references/alloy-config.md`](references/alloy-config.md) — full Alloy `database_observability.postgres` / `database_observability.mysql` config blocks + collector reference (`pg_stat_statements`, `query_samples`, `schema_details`, `explain_plans`)
- [`references/queries-alerts.md`](references/queries-alerts.md) — key PromQL queries, alert rule YAML, and trace-correlation setup
© grafana · Apache-2.0 · grafana/skills