Last9
официальныйБесшовно переносите контекст реальной производственной среды — логи, метрики и трейсы — в ваше локальное окружение, чтобы быстрее автоматически исправлять код.
Что можно делать с Last9 MCP?
Попросите вашего ассистента расследовать производственные инциденты, используя живые логи, трассировки и метрики из Last9.
- Ранжирование состояния сервисов — Используйте
get_service_summary, чтобы видеть количество запросов, пропускную способность и ошибки 4xx/5xx по всему парку сервисов. - Поиск медленных запросов к базе данных — Используйте
get_database_slow_queries, чтобы получить фактические самые медленные выполнения с идентификаторами трассировок для детального изучения. - Получение логов сервисов — Используйте
get_service_logs, чтобы загрузить необработанные строки логов, отфильтрованные по уровню серьезности и содержимому. - Трассировка одного запроса — Используйте
get_trace_waterfall, чтобы просмотреть иерархический водопад «родитель-потомок» для конкретного идентификатора трассировки. - Проверка состояния оповещений — Используйте
get_alert_rule_state, чтобы увидеть историю срабатываний для каждого правила оповещений за заданный период. - Управление дашбордами — Используйте
create_dashboard, чтобы создавать пользовательские дашборды с панелями и запросами.
Документация
MCP-сервер Last9

