Last9

offiziell

Bringen Sie nahtlos Echtzeit-Produktionskontext—Logs, Metriken und Traces—in Ihre lokale Umgebung, um Code schneller automatisch zu reparieren.

Was kann man mit Last9 MCP machen?

  • Dienstzustand untersuchen — Fordern Sie eine priorisierte Flottenübersicht über Anforderungszahlen, Durchsatz und Fehlerraten über get_service_summary an.

  • Rohe Dienstprotokolle abrufen — Rufen Sie gefilterte Protokollzeilen nach Schweregrad oder Inhalt für einen bestimmten Dienst über get_service_logs ab.

  • Datenbankleistung nachverfolgen — Entdecken Sie Datenbanken, langsame Abfragen und Abfragemuster mit get_databases und zugehörigen Tools.

  • PromQL-Abfragen ausführen — Führen Sie Bereichs- oder Momentanabfragen gegen beliebige Metriken mit prometheus_range_query oder prometheus_instant_query aus.

  • Änderungen mit Vorfällen korrelieren — Rufen Sie Bereitstellungs- und Konfigurationsänderungsereignisse ab, um zu verstehen, was das Produktionsverhalten über get_change_events verändert hat.

  • Benutzerdefinierte Dashboards verwalten — Listen, erstellen, aktualisieren oder validieren Sie Dashboards programmatisch mit list_dashboards und create_dashboard.

Dokumentation

Last9 MCP Server

last9 mcp demo

Ihr KI-Agent weiß nicht, was in der Produktion defekt ist. Das behebt dieses Problem.

Last9 MCP Server verbindet Claude, Cursor, Windsurf und jeden anderen MCP-fähigen KI-Assistenten direkt mit Ihren Produktions-Observability-Daten – Logs, Metriken, Traces, Ausnahmen, Datenbankabfragen, Alerts und Deployments. Der Agent hört auf zu raten und beginnt, das tatsächliche Signal zu lesen.


In 30 Sekunden starten (Gehostet)

Kein Binärprogramm zu installieren. Keine Tokens zu verwalten. Eine URL, OAuth im Browser, fertig.

Finden Sie Ihren Organisations-Slug in Ihrer Last9-URL: app.last9.io/<org_slug>/...

Claude Code

claude mcp add --transport http last9 https://app.last9.io/api/v4/organizations/<org_slug>/mcp

Geben Sie /mcp ein, wählen Sie last9 aus, authentifizieren Sie sich. Das war's.

Cursor

Einstellungen > MCP > Neuen MCP-Server hinzufügen:

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

Klicken Sie auf Verbinden, schließen Sie OAuth ab.

VS Code

Erfordert v1.99+. Öffnen Sie die Befehlspalette → MCP: Server hinzufügen, fügen Sie die URL ein, authentifizieren Sie sich.

Oder direkt in settings.json:

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

Windsurf

Einstellungen > Cascade > MCP-Marketplace öffnen > Zahnrad-Symbol (mcp_config.json):

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

Claude Web/Desktop

Einstellungen > Connectors > Benutzerdefinierten Connector hinzufügen. Nennen Sie ihn last9, fügen Sie die URL ein, authentifizieren Sie sich.

Erfordert Administratorzugriff auf Ihre Claude-Organisation.


Selbst gehostet (STDIO)

Verwenden Sie dies, wenn Ihr MCP-Client keinen HTTP-Transport unterstützt oder wenn Sie den Server lokal ausführen müssen.

Installation

Homebrew:

brew install last9/tap/last9-mcp

NPM:

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

Binärversionen (Windows / manuell):

Download von GitHub Releases:

PlattformArchiv
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

Ein Refresh-Token erhalten

Nur Administratoren können Tokens erstellen.

  1. Gehen Sie zu API-Zugriff
  2. Klicken Sie auf Token generieren mit Schreibberechtigungen
  3. Kopieren Sie es

Client-Konfiguration

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

Wo Sie dies einfügen:

ClientOrt
Claude Web/DesktopEinstellungen > Entwickler > Konfiguration bearbeiten (claude_desktop_config.json)
CursorEinstellungen > Cursor-Einstellungen > MCP > Neuen globalen MCP-Server hinzufügen
WindsurfEinstellungen > Cascade > MCP-Marketplace > Zahnrad-Symbol (mcp_config.json)
VS CodeIn { "mcp": { "servers": { ... } } } in settings.json einbinden — Details
VS-Code-STDIO-Konfiguration
{
  "mcp": {
    "servers": {
      "last9": {
        "type": "stdio",
        "command": "/opt/homebrew/bin/last9-mcp",
        "env": {
          "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
        }
      }
    }
  }
}

Für NPM: "command": "npx" verwenden und "args": ["-y", "@last9/mcp-server@latest"] hinzufügen.

Windows

Nach dem Download von GitHub Releases extrahieren und auf den vollständigen Pfad verweisen:

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

Der NPM-Weg ist unter Windows einfacher – keine Pfadverwaltung erforderlich.

Umgebungsvariablen

