Last9

oficial

Traga perfeitamente o contexto de produção em tempo real—logs, métricas e traces—para o seu ambiente local, corrigindo código automaticamente com mais rapidez.

O que você pode fazer com Last9 MCP?

  • Investigar a saúde do serviço — Solicite um resumo classificado da frota com contagens de requisições, throughput e taxas de erro via get_service_summary.

  • Extrair logs brutos do serviço — Recupere linhas de log filtradas por severidade ou conteúdo do corpo para um serviço específico usando get_service_logs.

  • Rastrear desempenho do banco de dados — Descubra bancos de dados, consultas lentas e padrões de consulta com get_databases e ferramentas relacionadas.

  • Executar consultas PromQL — Execute consultas de intervalo ou instantâneas contra qualquer métrica usando prometheus_range_query ou prometheus_instant_query.

  • Correlacionar mudanças com incidentes — Busque eventos de implantação e mudanças de configuração para entender o que alterou o comportamento de produção via get_change_events.

  • Gerenciar dashboards personalizados — Liste, crie, atualize ou valide dashboards programaticamente com list_dashboards e create_dashboard.

Documentação

Servidor MCP Last9

last9 mcp demo

Seu agente de IA não sabe o que está quebrado em produção. Isso resolve isso.

O Servidor MCP Last9 conecta Claude, Cursor, Windsurf e qualquer outro assistente de IA compatível com MCP diretamente aos seus dados de observabilidade em produção — logs, métricas, traces, exceções, consultas de banco de dados, alertas e deploys. O agente para de adivinhar e começa a ler o sinal real.


Comece em 30 segundos (Hospedado)

Sem binário para instalar. Sem tokens para gerenciar. Uma URL, OAuth no seu navegador, pronto.

Encontre o slug da sua organização na sua 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

Digite /mcp, selecione last9, autentique. Só isso.

Cursor

Configurações > MCP > Adicionar Novo Servidor MCP:

