investigate
Investigate — расследование проблемы по всем data sources (Sentry, Prometheus, Loki, Kibana, Nomad). Используй когда есть симптом (ошибка, деградация, аномалия), но причина неизвестна, а полноценный /incident избыточен.
- License 许可
- MIT
- 最近更新
- 2026-11-05
- Stars
- ★ 7
- Forks
- 1
01 前言 Front Matter
- name
- investigate
- description
- Investigate — расследование проблемы по всем data sources (Sentry, Prometheus, Loki, Kibana, Nomad). Используй когда есть симптом (ошибка, деградация, аномалия), но причина неизвестна, а полноценный /incident избыточен.
- allowed-tools
- Bash(pcurl:*)
- argument-hint
- [описание проблемы, период, сервис]
03 SKILL.md 正文
/investigate — расследование проблемы
Найти причину симптома и подтвердить её данными из всех доступных источников. Какие источники есть — зависит от стадии проекта; подключения — из project-index.md в auto-memory проекта и ~/.claude/memory/infra-{group}.md.
Примеры запросов: «API тормозит», «500 ошибки на /rpc/», «у пользователя не работает X», «что-то сломалось после деплоя».
Для полного workflow production-инцидента с HITL, mitigation и post-mortem —
/incident.
Входные данные
- Описание проблемы (свободный текст)
- Период — по умолчанию последний час
- Сервис — по умолчанию все из project-index
Как расследовать
Цель — гипотеза о root cause, подтверждённая данными, либо честный вывод, что данных не хватает. Остановись, когда причина подтверждена двумя независимыми источниками (например, всплеск в Sentry и рост error rate в Prometheus в то же время) или когда все доступные источники проверены.
- Scope. Из описания извлеки время начала, сервис, конкретный RPC-метод или URL и ключевые слова для поиска.
- Жив ли сервис (/api-health) — первым делом:
Не отвечает — сразу к Nomad.pcurl @{api_prod_profile} https://{api_prod_host}/{rpc_endpoint} -s -L -X POST \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","method":"{known_method}","params":{},"id":1}' \ -w '\nHTTP %{http_code} | Total: %{time_total}s | TTFB: %{time_starttransfer}s\n' - Источники — параллельно. Начни с одного-двух обзорных запросов к каждому и углубляйся туда, где есть сигнал. Источник без аномалий в отчёте — одной строкой.
- Деплои. Сопоставь начало проблемы с деплоями (Sentry releases, Grafana annotations). Недавний деплой — посмотри, что в нём изменилось.
- Код. Есть гипотеза (stacktrace, подозрительный метод) — найди код локально и сверяй с задеплоенной версией (commit из Sentry release), а не с HEAD:
git diff {release_commit}..HEAD --stat. - Отчёт — сохрани в
docs/llm/incidents/{YYYY-MM-DD}-{slug}/report.mdи покажи. Если запись файлов недоступна (plan mode — например, вызов из ANALYZE в /solve), верни отчёт целиком текстом: его сохранит вызывающий скилл.
Источники
Sentry (/sentry): unresolved issues за период по частоте; новые issues (firstSeen в периоде); поиск по ключевым словам. Для top-3 — latest event (stacktrace, breadcrumbs).
Prometheus (/prometheus): RPC error rate и HTTP 5xx; latency по методам (средняя, top медленных); RPS в сравнении с обычным уровнем; saturation — goroutines, память, DB connections.
Loki (/loki): ошибки сервиса (| json | level="ERROR"), логи конкретного метода, медленные запросы (durationMS > 500), записи с ошибкой (err!="<nil>").
Nomad (/nomad): инфраструктурные причины — OOM kills (increase(nomad_client_allocs_oom_killed[{period}])), рестарты (increase(nomad_client_allocs_restart[{period}])), blocked allocations, ресурсы нод.
Kibana / OpenSearch (/kibana, если есть): 5xx и медленные запросы (requestTime > 1) в nginx-access, записи nginx-error.
Grafana (/grafana): annotations за период (деплои, инциденты) и ссылки на дашборды:
pcurl @{grafana_profile} 'https://{grafana_host}/api/annotations?from='$(date -v-{period} +%s)000'&to='$(date +%s)000'&limit=20' -s
Зависимые сервисы — из секции «Связанные сервисы» project-index: есть ли в тот же период ошибки в Sentry и рост error rate у них.
YouTrack (/youtrack): возможно, проблема уже известна:
pcurl @{yt_profile} 'https://{yt_host}/api/issues?query=project:{PROJECT}+{keywords}&fields=idReadable,summary&$top=5' -s
Формат отчёта
Секции для недоступных источников и источников без аномалий не раздувай — одна строка «проверено, аномалий нет» или «нет доступа».
## Incident Report
**Время:** {start} — {end}
**Severity:** Critical / High / Medium / Low
**Affected:** {services}, {endpoints}
### Root Cause
{гипотеза и данные, которые её подтверждают; что осталось неподтверждённым}
### Timeline
- HH:MM — Release {version} deployed
- HH:MM — Error rate started growing
- HH:MM — First user reports
### Здоровье
- API: {alive/down}, latency: {time}s
- Nomad: OOM={count}, restarts={count}, blocked={count}
### Ошибки (Sentry)
| # | Issue | Events | Users | Trend |
|---|-------|--------|-------|-------|
### Метрики (Prometheus)
- Error rate: {current}% (обычно {baseline}%)
- Latency: {current}ms (обычно {baseline}ms)
- Throughput: {current} RPS (обычно {baseline} RPS)
- Goroutines: {current} | Memory: {current} | DB conns: {current}
### Логи (Loki, Kibana)
- {количество ошибок, top сообщений, 5xx и медленные запросы в nginx}
### Зависимые сервисы
| Сервис | Sentry errors | Error rate |
|--------|---------------|------------|
### Деплои
- Последний деплой: {version} в {time}
### Ссылки
- [Sentry issues]({url})
- [Grafana dashboard]({url})
- [YouTrack]({url}) — если найден существующий тикет
### Рекомендации
- {action items}
- Тикет в YouTrack: {нужен / уже есть {ID}}
Правила
- Используй только системы, доступные на стадии проекта (из project-index)
- Данных мало — так и скажи, не додумывай
- В отчёте — прямые ссылки на дашборды и issues
- Проблема подтверждена, а тикета нет — предложи создать его в YouTrack
04 同仓库更多 Skills
zenrpc
Zenrpc — справочник по JSON-RPC 2.0 серверу для Go. Используй при создании и редактировании RPC-сервисов.
youtrack
YouTrack — задачи через REST API и pcurl. Используй для поиска issues, создания, обновления описаний, смены assignee/stage/приоритета, логирования времени и работы с комментариями.
topsrv
topsrv — метрики, алерты, CVE и HTTP-логи серверов проекта через публичный JSON-RPC API app.topsrv.io. Используй, когда нужна загрузка CPU, памяти или диска хоста, метрики PostgreSQL/nginx/angie агента topsrv (`topsrv_*`), какие алерты горят, уязвимые пакеты на серверах или кто (боты, сети, IP) нагружает сайт.
testing
Testing — используй всегда, когда пишешь или правишь Go-тесты (*_test.go), в том числе по сценариям Given/When/Then из spec: фреймворк как в соседних файлах, префикс TestDB, фабрики pkg/db/test, реальная БД без моков. Также при настройке TestMain/test-short и когда тесты падают в gate, но проходят локально.
solve
Solve — полный цикл решения задачи из YouTrack: preflight → анализ → план → реализация → ревью → коммит. Используй при любой YouTrack-задаче (`/solve PLF-819`); флаг `--fast` сокращает HITL для тривиальных багфиксов.
skills-check
Skills Check — smoke-тесты интеграций из project-index.md. Используй для проверки что pcurl-профили и URL всех data-source скиллов ещё живы.