VariableStandardBeschreibung
LAST9_REFRESH_TOKEN(erforderlich)Refresh-Token von API-Zugriff
LAST9_DATASOURCEOrganisationsstandardDatenquellen-/Clustername – nützlich, wenn Sie mehrere Levitate-Cluster haben
LAST9_API_HOSTapp.last9.ioAPI-Host überschreiben
LAST9_TOOLSETSalle ToolsKommagetrennte Toolsets, die verfügbar gemacht werden sollen (logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all). Alias: LAST9_MCP_TOOLSETS
LAST9_MAX_GET_LOGS_ENTRIES5000Maximale Einträge für segmentierte get_logs-Anfragen
LAST9_USE_LOG_SEARCH_APIfalsetrue setzen, um get_logs und get_service_logs mit einem serverseitigen Suchaufruf statt clientseitigem Chunking zu beantworten
LAST9_DEBUG_CHUNKINGfalsetrue setzen, um Details der Segmentplanung für get_logs, get_service_logs, get_traces zu protokollieren
LAST9_DISABLE_TELEMETRYtruefalse setzen, um internes OTel-Tracing zu aktivieren
OTEL_SDK_DISABLED—Standard-OTel-Umgebungsvariable. Überschreibt LAST9_DISABLE_TELEMETRY
OTEL_EXPORTER_OTLP_ENDPOINT—OTLP-Collector-Endpunkt (nur wenn Telemetrie aktiviert ist)
OTEL_EXPORTER_OTLP_HEADERS—OTLP-Authentifizierungsheader (nur wenn Telemetrie aktiviert ist)

Was es kann

Dienstzustand

  • get_service_summary — Rangfolge der Fleet-(service, env)-Zeilen: Intervall-request_count, throughput_rpm, HTTP-4xx/5xx-Zählungen und gRPC-Fehlerzählungen
  • get_service_environments — Verfügbare Umgebungen für Ihre Dienste. Führen Sie dies zuerst aus – andere APM-Tools benötigen env von hier
  • get_service_performance_details — Vollständige Aufschlüsselung: Durchsatz, Fehlerrate, p50/p90/p95/avg/max, Apdex, Verfügbarkeit
  • get_service_operations_summary — Operationen gruppiert nach HTTP-Endpunkten, DB-Aufrufen, Messaging, HTTP-Clients
  • get_service_dependency_graph — Abhängigkeitskarte mit Durchsatz, Latenz und Fehlerraten für Upstream/Downstream/Infrastruktur
  • get_apm_service_deviations — Aktuelles Zeitfenster mit einer Baseline gleicher Dauer vergleichen: Regressionen/Verbesserungen, Apdex-Abgleich und ein Endausgang (Fleet oder einzelner Dienst)
  • get_exceptions — Serverseitige Ausnahmen mit Dienst- und Span-Filtern

Datenbank-Observability

Vier Tools, die direkt auf Ihre Datenbankleistung abzielen, abgeleitet aus OpenTelemetry-Trace-Spans und, wo keine Traces vorhanden sind, aus Infrastrukturmetriken wie CloudWatch. Keine zusätzliche Instrumentierung erforderlich, wenn Sie bereits OTel verwenden.

  • get_databases — Alle Datenbanken in Ihrer Infrastruktur entdecken: DB-Typ, Host, Durchsatz (Abfragen/min), p95-Latenz, Fehlerrate, Anzahl abhängiger Dienste. Entdeckt auch Datenbanken aus Infrastrukturmetriken wie CloudWatch, ohne dass eine Trace-Instrumentierung erforderlich ist – diese Zeilen tragen einen Aktivitätswert anstelle von Trace-Metriken
  • get_database_slow_queries — Die tatsächlich langsamsten Abfrageausführungen, sortiert nach Dauer, mit Trace-IDs zum Eintauchen in vollständige Traces
  • get_database_queries — Abfragemuster und Aggregate: wie oft eine Abfrage ausgeführt wird, durchschnittliche/p95-Dauer, Fehlerrate
  • get_database_server_metrics — Serverseitige Metriken vom DB-Host selbst (CPU, Verbindungen, Puffertrefferquoten – abhängig von Ihrem DB-System)

Unterstützt PostgreSQL, MySQL, MongoDB, Redis, Aerospike und alles andere, was OTel mit einem db_system-Attribut tracen kann – plus Datenbanken, die aus Infrastrukturmetriken wie CloudWatch entdeckt wurden, deren Zeilen einen Aktivitätswert anstelle von Trace-Metriken tragen.

Prometheus / PromQL

  • prometheus_range_query — PromQL-Bereichsabfragen über beliebige Metriken
  • prometheus_instant_query — Sofortige Abfragen; Rollup-Funktionen wie avg_over_time, sum_over_time verwenden
  • prometheus_label_values — Labelwerte für eine bestimmte Serie
  • prometheus_labels — Alle für eine Serie verfügbaren Labels

Richten Sie diese auf eine andere Datenquelle/einen anderen Cluster als den Standard aus, indem Sie LAST9_DATASOURCE setzen.

Logs

  • get_logs — Vollständige JSON-Pipeline-Logabfragen (Aggregationen, Filter, Feldextraktion)
  • get_service_logs — Rohe Logzeilen für einen Dienst, filterbar nach Schweregrad und Inhalt
  • get_log_attributes — Globaler Katalog der Attribute im Logschema für ein Zeitfenster
  • get_log_attributes_for_pipeline — Tatsächlich vorhandene Logfelder für eine laufende Pipeline (bereichsbezogene Erkennung), jedes mit seinem genauen filter_field
  • get_drop_rules — Log-Drop-Regeln von Last9 Control Plane
  • add_drop_rule — Eine neue Drop-Regel erstellen, um das Logvolumen an der Quelle zu reduzieren