Ваш ИИ-агент не знает, что сломано в продакшене. Это исправляет.
Last9 MCP Server подключает Claude, Cursor, Windsurf и любых других ИИ-ассистентов с поддержкой MCP напрямую к данным вашего производственного observability — логи, метрики, трейсы, исключения, запросы к БД, алерты и деплои. Агент перестаёт гадать и начинает читать реальные сигналы.
Начало за 30 секунд (Хостинг)
Не нужно устанавливать бинарник. Не нужно управлять токенами. Один URL, OAuth в браузере — готово.
Найдите свой org slug в URL Last9: app.last9.io/<org_slug>/...
Claude Code
claude mcp add --transport http last9 https://app.last9.io/api/v4/organizations/<org_slug>/mcp
Введите /mcp, выберите last9, пройдите аутентификацию. Всё.
Cursor
Настройки > MCP > Добавить новый MCP-сервер:
{
"mcpServers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Нажмите Подключить, завершите OAuth.
VS Code
Требуется v1.99+. Откройте палитру команд → MCP: Add Server, вставьте URL, пройдите аутентификацию.
Или напрямую в settings.json:
{
"mcp": {
"servers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
}
Windsurf
Настройки > Cascade > Открыть MCP Marketplace > иконка шестерёнки (mcp_config.json):
{
"mcpServers": {
"last9": {
"serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Claude Web/Desktop
Настройки > Connectors > Добавить пользовательский коннектор. Назовите его last9, вставьте URL, пройдите аутентификацию.
Требуется доступ администратора к вашей организации Claude.
Самостоятельный хостинг (STDIO)
Используйте это, если ваш MCP-клиент не поддерживает HTTP-транспорт, или если вам нужно, чтобы сервер запускался локально.
Установка
Homebrew:
brew install last9/tap/last9-mcp
NPM:
npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest
Бинарные релизы (Windows / вручную):
Загрузите с GitHub Releases:
| Платформа | Архив |
|---|---|
| Windows (x64) | last9-mcp-server_Windows_x86_64.zip |
| Windows (ARM64) | last9-mcp-server_Windows_arm64.zip |
| Linux (x64) | last9-mcp-server_Linux_x86_64.tar.gz |
| Linux (ARM64) | last9-mcp-server_Linux_arm64.tar.gz |
| macOS (x64) | last9-mcp-server_Darwin_x86_64.tar.gz |
| macOS (ARM64) | last9-mcp-server_Darwin_arm64.tar.gz |
Получение Refresh-токена
Только администраторы могут создавать токены.
- Перейдите в API Access
- Нажмите Generate Token с правами на запись
- Скопируйте его
Конфигурация клиента
Homebrew:
{
"mcpServers": {
"last9": {
"command": "/opt/homebrew/bin/last9-mcp",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
NPM:
{
"mcpServers": {
"last9": {
"command": "npx",
"args": ["-y", "@last9/mcp-server@latest"],
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
Куда вставить это:
| Клиент | Расположение |
|---|---|
| Claude Web/Desktop | Настройки > Разработчик > Редактировать конфигурацию (claude_desktop_config.json) |
| Cursor | Настройки > Настройки Cursor > MCP > Добавить новый глобальный MCP-сервер |
| Windsurf | Настройки > Cascade > MCP Marketplace > иконка шестерёнки (mcp_config.json) |
| VS Code | Оборачивается в { "mcp": { "servers": { ... } } } в settings.json — подробности |
Конфигурация STDIO для VS Code
{
"mcp": {
"servers": {
"last9": {
"type": "stdio",
"command": "/opt/homebrew/bin/last9-mcp",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
}
Для NPM: используйте "command": "npx" и добавьте "args": ["-y", "@last9/mcp-server@latest"].
Windows
После загрузки с GitHub Releases распакуйте и укажите полный путь:
{
"mcpServers": {
"last9": {
"command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
Путь через NPM проще на Windows — не нужно управлять путями.
Переменные окружения
| Переменная | По умолчанию | Описание |
|---|---|---|
LAST9_REFRESH_TOKEN | (обязательно) | Refresh-токен из API Access |
LAST9_DATASOURCE | По умолчанию организации | Имя источника данных / кластера — полезно, если у вас несколько кластеров Levitate |
LAST9_API_HOST | app.last9.io | Переопределить хост API |
LAST9_TOOLSETS | все инструменты | Наборы инструментов через запятую (logs, traces, metrics, alerts, dashboards, investigate, all). Псевдоним: LAST9_MCP_TOOLSETS |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | Максимальное количество записей для чанкових запросов get_logs |
LAST9_DEBUG_CHUNKING | false | Установите true для логирования деталей планирования чанков для get_logs, get_service_logs, get_traces |
LAST9_DISABLE_TELEMETRY | true | Установите false для включения внутреннего OTel-трейсинга |
OTEL_SDK_DISABLED | — | Стандартная переменная окружения OTel. Переопределяет LAST9_DISABLE_TELEMETRY |
OTEL_EXPORTER_OTLP_ENDPOINT | — | Конечная точка OTLP-коллектора (только когда телеметрия включена) |
OTEL_EXPORTER_OTLP_HEADERS | — | Заголовки аутентификации OTLP (только когда телеметрия включена) |
Что это умеет
Здоровье сервисов
get_service_summary— Ранжированные строки парка(service, env): количество запросов за интервал, throughput_rpm, количество HTTP 4xx/5xx и количество ошибок gRPCget_service_environments— Доступные окружения для ваших сервисов. Запустите это первым — другим инструментам APM требуетсяenvотсюдаget_service_performance_details— Полная разбивка: throughput, частота ошибок, p50/p90/p95/avg/max, apdex, доступностьget_service_operations_summary— Операции, сгруппированные по HTTP-эндпоинтам, вызовам БД, обмену сообщениями, HTTP-клиентамget_service_dependency_graph— Карта зависимостей с throughput, задержкой и частотой ошибок для восходящих/нисходящих/инфраструктурныхget_apm_service_deviations— Сравнение текущего окна с базовым окном той же длительности: регрессии/улучшения, сверка Apdex и итоговый результат (парк или отдельный сервис)get_exceptions— Исключения на стороне сервера с фильтрами по сервису и спанам
Наблюдаемость баз данных
Четыре инструмента, которые напрямую работают с производительностью вашей базы данных, полученной из спанов трассировки OpenTelemetry. Дополнительная инструментация не требуется, если вы уже используете OTel.
get_databases— Обнаружение всех баз данных в вашей инфраструктуре: тип БД, хост, throughput (запросов/мин), p95 задержка, частота ошибок, количество зависимых сервисовget_database_slow_queries— Фактические самые медленные выполнение запросов, упорядоченные по длительности, с ID трассировок для перехода к полным трейсамget_database_queries— Паттерны запросов и агрегаты: как часто выполняется запрос, средняя/p95 длительность, частота ошибокget_database_server_metrics— Метрики на стороне сервера от самого хоста БД (CPU, соединения, hit rate буфера — зависит от вашей системы БД)
Поддерживает PostgreSQL, MySQL, MongoDB, Redis, Aerospike и все остальное, что OTel трассирует с атрибутом db_system.
Prometheus / PromQL
prometheus_range_query— Запросы диапазона PromQL по любой метрикеprometheus_instant_query— Мгновенные запросы; используйте функции свёртки, такие какavg_over_time,sum_over_timeprometheus_label_values— Значения меток для данного рядаprometheus_labels— Все метки, доступные для ряда
Направляйте их на другой источник данных / кластер, отличный от стандартного, установив LAST9_DATASOURCE.
Логи
get_logs— Полные запросы JSON к конвейеру логов (агрегации, фильтры, извлечение полей)get_service_logs— Необработанные строки логов для сервиса, фильтруются по уровню серьезности и содержимому телаget_log_attributes— Глобальный каталог атрибутов в схеме логов за временной интервалget_log_attributes_for_pipeline— Поля логов, фактически присутствующие для выполняемого конвейера (ограниченное обнаружение), каждое с точнымfilter_fieldget_drop_rules— Правила отбрасывания логов из Last9 Control Planeadd_drop_rule— Создать новое правило отбрасывания для сокращения объёма логов на источнике
Трейсы
get_traces— Запросы JSON к конвейеру трейсов для широкого поиска и агрегацийget_service_traces— Трейсы по точному ID трассировки или имени сервиса. Используйте это, когда у вас есть ID трассировки — это быстрееget_trace_attributes— Глобальный каталог атрибутов в схеме трейсовget_trace_attributes_for_pipeline— Атрибуты, фактически присутствующие для выполняемого конвейера (ограниченное обнаружение), каждый с точнымfilter_fieldget_trace_attribute_values— Различные значения атрибута трейса, опционально ограниченные конвейеромget_trace_attribute_deviations— Ранжирует значения атрибутов, которые различаются между двумя ограниченными когортами спанов (медленные и быстрые, ошибки и без ошибок, или два временных окна). Корреляция, а не причинаget_trace_waterfall— Один точный трейс как водопад родитель/ребенок с интервально-объединенным self-time, самыми медленными спанами и предупреждениями графа
События изменений и алерты
get_change_events— Деплои, изменения конфигурации, откаты. Сопоставляйте инциденты с изменениямиget_alert_config— Конфигурации правил алертов — доступны для поиска по имени, серьезности, типу, тегамget_alerts— Срабатывающие в данный момент алерты в пределах временного окнаget_alert_rule_state— Историческое состояние срабатывания (1/0) по каждому правилу алерта за временной диапазон, сгруппированное поrule_id. Фильтруется по группе алертов, имени правила, фильтрам меток и состоянию.get_notification_channels— Настроенные каналы уведомлений (Slack, PagerDuty, email и т.д.)
Кастомные дашборды
list_dashboards— Все настраиваемые дашборды в вашей организации: ID, имена и метаданныеget_dashboard— Полное определение дашборда по ID, включая панели и запросыcreate_dashboard— Создать новый настраиваемый дашборд с панелями, запросами и метаданнымиupdate_dashboard— Обновить существующий дашборд по ID (дашборды только для чтения в системе возвращают ошибку)delete_dashboard— Удалить настраиваемый дашборд по IDlist_dashboard_snapshots— Замороженные снимки на момент времени для дашборда (только метаданные)get_dashboard_snapshot— Полный замороженный снимок, включая данные панелей для RCA / доступных для просмотра представленийdelete_dashboard_snapshot— Удалить замороженный снимок по ID
Нечёткое разрешение имён
did_you_mean— Когда агент не уверен в имени сущности, это возвращает ближайшие совпадения из вашего каталога (сервисы, окружения, хосты, базы данных, деплои/наборы K8s, задания). До 3 предложений с оценками сходства. Сервер автоматически вызывает это перед большинством инструментов, когда поиск имени возвращает пустой результат.
Как это работает
Глубокие ссылки на каждый ответ. Каждый инструмент возвращает поле deep_link — прямую ссылку на дашборд Last9 для точного запроса и временного диапазона. Агент может передать вам ссылку; вы кликаете; вы там.
Наборы инструментов. По умолчанию сервер предоставляет все инструменты. Хосты автоматизации, которым нужны только исследования (логи/трейсы/метрики), могут установить LAST9_TOOLSETS=investigate (или передать --toolsets=investigate), чтобы tools/list оставался небольшим без массового отключения на стороне клиента. Именованные пакеты: logs, traces, metrics, alerts, dashboards, investigate, all. Неизвестные имена быстро завершаются ошибкой. Пакет metrics сам по себе не включает list_datasources или did_you_mean — используйте investigate (или комбинируйте наборы), когда эти помощники по обнаружению нужны.
Ресурсы справочника инструментов. Длинные руководства по logjson/tracejson/service-logs/metrics являются ресурсами MCP (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics), а не всегда включённым текстом описаний. Критические правила запросов остаются в описании инструмента, чтобы агенты, которые никогда не вызывают resources/read, все равно получали правильные указания по построению. Обнаруживайте специфичные для организации поля с помощью get_log_attributes / get_log_attributes_for_pipeline (и их эквиваленты трейсов) — они не внедряются в описания.
Чанкование больших результатов. get_logs и get_traces обрабатывают большие наборы результатов с помощью чанкования, а не усечения. Лимит по умолчанию — 5000 записей для логов; настраивается через LAST9_MAX_GET_LOGS_ENTRIES.
Разработка
HTTP-режим, тестирование с curl, сборка из исходников
Запуск в HTTP-режиме
export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server
Сервер запускается на http://localhost:8080/mcp.
Тестирование с curl
Обработчик Streamable HTTP работает в stateless-режиме, поэтому каждый запрос обслуживается независимо. Ручкопожатие initialize и заголовок Mcp-Session-Id необязательны — клиенты, которые их отправляют, по-прежнему работают (заголовок принимается и игнорируется), а клиенты также могут сразу переходить к tools/list / tools/call. Каждый инструмент — это независимый запрос/ответ; сервер не отправляет уведомлений сервер→клиент, поэтому GET /mcp (поток SSE) возвращает 405.
# List tools — a session handshake is optional in stateless mode
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'
# Call a tool
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_service_logs",
"arguments": {
"service_name": "your-service-name",
"lookback_minutes": 30,
"limit": 10
}
}
}'
Сборка из исходного кода
git clone https://github.com/last9/last9-mcp-server.git
cd last9-mcp-server
go build -o last9-mcp-server
LAST9_HTTP=true ./last9-mcp-server
LAST9_HTTP=true предназначен для локальной разработки. Для реального использования удобнее размещённая HTTP-конечная точка.
Справочник инструментов
Все параметры, стандарты ввода времени и подробности
Ввод времени
- Абсолютное время (
start_time_iso/end_time_isoилиtime_iso) имеет приоритет надlookback_minutes. - Для относительных окон: используйте
lookback_minutes. - Для абсолютных окон: используйте RFC3339/ISO8601 —
2026-02-09T15:04:05Z. - Устаревший
YYYY-MM-DD HH:MM:SSпринимается только для совместимости.
get_exceptions
limit(целое, необязательно): Максимум исключений. По умолчанию: 20.lookback_minutes(целое, необязательно): По умолчанию: 60.start_time_iso/end_time_iso(строка, необязательно): Абсолютный диапазон времени.service_name(строка, необязательно): Фильтр по сервису.span_name(строка, необязательно): Фильтр по имени спана.env(строка, необязательно): Фильтр по окружению.
get_service_summary
start_time_iso/end_time_iso(строка, необязательно)env(строка, необязательно): PromQL-регулярное выражение. По умолчанию —.*. Для точного совпадения нужны якоря (например,^prod$).sort_by(строка, необязательно):request_count(по умолчанию),throughput_rpm,http_4xx_count,http_5xx_countилиgrpc_error_count.limit(целое, необязательно): Максимум ранжированных строк. Если опущено или 0 — значит 10; значения выше 100 ограничиваются до 100.
get_service_environments
start_time_iso/end_time_iso(строка, необязательно)
Все остальные инструменты APM требуют значение
env. Используйте"", если этот запрос возвращает пусто.
get_service_performance_details
service_name(строка, обязательно)lookback_minutes(целое, необязательно): По умолчанию: 60.start_time_iso/end_time_iso(строка, необязательно)env(строка, необязательно): По умолчанию —prod.
get_service_operations_summary
service_name(строка, обязательно)lookback_minutes(целое, необязательно): По умолчанию: 60.start_time_iso/end_time_iso(строка, необязательно)env(строка, необязательно): По умолчанию —prod.
get_service_dependency_graph
service_name(строка, необязательно)lookback_minutes(целое, необязательно): По умолчанию: 60.start_time_iso/end_time_iso(строка, необязательно)env(строка, необязательно): По умолчанию —prod.
get_apm_service_deviations
service_name(строка, необязательно): Опустите для всего парка; укажите для одного сервиса и его корреляций операций.lookback_minutes(целое, необязательно): Текущее окно. По умолчанию: 60.start_time_iso/end_time_iso(строка, необязательно): Явное текущее окно.baseline_start_time_iso/baseline_end_time_iso(строка, необязательно): Явный базовый период. По умолчанию — непосредственно предшествующее окно той же длительности.datasource(строка, необязательно): Ограничить сравнение одним источником данных.env(строка, необязательно): По умолчанию —prod.max_services/max_operations(целое, необязательно): По умолчанию 10, максимум 10 каждое.
get_databases
env(строка, необязательно): Фильтр по окружению. По умолчанию: все.lookback_minutes(целое, необязательно): По умолчанию: 60.start_time_iso/end_time_iso(строка, необязательно)
get_database_slow_queries
db_system(строка, необязательно): например,postgresql,mysql,mongodb,redis.host(строка, необязательно): Хост базы данных (net_peer_name).service_name(строка, необязательно): Имя вызывающего сервиса.env(строка, необязательно)min_duration_ms(число с плавающей точкой, необязательно): Минимальная длительность запроса в мс.lookback_minutes(целое, необязательно): По умолчанию: 60.start_time_iso/end_time_iso(строка, необязательно)limit(целое, необязательно): По умолчанию: 20.
get_database_queries
db_system(строка, необязательно)host(строка, необязательно)service_name(строка, необязательно)env(строка, необязательно)lookback_minutes(целое, необязательно): По умолчанию: 60.start_time_iso/end_time_iso(строка, необязательно)limit(целое, необязательно): По умолчанию: 20.
get_database_server_metrics
db_system(строка, обязательно): например,postgresql,mysql,mongodb,redis,aerospike.host(строка, необязательно)lookback_minutes(целое, необязательно): По умолчанию: 60.start_time_iso/end_time_iso(строка, необязательно)
prometheus_range_query
query(строка, обязательно): PromQL-запрос.start_time_iso/end_time_iso(строка, необязательно): По умолчанию — последние 60 минут.lookback_minutes(число с плавающей точкой, необязательно): По умолчанию: 60.
prometheus_instant_query
query(строка, обязательно)time_iso(строка, необязательно): По умолчанию — сейчас.lookback_minutes(число с плавающей точкой, необязательно)
prometheus_label_values
match_query(строка, необязательно): PromQL-фильтр.label(строка, обязательно): Имя метки.start_time_iso/end_time_iso(строка, необязательно)
prometheus_labels
match_query(строка, необязательно): PromQL-фильтр.start_time_iso/end_time_iso(строка, необязательно)
get_logs
logjson_query(массив, обязательно): JSON-конвейерный запрос.lookback_minutes(целое, необязательно): По умолчанию: 5.start_time_iso/end_time_iso(строка, необязательно)limit(целое, необязательно): Серверное значение по умолчанию: 5000.index(строка, необязательно):physical_index:<name>илиrehydration_index:<block_name>.
Для инвентаризации сервисов на основе логов сначала выполните запрос physical_index_service_count:
sum by (name, service_name, env) (physical_index_service_count{destination="logs"})
Используйте service_name как ServiceName, env как окружение, если оно присутствует, и name как физическое имя индекса. Если name="default", опустите index; для нестандартного физического индекса, выбранного пользователем, передайте index: "physical_index:<name>". Если бэкенд отклоняет явную фильтрацию по физическому индексу, повторите запрос без index и сообщите, что явная фильтрация по физическому индексу недоступна для этого бэкенда.
get_service_logs
service_name(строка, обязательно)lookback_minutes(целое, необязательно): По умолчанию: 60.limit(целое, необязательно): По умолчанию: 20.env(строка, необязательно)severity_filters(массив, необязательно): например,["error", "warn"]. Логика ИЛИ.body_filters(массив, необязательно): например,["timeout", "failed"]. Логика ИЛИ.start_time_iso/end_time_iso(строка, необязательно)index(строка, необязательно)
Несколько типов фильтров объединяются по И. Каждый массив внутри использует ИЛИ.
Сначала используйте get_logs для широких агрегированных подсчётов; используйте get_service_logs только после сужения до сервиса/окружения/индекса и небольшого набора выборки.
get_log_attributes
lookback_minutes(целое, необязательно): По умолчанию: 15.start_time_iso/end_time_iso(строка, необязательно)region(строка, необязательно)index(строка, необязательно)
get_log_attributes_for_pipeline
pipeline(массив, обязательно): Предыдущие стадии фильтрации для ограничения области обнаружения, например,[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].lookback_minutes(целое, необязательно): По умолчанию: 15.start_time_iso/end_time_iso(строка, необязательно)region(строка, необязательно)index(строка, необязательно)
get_drop_rules
Без параметров. Перечисляет правила отбрасывания через GET /otel_settings/drop?region=....
add_drop_rule
name(строка, обязательно)filters(массив, обязательно): Каждый фильтр:key,value,operator(equals/not_equals),conjunction(and).- Ключи фильтров должны использовать
attributes["key_name"]илиresource.attributes["key_name"](требование API Last9). - Создаёт правило через
POST /otel_settings/drop?region=...&cluster_id=....
get_traces
Используйте для широких поисков и агрегаций. Для точного поиска по ID трейса используйте get_service_traces.
tracejson_query(массив, обязательно)start_time_iso/end_time_iso(строка, необязательно)lookback_minutes(целое, необязательно): По умолчанию: 60.limit(целое, необязательно): По умолчанию: 5000.
get_service_traces
Требуется ровно один из параметров trace_id или service_name.
trace_id(строка, необязательно): Период просмотра по умолчанию: 72 часа.service_name(строка, необязательно): Период просмотра по умолчанию: 60 минут.lookback_minutes(целое, необязательно)start_time_iso/end_time_iso(строка, необязательно)limit(целое, необязательно): По умолчанию: 10.env(строка, необязательно)
get_trace_attributes
lookback_minutes(целое, необязательно): По умолчанию: 15.start_time_iso/end_time_iso(строка, необязательно)region(строка, необязательно)
get_trace_attributes_for_pipeline
pipeline(массив, обязательно): Предыдущие стадии фильтрации для ограничения области обнаружения, например,[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].lookback_minutes(целое, необязательно): По умолчанию: 15.start_time_iso/end_time_iso(строка, необязательно)region(строка, необязательно)
get_trace_attribute_values
tag_name(строка, обязательно): Имя атрибута изget_trace_attributes(например,resource_departmentилиattributes['http.method']).pipeline(массив, необязательно): Предыдущие стадии фильтрации для ограничения значений; опустите для глобальных значений.region(строка, необязательно)
get_trace_attribute_deviations
comparison_mode(строка, обязательно):latency,errorsилиtime.service_name(строка, обязательно)environment(строка, обязательно): Точное значениеdeployment.environment.operation(строка, необязательно)filters(массив, необязательно): Условия фильтрации JSON трейса.candidate_attributes(массив, необязательно): Максимум 8; опустите для ограниченного обнаружения.latency_threshold_ms(число, необязательно): Требуется для режимаlatency; отклоняется для других режимов.start_time_iso/end_time_iso(строка, необязательно)lookback_minutes(целое, необязательно): По умолчанию: 15. Максимум: 15.baseline_start_time_iso/baseline_end_time_iso(строка, необязательно): Требуется для режимаtime; непересекающийся и равный по длительности целевому окну.minimum_cohort_size(целое, необязательно): По умолчанию: 100. Минимум: 20.minimum_value_support(целое, необязательно): По умолчанию: 20. Минимум: 10.limit(целое, необязательно): По умолчанию: 10. Максимум: 10.
Требуется включённая сопутствующая возможность бэкенда.
get_trace_waterfall
trace_id(строка, обязательно)environment(строка, необязательно)start_time_iso/end_time_iso(строка, необязательно)lookback_minutes(целое, необязательно): По умолчанию: 4320 (72 часа).selected_span_id(строка, необязательно): Возвращает атрибуты, события и ссылки только для этого спана.max_spans(целое, необязательно): По умолчанию: 500. Максимум: 1000.
Возвращает конверт investigation-evidence/v1; водопад находится в data.
get_change_events
start_time_iso/end_time_iso(строка, необязательно)lookback_minutes(целое, необязательно): По умолчанию: 60.service_name(строка, необязательно)env(строка, необязательно)event_name(строка, необязательно): Сначала вызовите без этого параметра, чтобы получитьavailable_event_names.
get_alert_config
search_term(string, необязательный): Свободный текстовый поиск по имени, группе, источнику данных, тегам.rule_name(string, необязательный)severity(string, необязательный)rule_type(string, необязательный):staticилиanomaly.alert_group_name/alert_group_type/data_source_name(string, необязательный)tags(array, необязательный): Все должны совпадать (логика И).
get_alerts
time_iso(string, необязательный): Время оценки в формате RFC3339.window(integer, необязательный): Период оглядки в секундах. По умолчанию: 900. Диапазон: 60–86400.lookback_minutes(integer, необязательный): Диапазон: 1–1440.
get_alert_rule_state
start_time(integer, обязательный): Начало диапазона в Unix-эпохе (включительно).end_time(integer, обязательный): Конец диапазона в Unix-эпохе (включительно).step(integer, обязательный): Разрешение в секундах между выборками. Количество выборок((end_time - start_time) / step + 1)ограничено 100.alert_group_id(string, необязательный): Фильтр по ID группы оповещений.rule_name(string, необязательный): Regex-фильтр по имени правила.alert_group_name(string, необязательный): Regex-фильтр по имени группы оповещений.label_filters(string, необязательный): Разделенные запятыми фильтры метокkey=value.state(string, необязательный): Фильтр по состоянию (например,firing).
Возвращает JSON-карту rule_id -> [{timestamp, is_firing}]. Временная метка, когда правило отсутствует в ответе вышестоящей системы, сообщается как is_firing=0 — это означает «не наблюдалось как срабатывание», а не подтвержденное нормальное состояние.
get_notification_channels
Без параметров. Возвращает все настроенные каналы уведомлений (Slack, PagerDuty, email, webhooks и т.д.).
did_you_mean
query(string, обязательный): Имя для поиска — частичное, с опечатками или сокращенное.type(string, необязательный): Ограничить по типу сущности:service,environment,host,database,k8s_deployment,k8s_namespace,job.
Возвращает до 3 ближайших совпадений с оценками сходства. Используйте это перед любым вызовом инструмента, если имя сущности неопределенно. Если предыдущий вызов вернул пустые результаты, попробуйте это перед повторной попыткой.
list_dashboards
Без параметров. Возвращает все пользовательские дашборды в организации в виде JSON-массива с id, name и метаданными.
get_dashboard
id(string, обязательный): UUID дашборда.region(string, необязательный): Регион для заполнения запросов панелей. По умолчанию используется настроенный регион источника данных.
create_dashboard
dashboard(object, обязательный): Определение дашборда сnameиpanels[]. Каждая панель требуетname,version,layout(x,y,w,h),visualization.typeиqueries[].metadata(object, необязательный): Метаданные дашборда — поля_categoryи_type(например,{"_category":"custom","_type":"metrics"}).
update_dashboard
id(string, обязательный): UUID дашборда для обновления.dashboard(object, обязательный): Полное тело замены дашборда (та же структура, что и при создании).metadata(object, необязательный): Метаданные замены. Системные дашборды только для чтения возвращают ошибку 403.
delete_dashboard
id(string, обязательный): UUID дашборда для удаления. Системные дашборды только для чтения не могут быть удалены.
list_dashboard_snapshots
dashboard_id(string, обязательный): UUID дашборда, чьи снимки нужно перечислить.
Возвращает только метаданные (id, name, expires_at и т.д.). Используйте get_dashboard_snapshot для замороженных данных панелей.
get_dashboard_snapshot
id(string, обязательный): UUID снимка.
Возвращает полный замороженный снимок, включая dashboard_definition, panel_data, time_range и variables.
delete_dashboard_snapshot
id(string, обязательный): UUID снимка для удаления.
Тестирование
См. TESTING.md для настройки и инструкций по интеграционному тестированию.