{
  "mcpServers": {
    "last9": {
      "type": "http",
      "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

Clique em Conectar, conclua o OAuth.

VS Code

Requer v1.99+. Abra a Paleta de Comandos → MCP: Adicionar Servidor, cole a URL, autentique.

Ou diretamente em settings.json:

{
  "mcp": {
    "servers": {
      "last9": {
        "type": "http",
        "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
      }
    }
  }
}

Windsurf

Configurações > Cascade > Abrir MCP Marketplace > ícone de engrenagem (mcp_config.json):

{
  "mcpServers": {
    "last9": {
      "serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

Claude Web/Desktop

Configurações > Conectores > Adicionar conector personalizado. Nomeie como last9, cole a URL, autentique.

Requer acesso de administrador à sua organização Claude.


Auto-hospedado (STDIO)

Use isto quando seu cliente MCP não suportar transporte HTTP, ou quando você precisar do servidor rodando localmente.

Instalação

Homebrew:

brew install last9/tap/last9-mcp

NPM:

npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest

Lançamentos binários (Windows / manual):

Baixe dos Lançamentos do GitHub:

PlataformaArquivo
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

Obter um Token de Atualização

Apenas administradores podem criar tokens.

  1. Vá para Acesso à API
  2. Clique em Gerar Token com permissões de Escrita
  3. Copie-o

Configuração do Cliente

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>"
      }
    }
  }
}

Onde colar isto:

ClienteLocal
Claude Web/DesktopConfigurações > Desenvolvedor > Editar Config (claude_desktop_config.json)
CursorConfigurações > Configurações do Cursor > MCP > Adicionar Novo Servidor MCP Global
WindsurfConfigurações > Cascade > MCP Marketplace > ícone de engrenagem (mcp_config.json)
VS CodeEnvolva em { "mcp": { "servers": { ... } } } em settings.json — detalhes
Config STDIO do VS Code
{
  "mcp": {
    "servers": {
      "last9": {
        "type": "stdio",
        "command": "/opt/homebrew/bin/last9-mcp",
        "env": {
          "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
        }
      }
    }
  }
}

Para NPM: use "command": "npx" e adicione "args": ["-y", "@last9/mcp-server@latest"].

Windows

Após baixar dos Lançamentos do GitHub, extraia e aponte para o caminho completo:

{
  "mcpServers": {
    "last9": {
      "command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

A rota NPM é mais fácil no Windows — sem gerenciamento de caminho.

Variáveis de Ambiente

VariávelPadrãoDescrição
LAST9_REFRESH_TOKEN(obrigatório)Token de atualização de Acesso à API
LAST9_DATASOURCEpadrão da orgNome do datasource/cluster — útil quando você tem vários clusters Levitate
LAST9_API_HOSTapp.last9.ioSubstitui o host da API
LAST9_TOOLSETStodas as ferramentasConjuntos de ferramentas separados por vírgula para expor (logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all). Alias: LAST9_MCP_TOOLSETS
LAST9_MAX_GET_LOGS_ENTRIES5000Máximo de entradas para solicitações get_logs em blocos
LAST9_USE_LOG_SEARCH_APIfalseDefina true para responder get_logs e get_service_logs com uma chamada de busca no lado do servidor em vez de blocos no lado do cliente
LAST9_DEBUG_CHUNKINGfalseDefina true para registrar detalhes de planejamento de blocos para get_logs, get_service_logs, get_traces
LAST9_DISABLE_TELEMETRYtrueDefina false para habilitar rastreamento OTel interno
OTEL_SDK_DISABLED—Variável de ambiente OTel padrão. Substitui LAST9_DISABLE_TELEMETRY
OTEL_EXPORTER_OTLP_ENDPOINT—Endpoint do coletor OTLP (apenas quando a telemetria está habilitada)
OTEL_EXPORTER_OTLP_HEADERS—Cabeçalhos de autenticação OTLP (apenas quando a telemetria está habilitada)

O Que Ele Pode Fazer

Saúde do Serviço

  • get_service_summary — Linhas (service, env) da frota classificadas: request_count do intervalo, throughput_rpm, contagens HTTP 4xx/5xx e contagens de erros gRPC
  • get_service_environments — Ambientes disponíveis para seus serviços. Execute isto primeiro — outras ferramentas APM precisam de env daqui
  • get_service_performance_details — Detalhamento completo: throughput, taxa de erro, p50/p90/p95/média/máx, apdex, disponibilidade
  • get_service_operations_summary — Operações agrupadas por endpoints HTTP, chamadas de banco de dados, mensageria, clientes HTTP
  • get_service_dependency_graph — Mapa de dependências com throughput, latência e taxas de erro para upstream/downstream/infra
  • get_apm_service_deviations — Compare uma janela atual contra uma linha de base de duração igual: regressões/melhorias, reconciliação de Apdex e um resultado final (frota ou serviço único)
  • get_exceptions — Exceções no lado do servidor com filtros de serviço e span

Observabilidade de Banco de Dados

Quatro ferramentas que vão direto ao desempenho do seu banco de dados, derivadas de spans de trace OpenTelemetry e, onde traces estão ausentes, métricas de infraestrutura como CloudWatch. Nenhuma instrumentação extra é necessária se você já usa OTel.

  • get_databases — Descubra todos os bancos de dados na sua infraestrutura: tipo de banco, host, throughput (consultas/min), latência p95, taxa de erro, número de serviços dependentes. Também descobre bancos de dados a partir de métricas de infraestrutura como CloudWatch, sem necessidade de instrumentação de trace — essas linhas carregam um valor de atividade em vez de métricas de trace
  • get_database_slow_queries — As execuções de consultas mais lentas reais, ordenadas por duração, com IDs de trace para aprofundar em traces completos
  • get_database_queries — Padrões e agregados de consultas: com que frequência uma consulta é executada, duração média/p95, taxa de erro
  • get_database_server_metrics — Métricas no lado do servidor do próprio host do banco (CPU, conexões, taxas de acerto de buffer — depende do seu sistema de banco)

Suporta PostgreSQL, MySQL, MongoDB, Redis, Aerospike e qualquer outra coisa que o OTel rastreie com um atributo db_system — além de bancos de dados descobertos a partir de métricas de infraestrutura como CloudWatch, cujas linhas carregam um valor de atividade em vez de métricas de trace.

Prometheus / PromQL

  • prometheus_range_query — Consultas de intervalo PromQL sobre qualquer métrica
  • prometheus_instant_query — Consultas instantâneas; use funções de rollup como avg_over_time, sum_over_time
  • prometheus_label_values — Valores de rótulo para uma determinada série
  • prometheus_labels — Todos os rótulos disponíveis para uma série

Aponte-os para um datasource/cluster diferente do padrão definindo LAST9_DATASOURCE.

Logs

  • get_logs — Consultas completas de pipeline de logs JSON (agregações, filtros, extração de campos)
  • get_service_logs — Linhas de log brutas para um serviço, filtráveis por severidade e conteúdo do corpo
  • get_log_attributes — Catálogo global de atributos no esquema de logs para uma janela de tempo
  • get_log_attributes_for_pipeline — Campos de log realmente presentes para um pipeline em andamento (descoberta com escopo), cada um com seu filter_field exato
  • get_drop_rules — Regras de descarte de logs do Plano de Controle Last9
  • add_drop_rule — Crie uma nova regra de descarte para reduzir o volume de logs na origem

Traces

  • get_traces — Consultas de pipeline de traces JSON para buscas amplas e agregações
  • get_service_traces — Traces por ID de trace exato ou nome de serviço. Use isto quando você tiver um ID de trace — é mais rápido
  • get_trace_attributes — Catálogo global de atributos no esquema de traces
  • get_trace_attributes_for_pipeline — Atributos realmente presentes para um pipeline em andamento (descoberta com escopo), cada um com seu filter_field exato
  • get_trace_attribute_values — Valores distintos para um atributo de trace, opcionalmente com escopo para um pipeline
  • get_trace_attribute_deviations — Classifica valores de atributos que diferem entre duas coortes de spans limitadas (lento vs rápido, erro vs não-erro, ou duas janelas de tempo). Correlação, não causa
  • get_trace_waterfall — Um trace exato como cascata pai/filho com tempo próprio de união de intervalo, spans mais lentos e avisos de grafo

Eventos de Mudança e Alertas

  • get_change_events — Deploys, mudanças de configuração, rollbacks. Correlacione incidentes com o que mudou
  • get_alert_groups — Grupos de alertas Compass configurados com rótulos de metadados, equipe, nível e contagens de regras — incluindo grupos com zero regras e grupos que não estão disparando
  • get_alert_config — Configurações de regras de alerta — pesquisáveis por nome, severidade, tipo, tags
  • get_alerts — Alertas atualmente disparando dentro de uma janela de tempo
  • get_alert_rule_state — Estado histórico de disparo (1/0) por regra de alerta ao longo de um intervalo de tempo, agrupado por rule_id. Filtrável por grupo de alerta, nome da regra, filtros de rótulo e estado.
  • get_notification_channels — Canais de notificação configurados (Slack, PagerDuty, email, etc.)

Dashboards Personalizados

  • list_dashboards — Todos os dashboards personalizados na sua organização: IDs, nomes e metadados
  • get_dashboard — Definição completa do dashboard por ID, incluindo painéis e consultas
  • validate_dashboard — Lint somente leitura + execução + classificação para um ID de dashboard salvo ou um dashboard_definition inline sobre uma janela de ≤24h. Nunca cria ou atualiza dashboards
  • create_dashboard — Crie um dashboard personalizado totalmente novo uma vez (painéis, consultas, metadados). Após o ID ser retornado, refine com update_dashboard.
  • update_dashboard — Refine um dashboard existente por ID (substituição completa; dashboards de sistema somente leitura retornam um erro)
  • delete_dashboard — Exclua um dashboard personalizado por ID
  • list_dashboard_snapshots — Snapshots congelados em um ponto no tempo para um dashboard (apenas metadados)
  • get_dashboard_snapshot — Snapshot congelado completo incluindo dados de painel para RCA / visualizações compartilháveis
  • delete_dashboard_snapshot — Exclua um snapshot congelado por ID

Perfilamento Contínuo

Requer perfilamento contínuo habilitado para a organização. Descubra serviços primeiro com get_profile_services, depois puxe um flamegraph ou funções classificadas.

  • get_profile_services — Serviços que têm dados de perfilamento na janela (índice antes de consultar)
  • get_flamegraph — Árvore flamegraph aninhada para um serviço (cpu padrão; também alloc, wall)
  • get_top_functions — Classificação de auto-amostragem das funções mais quentes para um serviço
  • get_profile_summary — Triagem curta em linguagem natural do perfil para um serviço

Dashboards Grafana

Ferramentas somente leitura contra a instância Grafana da organização (via proxy Grafana da Last9). Campos de credenciais nunca são retornados ao modelo. Habilite com LAST9_TOOLSETS=grafana (ou deixe os conjuntos de ferramentas não definidos para todas as ferramentas).

  • grafana_search_dashboards — Busca dashboards por substring no título (paginado; truncated: true quando o limite é atingido)
  • grafana_get_dashboard — Resumo do dashboard por uid (painéis, variáveis, alvos PromQL); full_json=true para JSON bruto do Grafana
  • grafana_list_folders — Árvore de pastas
  • grafana_list_folder_dashboards — Dashboards em uma pasta (paginado)
  • grafana_list_datasources — Inventário de datasources sem credenciais

Resolução Difusa de Nomes

  • did_you_mean — Quando o agente não tem certeza sobre um nome de entidade, isso retorna as correspondências mais próximas do seu catálogo (serviços, ambientes, hosts, bancos de dados, deployments/namespaces K8s, jobs). Até 3 sugestões com pontuações de similaridade. O servidor chama isso automaticamente antes da maioria das ferramentas quando uma busca por nome retorna vazio.

Perfil de Serviço

  • get_service_profile — Como a telemetria de um serviço realmente se parece, antes de você consultá-la: quais sinais existem, linguagem e runtime, ambientes de deployment, a forma dos seus logs e uma correção de ingestão recomendada quando aplicável. Permite que o agente pule ferramentas de trace quando um serviço não tem traces, e extraia severidade do corpo do log quando SeverityText está vazio, em vez de filtrar por ele e não encontrar nada.

Como Funciona

Deep links em cada resposta. Cada ferramenta retorna um campo deep_link — uma URL direta para o dashboard do Last9 para aquela consulta exata e intervalo de tempo. O agente pode te entregar o link; você clica; você está lá.

Conjuntos de ferramentas. Por padrão, o servidor expõe todas as ferramentas. Hosts de automação que só precisam de investigação (logs/traces/métricas/perfis) podem definir LAST9_TOOLSETS=investigate (ou passar --toolsets=investigate) para que tools/list permaneça pequeno sem desativação em massa no lado do cliente. Pacotes nomeados: logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all. Nomes desconhecidos falham rapidamente. O pacote metrics sozinho não inclui list_datasources ou did_you_mean — use investigate (ou combine conjuntos de ferramentas) quando precisar desses auxiliares de descoberta.

Recursos de referência de ferramentas. Manuais longos de logjson/tracejson/service-logs/métricas são recursos MCP (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics, last9://reference/investigation), não texto de descrição de ferramenta sempre ativo. Regras críticas de consulta permanecem na descrição da ferramenta para que agentes que nunca chamam resources/read ainda recebam orientação correta de construção. Descubra campos específicos da organização com get_log_attributes / get_log_attributes_for_pipeline (e os equivalentes de trace) — eles não são injetados nas descrições.

Resultados grandes em partes. get_logs e get_traces lidam com grandes conjuntos de resultados por meio de divisão em partes em vez de truncamento. O limite padrão é 5000 entradas para logs; configurável via LAST9_MAX_GET_LOGS_ENTRIES.


Desenvolvimento

Modo HTTP, teste com curl, compilação a partir do código-fonte

Executar em Modo HTTP

export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server

O servidor inicia em http://localhost:8080/mcp.

Testar com curl

O handler HTTP Streamable roda em modo stateless, então qualquer requisição é atendida de forma independente. Um handshake initialize e um cabeçalho Mcp-Session-Id são opcionais — clientes que os enviam ainda funcionam (o cabeçalho é aceito e ignorado), e clientes também podem pular direto para tools/list / tools/call. Cada ferramenta é uma consulta independente de requisição/resposta; o servidor não emite notificações servidor→cliente, então GET /mcp (o stream SSE) retorna 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
        }
      }
    }'

Compilar a partir do Código-Fonte

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 é para desenvolvimento local. Para uso real, o endpoint HTTP hospedado é mais fácil.


Referência de Ferramentas

Todos os parâmetros, padrões de entrada de tempo e detalhes

Entrada de Tempo

  • Tempos absolutos (start_time_iso/end_time_iso, ou time_iso) têm precedência sobre lookback_minutes.
  • Para janelas relativas: use lookback_minutes.
  • Para janelas absolutas: use RFC3339/ISO8601 — 2026-02-09T15:04:05Z.
  • YYYY-MM-DD HH:MM:SS legado é aceito apenas para compatibilidade.

get_exceptions

  • limit (inteiro, opcional): Máximo de exceções. Padrão: 20.
  • lookback_minutes (inteiro, opcional): Padrão: 60.
  • start_time_iso / end_time_iso (string, opcional): Intervalo de tempo absoluto.
  • service_name (string, opcional): Filtrar por serviço.
  • span_name (string, opcional): Filtrar por nome de span.
  • env (string, opcional): Filtrar por ambiente.

get_service_summary

  • start_time_iso / end_time_iso (string, opcional)
  • env (string, opcional): Regex PromQL. Padrão: .*. Correspondência exata precisa de âncoras (ex.: ^prod$).
  • sort_by (string, opcional): request_count (padrão), throughput_rpm, http_4xx_count, http_5xx_count ou grpc_error_count.
  • limit (inteiro, opcional): Máximo de linhas classificadas. Omitir ou 0 significa 10; valores acima de 100 são limitados a 100.

get_service_environments

  • start_time_iso / end_time_iso (string, opcional)

Todas as outras ferramentas APM exigem um valor env. Use "" se isso retornar vazio.

get_service_performance_details

  • service_name (string, obrigatório)
  • lookback_minutes (inteiro, opcional): Padrão: 60.
  • start_time_iso / end_time_iso (string, opcional)
  • env (string, opcional): Padrão: prod.

get_service_operations_summary

  • service_name (string, obrigatório)
  • lookback_minutes (inteiro, opcional): Padrão: 60.
  • start_time_iso / end_time_iso (string, opcional)
  • env (string, opcional): Padrão: prod.

get_service_dependency_graph

  • service_name (string, opcional)
  • lookback_minutes (inteiro, opcional): Padrão: 60.
  • start_time_iso / end_time_iso (string, opcional)
  • env (string, opcional): Padrão: prod.

get_apm_service_deviations

  • service_name (string, opcional): Omita para escopo de frota; forneça para um serviço e suas correlações de operação.
  • lookback_minutes (inteiro, opcional): Janela atual. Padrão: 60.
  • start_time_iso / end_time_iso (string, opcional): Janela atual explícita.
  • baseline_start_time_iso / baseline_end_time_iso (string, opcional): Linha de base explícita. Padrão: a janela imediatamente anterior de duração igual.
  • datasource (string, opcional): Restringir a comparação a um datasource.
  • env (string, opcional): Padrão: prod.
  • max_services / max_operations (inteiro, opcional): Padrão 10, máximo 10 cada.

get_databases

  • env (string, opcional): Filtrar por ambiente. Aceita expressão regular. Padrão: todos.
  • lookback_minutes (inteiro, opcional): Padrão: 60. A janela não pode exceder 7 dias.
  • start_time_iso / end_time_iso (string, opcional)

get_database_slow_queries

  • db_system (string, opcional): ex.: postgresql, mysql, mongodb, redis.
  • host (string, opcional): Host do banco de dados (net_peer_name).
  • service_name (string, opcional): Nome do serviço chamador.
  • env (string, opcional)
  • min_duration_ms (float, opcional): Duração mínima da consulta em ms.
  • lookback_minutes (inteiro, opcional): Padrão: 60.
  • start_time_iso / end_time_iso (string, opcional)
  • limit (inteiro, opcional): Padrão: 20.

get_database_queries

  • db_system (string, opcional)
  • host (string, opcional)
  • service_name (string, opcional)
  • env (string, opcional)
  • lookback_minutes (inteiro, opcional): Padrão: 60.
  • start_time_iso / end_time_iso (string, opcional)
  • limit (inteiro, opcional): Padrão: 20.

get_database_server_metrics

  • db_system (string, obrigatório): ex.: postgresql, mysql, mongodb, redis, aerospike.
  • host (string, opcional)
  • lookback_minutes (inteiro, opcional): Padrão: 60.
  • start_time_iso / end_time_iso (string, opcional)

prometheus_range_query

  • query (string, obrigatório): A consulta PromQL.
  • start_time_iso / end_time_iso (string, opcional): Padrão: últimos 60 min.
  • lookback_minutes (float, opcional): Padrão: 60.

prometheus_instant_query

  • query (string, obrigatório)
  • time_iso (string, opcional): Padrão: agora.
  • lookback_minutes (float, opcional)

prometheus_label_values

  • match_query (string, opcional): Filtro PromQL.
  • label (string, obrigatório): Nome do label.
  • start_time_iso / end_time_iso (string, opcional)

prometheus_labels

  • match_query (string, opcional): Filtro PromQL.
  • start_time_iso / end_time_iso (string, opcional)

get_logs

  • logjson_query (array, obrigatório): Consulta de pipeline JSON.
  • lookback_minutes (inteiro, opcional): Padrão: 5.
  • start_time_iso / end_time_iso (string, opcional)
  • limit (inteiro, opcional): Padrão do servidor: 5000.
  • index (string, opcional): physical_index:<name> ou rehydration_index:<block_name>.

Para inventário de serviços baseado em logs, consulte physical_index_service_count primeiro:

sum by (name, service_name, env) (physical_index_service_count{destination="logs"})

Use service_name como ServiceName, env como o ambiente quando presente, e name como o nome do índice físico. Se name="default", omita index; para um índice físico não padrão selecionado pelo usuário, passe index: "physical_index:<name>". Se o backend rejeitar filtragem explícita de índice físico, tente novamente sem index e relate que a filtragem explícita de índice físico não está disponível para esse backend.

get_service_logs

  • service_name (string, obrigatório)
  • lookback_minutes (inteiro, opcional): Padrão: 60.
  • limit (inteiro, opcional): Padrão: 20.
  • env (string, opcional)
  • severity_filters (array, opcional): ex.: ["error", "warn"]. Lógica OU.
  • body_filters (array, opcional): ex.: ["timeout", "failed"]. Lógica OU.
  • start_time_iso / end_time_iso (string, opcional)
  • index (string, opcional)

Múltiplos tipos de filtro combinam com E. Cada array usa OU internamente. Use get_logs para contagens agregadas amplas primeiro; use get_service_logs somente após restringir a um serviço/ambiente/índice e um pequeno conjunto de amostras.

get_log_attributes

  • lookback_minutes (inteiro, opcional): Padrão: 15.
  • start_time_iso / end_time_iso (string, opcional)
  • region (string, opcional)
  • index (string, opcional)

get_log_attributes_for_pipeline

  • pipeline (array, obrigatório): Estágios de filtro anteriores para limitar a descoberta, ex.: [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].
  • lookback_minutes (inteiro, opcional): Padrão: 15.
  • start_time_iso / end_time_iso (string, opcional)
  • region (string, opcional)
  • index (string, opcional)

get_drop_rules

Sem parâmetros. Lista regras de descarte via GET /otel_settings/drop?region=....

add_drop_rule

  • name (string, obrigatório)
  • filters (array, obrigatório): Cada filtro: key, value, operator (equals/not_equals), conjunction (and).
  • As chaves de filtro devem usar attributes["key_name"] ou resource.attributes["key_name"] (exigido pela API do Last9).
  • Cria a regra via POST /otel_settings/drop?region=...&cluster_id=....

get_traces

Use para buscas amplas e agregações. Para consulta exata de ID de trace, use get_service_traces.

  • tracejson_query (array, obrigatório)
  • start_time_iso / end_time_iso (string, opcional)
  • lookback_minutes (inteiro, opcional): Padrão: 60.
  • limit (inteiro, opcional): Padrão: 5000.

get_service_traces

Exatamente um de trace_id ou service_name é obrigatório.

  • trace_id (string, opcional): Janela de retrospectiva padrão: 72 horas.
  • service_name (string, opcional): Janela de retrospectiva padrão: 60 min.
  • lookback_minutes (integer, opcional)
  • start_time_iso / end_time_iso (string, opcional)
  • limit (integer, opcional): Padrão: 10.
  • env (string, opcional)

get_trace_attributes

  • lookback_minutes (integer, opcional): Padrão: 15.
  • start_time_iso / end_time_iso (string, opcional)
  • region (string, opcional)

get_trace_attributes_for_pipeline

  • pipeline (array, obrigatório): Estágios de filtro anteriores para limitar a descoberta, ex.: [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].
  • lookback_minutes (integer, opcional): Padrão: 15.
  • start_time_iso / end_time_iso (string, opcional)
  • region (string, opcional)

get_trace_attribute_values

  • tag_name (string, obrigatório): Nome do atributo de get_trace_attributes (ex.: resource_department ou attributes['http.method']).
  • pipeline (array, opcional): Estágios de filtro anteriores para limitar os valores; omita para valores globais.
  • lookback_minutes (integer, opcional): Padrão: 15.
  • start_time_iso / end_time_iso (string, opcional): Limites históricos RFC3339; têm precedência sobre lookback_minutes.
  • region (string, opcional)

get_trace_attribute_deviations

  • comparison_mode (string, obrigatório): latency, errors ou time.
  • service_name (string, obrigatório)
  • environment (string, obrigatório): Valor exato de deployment.environment.
  • operation (string, opcional)
  • filters (array, opcional): Condições de filtro JSON de trace.
  • candidate_attributes (array, opcional): Máximo de 8; omita para descoberta limitada.
  • latency_threshold_ms (number, opcional): Obrigatório para o modo latency; rejeitado para outros modos.
  • start_time_iso / end_time_iso (string, opcional)
  • lookback_minutes (integer, opcional): Padrão: 15. Máximo: 15.
  • baseline_start_time_iso / baseline_end_time_iso (string, opcional): Obrigatório para o modo time; não sobrepostos e com duração igual à janela alvo.
  • minimum_cohort_size (integer, opcional): Padrão: 100. Mínimo: 20.
  • minimum_value_support (integer, opcional): Padrão: 20. Mínimo: 10.
  • limit (integer, opcional): Padrão: 10. Máximo: 10.

Requer que o recurso de backend complementar esteja habilitado.

get_trace_waterfall

  • trace_id (string, obrigatório)
  • environment (string, opcional)
  • start_time_iso / end_time_iso (string, opcional)
  • lookback_minutes (integer, opcional): Padrão: 4320 (72 horas).
  • selected_span_id (string, opcional): Retorna atributos, eventos e links apenas para esse span.
  • max_spans (integer, opcional): Padrão: 500. Máximo: 1000.

Retorna um envelope investigation-evidence/v1; o waterfall está em data.

get_change_events

  • start_time_iso / end_time_iso (string, opcional)
  • lookback_minutes (integer, opcional): Padrão: 60.
  • service_name (string, opcional)
  • env (string, opcional)
  • event_name (string, opcional): Chame sem isso primeiro para obter available_event_names.

get_alert_groups

Inventário configurado de grupos de alertas do Compass para auditorias de changeboard / cobertura de rótulos. Inclui grupos sem regras e grupos que não estão disparando. Não retorna PromQL.

  • alert_group_name / alert_group_type / data_source_name (string, opcional): Correspondência de substring sem diferenciar maiúsculas/minúsculas.
  • team / tier (string, opcional): Correspondência exata sem diferenciar maiúsculas/minúsculas nos metadados configurados.
  • label_key + label_value (string, opcional): Devem ser definidos juntos. Correspondência exata sem diferenciar maiúsculas/minúsculas em um par metadata.labels — tanto chave quanto valor.

Retorna JSON compacto {"count":N,"groups":[...]} com id, name, type, entity_class, team, tier, metadata.labels e contagens de regras. team / labels vazios significa não definido.

get_alert_config

  • search_term (string, opcional): Pesquisa de texto livre em nome, grupo, fonte de dados, tags.
  • rule_name (string, opcional)
  • severity (string, opcional)
  • rule_type (string, opcional): static ou anomaly.
  • alert_group_name / alert_group_type / data_source_name (string, opcional)
  • tags (array, opcional): Todos devem corresponder (lógica AND).

get_alerts

  • time_iso (string, opcional): Horário de avaliação em RFC3339.
  • window (integer, opcional): Janela de retrospectiva em segundos. Padrão: 900. Intervalo: 60–86400.
  • lookback_minutes (integer, opcional): Intervalo: 1–1440.

get_alert_rule_state

  • start_time (integer, obrigatório): Início do intervalo em epoch Unix (inclusivo).
  • end_time (integer, obrigatório): Fim do intervalo em epoch Unix (inclusivo).
  • step (integer, obrigatório): Resolução em segundos entre amostras. O número de amostras ((end_time - start_time) / step + 1) é limitado a 100.
  • alert_group_id (string, opcional): Filtro por ID do grupo de alertas.
  • rule_name (string, opcional): Filtro regex no nome da regra.
  • alert_group_name (string, opcional): Filtro regex no nome do grupo de alertas.
  • label_filters (string, opcional): Filtros de rótulo key=value separados por vírgula.
  • state (string, opcional): Filtro por estado (ex.: firing).

Retorna um mapa JSON de rule_id -> [{timestamp, is_firing}]. Um timestamp em que uma regra está ausente da resposta upstream é relatado como is_firing=0 — isso significa "não observado como disparando", não um estado normal confirmado.

get_notification_channels

Sem parâmetros. Retorna todos os canais de notificação configurados (Slack, PagerDuty, e-mail, webhooks, etc.).

did_you_mean

  • query (string, obrigatório): O nome a ser pesquisado — parcial, com erro de digitação ou abreviado.
  • type (string, opcional): Restringir ao tipo de entidade: service, environment, host, database, k8s_deployment, k8s_namespace, job.

Retorna até 3 correspondências mais próximas com pontuações de similaridade. Use isso antes de qualquer chamada de ferramenta em que o nome da entidade seja incerto. Se uma chamada anterior retornou resultados vazios, tente isso antes de tentar novamente.

get_service_profile

  • service_name (string, obrigatório): Serviço para derivar um perfil de telemetria.
  • datasource (string, opcional): Nome da fonte de dados. Omita para o padrão.

Retorna um breve resumo de investigação seguido do perfil completo como JSON bruto: presença de sinais (logs/traces/metrics como present, absent ou unknown), linguagem e runtime, ambientes de implantação, signal_shape de log (log_format, severity_set, level_field) e uma correção de ingestão recomendada quando aplicável. Derivado upstream e armazenado em cache com TTL de ~15 minutos.

Chame antes de qualquer investigação com escopo de serviço para que a seleção de ferramentas corresponda à telemetria real do serviço — pule ferramentas de trace quando traces for absent, e quando severity_set for none ou partial, analise a severidade de level_field no corpo do log em vez de usar severity_filters. metrics é sempre unknown e dependencies não é preenchido na v1. Quando logs e traces forem ambos absent, confirme o nome com did_you_mean antes de concluir que o serviço não é monitorado.

list_dashboards

Sem parâmetros. Retorna todos os dashboards personalizados na organização como um array JSON com id, name e metadados.

get_dashboard

  • id (string, obrigatório): UUID do dashboard.
  • region (string, opcional): Região para preenchimento de consultas de painéis. Padrão para a região da fonte de dados configurada.

validate_dashboard

Somente leitura. Nunca cria ou atualiza dashboards. Aceita exatamente um de dashboard_id ou dashboard_definition.

  • dashboard_id (string, opcional): UUID do dashboard salvo para validar.
  • dashboard_definition (object, opcional): Corpo do dashboard não salvo inline (dry run verdadeiro).
  • start_time_iso / end_time_iso (string, opcional): Janela de validação (RFC3339). Deve ser ≤ 24h.
  • region (string, opcional): Região para execução de consultas de painéis.

Retorna dashboard_validation/v1: classificação de lint + execução por painel (data / no_data / invalid / error). Resultados vazios no dia 1 classificam como valid_no_data sem sondas de diagnóstico.

create_dashboard

Somente novo. Após esta chamada retornar dashboard.id, refine com update_dashboard — não crie novamente para adicionar, ajustar ou corrigir painéis.

  • dashboard (object, obrigatório): Definição do dashboard com name e panels[]. Cada painel requer name, version, layout (x, y, w, h), visualization.type e queries[].
  • metadata (object, opcional): Metadados do dashboard — campos _category e _type (ex.: {"_category":"custom","_type":"metrics"}).

update_dashboard

Prefira isso após create. Substituição completa por id (mesmo corpo do create).

  • id (string, obrigatório): UUID do dashboard a atualizar.
  • dashboard (object, obrigatório): Corpo completo de substituição do dashboard (mesma forma do create).
  • metadata (object, opcional): Metadados de substituição. Dashboards de sistema somente leitura retornam erro 403.

delete_dashboard

  • id (string, obrigatório): UUID do dashboard a excluir. Dashboards de sistema somente leitura não podem ser excluídos.

list_dashboard_snapshots

  • dashboard_id (string, obrigatório): UUID do dashboard cujos snapshots devem ser listados.

Retorna apenas metadados (id, name, expires_at, etc.). Use get_dashboard_snapshot para dados de painel congelados.

get_dashboard_snapshot

  • id (string, obrigatório): UUID do snapshot.

Retorna o snapshot congelado completo, incluindo dashboard_definition, panel_data, time_range e variables.

delete_dashboard_snapshot

  • id (string, obrigatório): UUID do snapshot a excluir.

get_profile_services

  • lookback_minutes / start_time_iso / end_time_iso (opcional): Janela; prefira lookback ou limites ISO explícitos (padrão 60m).
  • region (string, opcional): Substituição de região.

Retorna serviços que têm dados de profiling na janela. Chame antes de get_flamegraph / get_top_functions / get_profile_summary.

get_flamegraph

  • service (string, obrigatório): Nome do serviço de get_profile_services.
  • profile_type (string, opcional): cpu (padrão), alloc ou wall. Fixe um tipo ao comparar janelas.
  • env / cluster / namespace / runtime (string, opcional): Filtros de escopo.
  • limit (number, opcional): Máximo de linhas de stack agregadas (padrão 1000, máximo 10000).
  • lookback_minutes / start_time_iso / end_time_iso / region (opcional).

Retorna uma árvore flamegraph aninhada (name / value / self / children). truncated: true significa que o limite de linhas da API foi atingido.

get_top_functions

Mesmos filtros de get_flamegraph. Retorna a classificação de auto-amostragem das funções mais quentes. Pode ser truncado; verifique truncated.

get_profile_summary

Mesmos filtros de get_flamegraph. Retorna uma triagem curta em linguagem natural do perfil do serviço.

grafana_search_dashboards

  • query (string, opcional): Substring do título. Vazio lista amplamente (sujeito ao limite de 5.000 linhas).

Retorna {"dashboards":[…], "truncated":bool} com uid, title, uri, url, type, tags. Use uid com grafana_get_dashboard.

grafana_get_dashboard

  • uid (string, obrigatório): UID do dashboard Grafana.
  • full_json (boolean, opcional): Quando true, retorna o JSON bruto do Grafana em vez do resumo filtrado. Resumo padrão: versão, tags, variáveis de templating e o tipo/fonte de dados/posição de grade/alvos promQL de cada painel. Tipos de painel de plugin desconhecidos aparecem em unsupportedPanelTypes.

grafana_list_folders

Sem parâmetros. Retorna a árvore de pastas.

grafana_list_folder_dashboards

  • folder_uid (string, obrigatório): UID da pasta do Grafana.

Retorna {"dashboards":[…], "truncated":bool} para dashboards nessa pasta (paginado até 5.000).

grafana_list_datasources

Sem parâmetros. Retorna uma projeção segura das fontes de dados (sem campos de credenciais).


Testes

Consulte TESTING.md para a configuração e instruções dos testes de integração.


MseeP.ai Security Assessment Badge