Traces

  • get_traces — JSON-Pipeline-Trace-Abfragen für breite Suchen und Aggregationen
  • get_service_traces — Traces nach exakter Trace-ID oder Dienstname. Verwenden Sie dies, wenn Sie eine Trace-ID haben – es ist schneller
  • get_trace_attributes — Globaler Katalog der Attribute im Trace-Schema
  • get_trace_attributes_for_pipeline — Tatsächlich vorhandene Attribute für eine laufende Pipeline (bereichsbezogene Erkennung), jedes mit seinem genauen filter_field
  • get_trace_attribute_values — Unterscheidbare Werte für ein Trace-Attribut, optional auf eine Pipeline beschränkt
  • get_trace_attribute_deviations — Rangfolge der Attributwerte, die sich zwischen zwei begrenzten Span-Kohorten unterscheiden (langsam vs. schnell, Fehler vs. kein Fehler oder zwei Zeitfenster). Korrelation, nicht Kausalität
  • get_trace_waterfall — Ein exakter Trace als Eltern/Kind-Wasserfall mit Intervall-Union-Selbstzeit, langsamsten Spans und Diagrammwarnungen

Änderungsereignisse & Alerts

  • get_change_events — Deployments, Konfigurationsänderungen, Rollbacks. Korrelieren Sie Vorfälle mit dem, was sich geändert hat
  • get_alert_groups — Konfigurierte Compass-Alert-Gruppen mit Metadaten-Labels, Team, Stufe und Regelanzahl – einschließlich Gruppen ohne Regeln und Gruppen, die nicht auslösen
  • get_alert_config — Alert-Regelkonfigurationen – durchsuchbar nach Name, Schweregrad, Typ, Tags
  • get_alerts — Derzeit auslösende Alerts innerhalb eines Zeitfensters
  • get_alert_rule_state — Historischer Auslösezustand (1/0) pro Alert-Regel über einen Zeitraum, gruppiert nach rule_id. Filterbar nach Alert-Gruppe, Regelname, Label-Filtern und Zustand.
  • get_notification_channels — Konfigurierte Benachrichtigungskanäle (Slack, PagerDuty, E-Mail usw.)

Benutzerdefinierte Dashboards

  • list_dashboards — Alle benutzerdefinierten Dashboards in Ihrer Organisation: IDs, Namen und Metadaten
  • get_dashboard — Vollständige Dashboard-Definition nach ID, einschließlich Panels und Abfragen
  • validate_dashboard — Schreibgeschütztes Lint + Ausführen + Klassifizieren für eine gespeicherte Dashboard-ID oder ein Inline-dashboard_definition über ein ≤24h-Fenster. Erstellt oder aktualisiert niemals Dashboards
  • create_dashboard — Ein neues benutzerdefiniertes Dashboard einmal erstellen (Panels, Abfragen, Metadaten). Nachdem die ID zurückgegeben wurde, mit update_dashboard verfeinern.
  • update_dashboard — Ein vorhandenes Dashboard nach ID verfeinern (vollständiger Ersatz; schreibgeschützte System-Dashboards geben einen Fehler zurück)
  • delete_dashboard — Ein benutzerdefiniertes Dashboard nach ID löschen
  • list_dashboard_snapshots — Eingefrorene Punkt-in-der-Zeit-Snapshots für ein Dashboard (nur Metadaten)
  • get_dashboard_snapshot — Vollständiger eingefrorener Snapshot einschließlich Paneldaten für RCA / teilbare Ansichten
  • delete_dashboard_snapshot — Einen eingefrorenen Snapshot nach ID löschen

Kontinuierliches Profiling

Erfordert, dass kontinuierliches Profiling für die Organisation aktiviert ist. Entdecken Sie zuerst Dienste mit get_profile_services, ziehen Sie dann ein Flamegraph oder rangfolge Funktionen.

  • get_profile_services — Dienste, die Profildaten im Fenster haben (vor Abfragen indizieren)
  • get_flamegraph — Verschachtelter Flamegraph-Baum für einen Dienst (cpu Standard; auch alloc, wall)
  • get_top_functions — Selbst-Sample-Rangfolge der heißesten Funktionen für einen Dienst
  • get_profile_summary — Kurze natürlichsprachliche Triage des Profils für einen Dienst

Grafana-Dashboards

Schreibgeschützte Tools gegen die Grafana-Instanz der Organisation (über Last9s Grafana-Proxy). Anmeldefelder werden niemals an das Modell zurückgegeben. Mit LAST9_TOOLSETS=grafana aktivieren (oder Toolsets für alle Tools nicht gesetzt lassen).

  • grafana_search_dashboards — Durchsuche Dashboards nach Titelteilstring (paginiert; truncated: true, wenn das Limit erreicht ist)
  • grafana_get_dashboard — Dashboard-Zusammenfassung nach UID (Panels, Variablen, PromQL-Ziele); full_json=true für rohes Grafana-JSON
  • grafana_list_folders — Ordnerbaum
  • grafana_list_folder_dashboards — Dashboards in einem Ordner (paginiert)
  • grafana_list_datasources — Datenquellen-Inventar ohne Anmeldedaten

Unscharfe Namensauflösung

  • did_you_mean — Wenn der Agent sich bei einem Entitätsnamen nicht sicher ist, liefert dies die nächsten Übereinstimmungen aus Ihrem Katalog (Dienste, Umgebungen, Hosts, Datenbanken, K8s-Deployments/Namespaces, Jobs). Bis zu 3 Vorschläge mit Ähnlichkeitswerten. Der Server ruft dies automatisch vor den meisten Tools auf, wenn eine Namenssuche leer zurückkommt.

Dienstprofil

  • get_service_profile — Wie die Telemetrie eines Dienstes tatsächlich aussieht, bevor Sie sie abfragen: welche Signale existieren, Sprache und Laufzeit, Bereitstellungsumgebungen, die Form seiner Logs und eine empfohlene Ingest-Korrektur, wo eine zutrifft. Ermöglicht dem Agenten, Trace-Tools zu überspringen, wenn ein Dienst keine Traces hat, und den Schweregrad aus dem Log-Body zu parsen, wenn SeverityText leer ist, anstatt darauf zu filtern und nichts zu finden.

So funktioniert es

Deep Links auf jeder Antwort. Jedes Tool gibt ein deep_link-Feld zurück — eine direkte URL zum Last9-Dashboard für genau diese Abfrage und diesen Zeitraum. Der Agent kann Ihnen den Link geben; Sie klicken ihn; Sie sind dort.

Toolsets. Standardmäßig stellt der Server jedes Tool bereit. Automatisierungshosts, die nur Untersuchungen benötigen (Logs/Traces/Metriken/Profile), können LAST9_TOOLSETS=investigate setzen (oder --toolsets=investigate übergeben), damit tools/list klein bleibt, ohne clientseitige Massendeaktivierung. Benannte Pakete: logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all. Unbekannte Namen schlagen schnell fehl. Das metrics-Paket allein enthält nicht list_datasources oder did_you_mean — verwenden Sie investigate (oder kombinieren Sie Toolsets), wenn Sie diese Erkennungshilfen benötigen.

Tool-Referenzressourcen. Lange logjson/tracejson/service-logs/metrics-Handbücher sind MCP-Ressourcen (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics, last9://reference/investigation), kein ständig aktiver Tool-Beschreibungstext. Kritische Abfrageregeln bleiben in der Tool-Beschreibung, damit Agenten, die resources/read nie aufrufen, dennoch korrekte Konstruktionsanleitungen erhalten. Entdecken Sie org-spezifische Felder mit get_log_attributes / get_log_attributes_for_pipeline (und den Trace-Äquivalenten) — sie werden nicht in Beschreibungen eingefügt.

Chunking großer Ergebnisse. get_logs und get_traces verarbeiten große Ergebnismengen durch Chunking statt durch Abschneiden. Das Standardlimit beträgt 5000 Einträge für Logs; konfigurierbar über LAST9_MAX_GET_LOGS_ENTRIES.


Entwicklung

HTTP-Modus, curl-Tests, Erstellen aus dem Quellcode

Im HTTP-Modus ausführen

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

Der Server startet unter http://localhost:8080/mcp.

Mit curl testen

Der Streamable-HTTP-Handler läuft im zustandslosen Modus, sodass jede Anfrage unabhängig bedient wird. Ein initialize-Handshake und ein Mcp-Session-Id-Header sind optional — Clients, die sie senden, funktionieren weiterhin (der Header wird akzeptiert und ignoriert), und Clients können auch direkt zu tools/list / tools/call springen. Jedes Tool ist eine unabhängige Anfrage/Antwort-Abfrage; der Server sendet keine Server→Client-Benachrichtigungen, sodass GET /mcp (der SSE-Stream) 405 zurückgibt.

# 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
        }
      }
    }'

Aus dem Quellcode erstellen

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 ist für die lokale Entwicklung. Für die tatsächliche Nutzung ist der gehostete HTTP-Endpunkt einfacher.


Tool-Referenz

Alle Parameter, Zeitangabestandards und Details

Zeiteingabe

  • Absolute Zeiten (start_time_iso/end_time_iso oder time_iso) haben Vorrang vor lookback_minutes.
  • Für relative Fenster: verwenden Sie lookback_minutes.
  • Für absolute Fenster: verwenden Sie RFC3339/ISO8601 — 2026-02-09T15:04:05Z.
  • Legacy YYYY-MM-DD HH:MM:SS wird nur aus Kompatibilitätsgründen akzeptiert.

get_exceptions

  • limit (Ganzzahl, optional): Maximale Ausnahmen. Standard: 20.
  • lookback_minutes (Ganzzahl, optional): Standard: 60.
  • start_time_iso / end_time_iso (Zeichenfolge, optional): Absoluter Zeitbereich.
  • service_name (Zeichenfolge, optional): Nach Dienst filtern.
  • span_name (Zeichenfolge, optional): Nach Span-Name filtern.
  • env (Zeichenfolge, optional): Nach Umgebung filtern.

get_service_summary

  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • env (Zeichenfolge, optional): PromQL-Regex. Standard: .*. Exakte Übereinstimmung erfordert Anker (z. B. ^prod$).
  • sort_by (Zeichenfolge, optional): request_count (Standard), throughput_rpm, http_4xx_count, http_5xx_count oder grpc_error_count.
  • limit (Ganzzahl, optional): Maximale Rangzeilen. Weglassen oder 0 bedeutet 10; Werte über 100 werden auf 100 begrenzt.

get_service_environments

  • start_time_iso / end_time_iso (Zeichenfolge, optional)

Alle anderen APM-Tools erfordern einen env-Wert. Verwenden Sie "", wenn dies leer zurückkommt.

get_service_performance_details

  • service_name (Zeichenfolge, erforderlich)
  • lookback_minutes (Ganzzahl, optional): Standard: 60.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • env (Zeichenfolge, optional): Standard: prod.

get_service_operations_summary

  • service_name (Zeichenfolge, erforderlich)
  • lookback_minutes (Ganzzahl, optional): Standard: 60.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • env (Zeichenfolge, optional): Standard: prod.

get_service_dependency_graph

  • service_name (Zeichenfolge, optional)
  • lookback_minutes (Ganzzahl, optional): Standard: 60.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • env (Zeichenfolge, optional): Standard: prod.

get_apm_service_deviations

  • service_name (Zeichenfolge, optional): Für Flottenumfang weglassen; für einen Dienst und seine Operationskorrelationen angeben.
  • lookback_minutes (Ganzzahl, optional): Aktuelles Fenster. Standard: 60.
  • start_time_iso / end_time_iso (Zeichenfolge, optional): Explizites aktuelles Fenster.
  • baseline_start_time_iso / baseline_end_time_iso (Zeichenfolge, optional): Explizite Basislinie. Standard: das unmittelbar vorhergehende Fenster gleicher Dauer.
  • datasource (Zeichenfolge, optional): Beschränkt den Vergleich auf eine Datenquelle.
  • env (Zeichenfolge, optional): Standard: prod.
  • max_services / max_operations (Ganzzahl, optional): Standard 10, maximal 10 jeweils.

get_databases

  • env (Zeichenfolge, optional): Nach Umgebung filtern. Akzeptiert einen regulären Ausdruck. Standard: alle.
  • lookback_minutes (Ganzzahl, optional): Standard: 60. Fenster darf 7 Tage nicht überschreiten.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)

get_database_slow_queries

  • db_system (Zeichenfolge, optional): z. B. postgresql, mysql, mongodb, redis.
  • host (Zeichenfolge, optional): Datenbankhost (net_peer_name).
  • service_name (Zeichenfolge, optional): Name des aufrufenden Dienstes.
  • env (Zeichenfolge, optional)
  • min_duration_ms (Gleitkommazahl, optional): Mindestabfragedauer in ms.
  • lookback_minutes (Ganzzahl, optional): Standard: 60.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • limit (Ganzzahl, optional): Standard: 20.

get_database_queries

  • db_system (Zeichenfolge, optional)
  • host (Zeichenfolge, optional)
  • service_name (Zeichenfolge, optional)
  • env (Zeichenfolge, optional)
  • lookback_minutes (Ganzzahl, optional): Standard: 60.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • limit (Ganzzahl, optional): Standard: 20.

get_database_server_metrics

  • db_system (Zeichenfolge, erforderlich): z. B. postgresql, mysql, mongodb, redis, aerospike.
  • host (Zeichenfolge, optional)
  • lookback_minutes (Ganzzahl, optional): Standard: 60.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)

prometheus_range_query

  • query (Zeichenfolge, erforderlich): Die PromQL-Abfrage.
  • start_time_iso / end_time_iso (Zeichenfolge, optional): Standard: letzte 60 Minuten.
  • lookback_minutes (Gleitkommazahl, optional): Standard: 60.

prometheus_instant_query

  • query (Zeichenfolge, erforderlich)
  • time_iso (Zeichenfolge, optional): Standard: jetzt.
  • lookback_minutes (Gleitkommazahl, optional)

prometheus_label_values

  • match_query (Zeichenfolge, optional): PromQL-Filter.
  • label (Zeichenfolge, erforderlich): Label-Name.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)

prometheus_labels

  • match_query (Zeichenfolge, optional): PromQL-Filter.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)

get_logs

  • logjson_query (Array, erforderlich): JSON-Pipeline-Abfrage.
  • lookback_minutes (Ganzzahl, optional): Standard: 5.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • limit (Ganzzahl, optional): Serverstandard: 5000.
  • index (Zeichenfolge, optional): physical_index:<name> oder rehydration_index:<block_name>.

Für die logbasierte Dienstinventur fragen Sie zuerst physical_index_service_count ab:

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

Verwenden Sie service_name als ServiceName, env als Umgebung, wenn vorhanden, und name als physischen Indexnamen. Wenn name="default", lassen Sie index weg; für einen nicht standardmäßigen physischen Index, der vom Benutzer ausgewählt wurde, übergeben Sie index: "physical_index:<name>". Wenn das Backend die explizite physische Indexfilterung ablehnt, versuchen Sie es erneut ohne index und melden Sie, dass die explizite physische Indexfilterung für dieses Backend nicht verfügbar ist.

get_service_logs

  • service_name (Zeichenfolge, erforderlich)
  • lookback_minutes (Ganzzahl, optional): Standard: 60.
  • limit (Ganzzahl, optional): Standard: 20.
  • env (Zeichenfolge, optional)
  • severity_filters (Array, optional): z. B. ["error", "warn"]. ODER-Logik.
  • body_filters (Array, optional): z. B. ["timeout", "failed"]. ODER-Logik.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • index (Zeichenfolge, optional)

Mehrere Filtertypen kombinieren mit UND. Jedes Array verwendet intern ODER. Verwenden Sie zuerst get_logs für breite aggregierte Zählungen; verwenden Sie get_service_logs erst nach der Eingrenzung auf einen Dienst/Umgebung/Index und eine kleine Stichprobenmenge.

get_log_attributes

  • lookback_minutes (Ganzzahl, optional): Standard: 15.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • region (Zeichenfolge, optional)
  • index (Zeichenfolge, optional)

get_log_attributes_for_pipeline

  • pipeline (Array, erforderlich): Vorherige Filterstufen zur Eingrenzung der Erkennung, z. B. [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].
  • lookback_minutes (Ganzzahl, optional): Standard: 15.
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • region (Zeichenfolge, optional)
  • index (Zeichenfolge, optional)

get_drop_rules

Keine Parameter. Listet Drop-Regeln über GET /otel_settings/drop?region=... auf.

add_drop_rule

  • name (Zeichenfolge, erforderlich)
  • filters (Array, erforderlich): Jeder Filter: key, value, operator (equals/not_equals), conjunction (and).
  • Filter-Schlüssel müssen attributes["key_name"] oder resource.attributes["key_name"] verwenden (von der Last9-API gefordert).
  • Erstellt die Regel über POST /otel_settings/drop?region=...&cluster_id=....

get_traces

Für breite Suchen und Aggregationen verwenden. Für die exakte Trace-ID-Suche verwenden Sie get_service_traces.

  • tracejson_query (Array, erforderlich)
  • start_time_iso / end_time_iso (Zeichenfolge, optional)
  • lookback_minutes (Ganzzahl, optional): Standard: 60.
  • limit (Ganzzahl, optional): Standard: 5000.

get_service_traces

Genau eines von trace_id oder service_name ist erforderlich.

  • trace_id (string, optional): Standard-Rückblick: 72 Stunden.
  • service_name (string, optional): Standard-Rückblick: 60 Min.
  • lookback_minutes (integer, optional)
  • start_time_iso / end_time_iso (string, optional)
  • limit (integer, optional): Standard: 10.
  • env (string, optional)

get_trace_attributes

  • lookback_minutes (integer, optional): Standard: 15.
  • start_time_iso / end_time_iso (string, optional)
  • region (string, optional)

get_trace_attributes_for_pipeline

  • pipeline (array, erforderlich): Vorherige Filterstufen zur Eingrenzung der Erkennung, z. B. [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].
  • lookback_minutes (integer, optional): Standard: 15.
  • start_time_iso / end_time_iso (string, optional)
  • region (string, optional)

get_trace_attribute_values

  • tag_name (string, erforderlich): Attributname aus get_trace_attributes (z. B. resource_department oder attributes['http.method']).
  • pipeline (array, optional): Vorherige Filterstufen zur Eingrenzung der Werte; für globale Werte weglassen.
  • lookback_minutes (integer, optional): Standard: 15.
  • start_time_iso / end_time_iso (string, optional): Historische RFC3339-Grenzen; haben Vorrang vor lookback_minutes.
  • region (string, optional)

get_trace_attribute_deviations

  • comparison_mode (string, erforderlich): latency, errors oder time.
  • service_name (string, erforderlich)
  • environment (string, erforderlich): Exakter deployment.environment-Wert.
  • operation (string, optional)
  • filters (array, optional): Trace-JSON-Filterbedingungen.
  • candidate_attributes (array, optional): Maximal 8; für begrenzte Erkennung weglassen.
  • latency_threshold_ms (number, optional): Erforderlich für den latency-Modus; für andere Modi abgelehnt.
  • start_time_iso / end_time_iso (string, optional)
  • lookback_minutes (integer, optional): Standard: 15. Maximum: 15.
  • baseline_start_time_iso / baseline_end_time_iso (string, optional): Erforderlich für den time-Modus; nicht überlappend und gleich lang wie das Zielfenster.
  • minimum_cohort_size (integer, optional): Standard: 100. Minimum: 20.
  • minimum_value_support (integer, optional): Standard: 20. Minimum: 10.
  • limit (integer, optional): Standard: 10. Maximum: 10.

Erfordert die Aktivierung der zugehörigen Backend-Funktion.

get_trace_waterfall

  • trace_id (string, erforderlich)
  • environment (string, optional)
  • start_time_iso / end_time_iso (string, optional)
  • lookback_minutes (integer, optional): Standard: 4320 (72 Stunden).
  • selected_span_id (string, optional): Gibt Attribute, Ereignisse und Links nur für diesen Span zurück.
  • max_spans (integer, optional): Standard: 500. Maximum: 1000.

Gibt einen investigation-evidence/v1-Umschlag zurück; das Wasserfalldiagramm befindet sich unter data.

get_change_events

  • start_time_iso / end_time_iso (string, optional)
  • lookback_minutes (integer, optional): Standard: 60.
  • service_name (string, optional)
  • env (string, optional)
  • event_name (string, optional): Zuerst ohne dies aufrufen, um available_event_names zu erhalten.

get_alert_groups

Konfigurierter Compass-Alert-Group-Bestand für Changeboard-/Label-Coverage-Audits. Enthält Gruppen ohne Regeln und Gruppen, die nicht auslösen. Gibt kein PromQL zurück.

  • alert_group_name / alert_group_type / data_source_name (string, optional): Groß-/Kleinschreibung-unabhängige Teilstring-Übereinstimmung.
  • team / tier (string, optional): Exakte Groß-/Kleinschreibung-unabhängige Übereinstimmung mit konfigurierten Metadaten.
  • label_key + label_value (string, optional): Müssen zusammen gesetzt werden. Exakte Groß-/Kleinschreibung-unabhängige Übereinstimmung mit einem metadata.labels-Paar – sowohl Schlüssel als auch Wert.

Gibt kompaktes JSON {"count":N,"groups":[...]} mit id, name, type, entity_class, team, tier, metadata.labels und Regelanzahlen zurück. Leeres team / labels bedeutet nicht gesetzt.

get_alert_config

  • search_term (string, optional): Freitextsuche über Name, Gruppe, Datenquelle, Tags.
  • rule_name (string, optional)
  • severity (string, optional)
  • rule_type (string, optional): static oder anomaly.
  • alert_group_name / alert_group_type / data_source_name (string, optional)
  • tags (array, optional): Alle müssen übereinstimmen (UND-Logik).

get_alerts

  • time_iso (string, optional): Auswertungszeit in RFC3339.
  • window (integer, optional): Rückblick in Sekunden. Standard: 900. Bereich: 60–86400.
  • lookback_minutes (integer, optional): Bereich: 1–1440.

get_alert_rule_state

  • start_time (integer, erforderlich): Unix-Epoch-Start des Bereichs (inklusive).
  • end_time (integer, erforderlich): Unix-Epoch-Ende des Bereichs (inklusive).
  • step (integer, erforderlich): Auflösung in Sekunden zwischen den Stichproben. Die Anzahl der Stichproben ((end_time - start_time) / step + 1) ist auf 100 begrenzt.
  • alert_group_id (string, optional): Nach Alert-Gruppen-ID filtern.
  • rule_name (string, optional): Regex-Filter auf Regelnamen.
  • alert_group_name (string, optional): Regex-Filter auf Alert-Gruppennamen.
  • label_filters (string, optional): Kommagetrennte key=value-Label-Filter.
  • state (string, optional): Nach Status filtern (z. B. firing).

Gibt eine JSON-Zuordnung von rule_id -> [{timestamp, is_firing}] zurück. Ein Zeitstempel, zu dem eine Regel in der Upstream-Antwort fehlt, wird als is_firing=0 gemeldet – das bedeutet „nicht als auslösend beobachtet“, nicht einen bestätigten Normalzustand.

get_notification_channels

Keine Parameter. Gibt alle konfigurierten Benachrichtigungskanäle zurück (Slack, PagerDuty, E-Mail, Webhooks usw.).

did_you_mean

  • query (string, erforderlich): Der zu suchende Name – teilweise, falsch geschrieben oder abgekürzt.
  • type (string, optional): Auf Entitätstyp beschränken: service, environment, host, database, k8s_deployment, k8s_namespace, job.

Gibt bis zu 3 nächste Übereinstimmungen mit Ähnlichkeitswerten zurück. Verwenden Sie dies vor jedem Tool-Aufruf, bei dem der Entitätsname unsicher ist. Wenn ein vorheriger Aufruf leere Ergebnisse zurückgab, versuchen Sie dies vor einem erneuten Versuch.

get_service_profile

  • service_name (string, erforderlich): Dienst, für den ein Telemetrieprofil abgeleitet werden soll.
  • datasource (string, optional): Datenquellenname. Für die Standardeinstellung weglassen.

Gibt eine kurze Untersuchungszusammenfassung zurück, gefolgt vom vollständigen Profil als rohes JSON: Signalpräsenz (logs/traces/metrics als present, absent oder unknown), Sprache und Laufzeit, Bereitstellungsumgebungen, Log-signal_shape (log_format, severity_set, level_field) und einen empfohlenen Ingest-Fix, falls zutreffend. Von Upstream abgeleitet und mit einer TTL von ca. 15 Minuten zwischengespeichert.

Rufen Sie dies vor jeder dienstbezogenen Untersuchung auf, damit die Tool-Auswahl zur tatsächlichen Telemetrie des Dienstes passt – überspringen Sie Trace-Tools, wenn traces absent ist, und wenn severity_set none oder partial ist, parsen Sie den Schweregrad aus level_field im Log-Body, anstatt severity_filters zu verwenden. metrics ist immer unknown und dependencies ist in v1 nicht befüllt. Wenn logs und traces beide absent sind, bestätigen Sie den Namen mit did_you_mean, bevor Sie schlussfolgern, dass der Dienst nicht überwacht wird.

list_dashboards

Keine Parameter. Gibt alle benutzerdefinierten Dashboards in der Organisation als JSON-Array mit id, name und Metadaten zurück.

get_dashboard

  • id (string, erforderlich): Dashboard-UUID.
  • region (string, optional): Region für die Panel-Abfragepopulation. Standardmäßig die konfigurierte Datenquellenregion.

validate_dashboard

Nur lesen. Erstellt oder aktualisiert niemals Dashboards. Akzeptiert genau eines von dashboard_id oder dashboard_definition.

  • dashboard_id (string, optional): Gespeicherte Dashboard-UUID zur Validierung.
  • dashboard_definition (object, optional): Inline-ungespeicherter Dashboard-Body (echter Trockenlauf).
  • start_time_iso / end_time_iso (string, optional): Validierungsfenster (RFC3339). Muss ≤ 24h sein.
  • region (string, optional): Region für die Panel-Abfrageausführung.

Gibt dashboard_validation/v1 zurück: Pro-Panel-Lint- und Ausführungsklassifizierung (data / no_data / invalid / error). Leere Ergebnisse am ersten Tag klassifizieren als valid_no_data ohne Diagnose-Sonden.

create_dashboard

Nur neu. Nachdem dieser Aufruf dashboard.id zurückgibt, mit update_dashboard verfeinern – nicht erneut erstellen, um Panels hinzuzufügen, zu kürzen oder zu korrigieren.

  • dashboard (object, erforderlich): Dashboard-Definition mit name und panels[]. Jedes Panel erfordert name, version, layout (x, y, w, h), visualization.type und queries[].
  • metadata (object, optional): Dashboard-Metadaten – _category- und _type-Felder (z. B. {"_category":"custom","_type":"metrics"}).

update_dashboard

Bevorzugen Sie dies nach create. Vollständiger Ersatz nach ID (gleicher Body wie bei create).

  • id (string, erforderlich): Dashboard-UUID zum Aktualisieren.
  • dashboard (object, erforderlich): Vollständiger Ersatz-Dashboard-Body (gleiche Form wie bei create).
  • metadata (object, optional): Ersatz-Metadaten. Schreibgeschützte System-Dashboards geben einen 403-Fehler zurück.

delete_dashboard

  • id (string, erforderlich): Dashboard-UUID zum Löschen. Schreibgeschützte System-Dashboards können nicht gelöscht werden.

list_dashboard_snapshots

  • dashboard_id (string, erforderlich): Dashboard-UUID, deren Snapshots aufgelistet werden sollen.

Gibt nur Metadaten zurück (id, name, expires_at usw.). Verwenden Sie get_dashboard_snapshot für eingefrorene Paneldaten.

get_dashboard_snapshot

  • id (string, erforderlich): Snapshot-UUID.

Gibt den vollständigen eingefrorenen Snapshot einschließlich dashboard_definition, panel_data, time_range und variables zurück.

delete_dashboard_snapshot

  • id (string, erforderlich): Snapshot-UUID zum Löschen.

get_profile_services

  • lookback_minutes / start_time_iso / end_time_iso (optional): Fenster; Rückblick oder explizite ISO-Grenzen bevorzugen (Standard 60m).
  • region (string, optional): Regionsüberschreibung.

Gibt Dienste zurück, die Profildaten im Fenster haben. Rufen Sie dies vor get_flamegraph / get_top_functions / get_profile_summary auf.

get_flamegraph

  • service (string, erforderlich): Dienstname aus get_profile_services.
  • profile_type (string, optional): cpu (Standard), alloc oder wall. Einen Typ beim Vergleich von Fenstern festlegen.
  • env / cluster / namespace / runtime (string, optional): Bereichsfilter.
  • limit (number, optional): Maximale aggregierte Stack-Zeilen (Standard 1000, Maximum 10000).
  • lookback_minutes / start_time_iso / end_time_iso / region (optional).

Gibt einen verschachtelten Flamegraph-Baum zurück (name / value / self / children). truncated: true bedeutet, dass das API-Zeilenlimit erreicht wurde.

get_top_functions

Gleiche Filter wie get_flamegraph. Gibt eine Selbst-Sample-Rangliste der heißesten Funktionen zurück. Kann abgeschnitten sein; truncated prüfen.

get_profile_summary

Gleiche Filter wie get_flamegraph. Gibt eine kurze natürlichsprachliche Triage des Profils für den Dienst zurück.

grafana_search_dashboards

  • query (string, optional): Titel-Teilstring. Leer listet breit auf (vorbehaltlich des 5.000-Zeilen-Limits).

Gibt {"dashboards":[…], "truncated":bool} mit uid, title, uri, url, type, tags zurück. Verwenden Sie uid mit grafana_get_dashboard.

grafana_get_dashboard

  • uid (string, erforderlich): Grafana-Dashboard-UID.
  • full_json (boolean, optional): Wenn true, rohes Grafana-JSON anstelle der gefilterten Zusammenfassung zurückgeben. Standardzusammenfassung: Version, Tags, Templating-Variablen sowie Typ/Datenquelle/gridPos/promQL-Ziele jedes Panels. Unbekannte Plugin-Panel-Typen erscheinen in unsupportedPanelTypes.

grafana_list_folders

Keine Parameter. Gibt den Ordnerbaum zurück.

grafana_list_folder_dashboards

  • folder_uid (string, erforderlich): Grafana-Ordner-UID.

Gibt {"dashboards":[…], "truncated":bool} für Dashboards in diesem Ordner zurück (paginiert bis zu 5.000).

grafana_list_datasources

Keine Parameter. Gibt eine sichere Projektion der Datenquellen zurück (ohne Anmeldeinformationsfelder).


Testen

Siehe TESTING.md für Einrichtung und Anweisungen zu Integrationstests.


MseeP.ai Security Assessment Badge