Last9
offiziellBringen 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?
- Check service health and performance — Ask your AI to run
get_service_summaryorget_service_performance_detailsfor throughput, error rates, and latency across your services. - Investigate database performance — Use
get_database_slow_queriesto surface the slowest query executions with trace IDs, orget_database_server_metricsfor host-level CPU and connection stats. - Query logs and traces with your actual schema — Run
get_logsorget_traceswith JSON pipeline queries; the server caches your live attribute names so the assistant knows your exact fields. - Correlate incidents with recent changes — Call
get_change_eventsto list deployments and config changes, then cross-reference withget_alertsorget_alert_rule_state. - Discover and manage dashboards — List, create, update, or delete custom dashboards via
list_dashboards,create_dashboard, andupdate_dashboard, or capture point-in-time snapshots. - Resolve ambiguous entity names — When a service or database name isn’t found,
did_you_meanreturns the closest matches from your catalog before retrying.
Dokumentation
Last9 MCP Server

Ihr KI-Agent weiß nicht, was in der Produktion kaputt ist. Das behebt dieses Problem.
Der 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, Alarme und Deployments. Der Agent hört auf zu raten und beginnt, das tatsächliche Signal zu lesen.
Start in 30 Sekunden (Gehostet)
Keine Binärdatei 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 > Zahnradsymbol (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 Admin-Zugriff 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):
Herunterladen von GitHub Releases:
| Plattform | Archiv |
|---|---|
| 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 Admins können Tokens erstellen.
- Gehen Sie zu API-Zugriff
- Klicken Sie auf Token generieren mit Schreibberechtigungen
- 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 dies einzufügen ist:
| Client | Ort |
|---|---|
| Claude Web/Desktop | Einstellungen > Entwickler > Konfiguration bearbeiten (claude_desktop_config.json) |
| Cursor | Einstellungen > Cursor-Einstellungen > MCP > Neuen globalen MCP-Server hinzufügen |
| Windsurf | Einstellungen > Cascade > MCP Marketplace > Zahnradsymbol (mcp_config.json) |
| VS Code | In { "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: Verwenden Sie "command": "npx" und fügen Sie "args": ["-y", "@last9/mcp-server@latest"] hinzu.
Windows
Nach dem Herunterladen von GitHub Releases entpacken 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.
Umgebungsvariablen
| Variable | Standard | Beschreibung |
|---|---|---|
LAST9_REFRESH_TOKEN | (erforderlich) | Refresh-Token von API-Zugriff |
LAST9_DATASOURCE | Organisationsstandard | Datenquellen-/Clustername – nützlich, wenn Sie mehrere Levitate-Cluster haben |
LAST9_API_HOST | app.last9.io | Den API-Host überschreiben |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | Maximale Einträge für gestückelte get_logs-Anfragen |
LAST9_DEBUG_CHUNKING | false | Setzen Sie true, um Details zur Chunk-Planung für get_logs, get_service_logs, get_traces zu protokollieren |
LAST9_DISABLE_TELEMETRY | true | Setzen Sie false, 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
Service-Zustand
get_service_summary— Durchsatz, Fehlerrate, p95-Antwortzeit über alle Dienste hinwegget_service_environments— Verfügbare Umgebungen für Ihre Dienste. Führen Sie dies zuerst aus – andere APM-Tools benötigenenvvon hierget_service_performance_details— Vollständige Aufschlüsselung: Durchsatz, Fehlerrate, p50/p90/p95/Durchschnitt/Max, Apdex, Verfügbarkeitget_service_operations_summary— Operationen gruppiert nach HTTP-Endpunkten, DB-Aufrufen, Messaging, HTTP-Clientsget_service_dependency_graph— Abhängigkeitsdiagramm mit Durchsatz, Latenz und Fehlerraten für Upstream/Downstream/Infrastrukturget_apm_service_deviations— Vergleichen Sie ein aktuelles Fenster mit einer gleich langen Baseline: Regressionen/Verbesserungen, Apdex-Abgleich und ein Terminal-Ergebnis (Flotte 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. Keine zusätzliche Instrumentierung erforderlich, wenn Sie bereits OTel verwenden.
get_databases— Entdecken Sie alle Datenbanken in Ihrer Infrastruktur: DB-Typ, Host, Durchsatz (Abfragen/Min), p95-Latenz, Fehlerrate, Anzahl abhängiger Diensteget_database_slow_queries— Die tatsächlich langsamsten Abfrageausführungen, sortiert nach Dauer, mit Trace-IDs zum Drilldown in vollständige Tracesget_database_queries— Abfragemuster und Aggregate: wie oft eine Abfrage ausgeführt wird, durchschnittliche/p95-Dauer, Fehlerrateget_database_server_metrics— Serverseitige Metriken vom DB-Host selbst (CPU, Verbindungen, Buffer-Trefferraten – abhängig von Ihrem DB-System)
Unterstützt PostgreSQL, MySQL, MongoDB, Redis, Aerospike und alles andere mit OTel-Traces mit einem db_system-Attribut.
Prometheus / PromQL
prometheus_range_query— PromQL-Bereichsabfragen über jede Metrikprometheus_instant_query— Sofortabfragen; verwenden Sie Rollup-Funktionen wieavg_over_time,sum_over_timeprometheus_label_values— Label-Werte für eine bestimmte Serieprometheus_labels— Alle für eine Serie verfügbaren Labels
Richten Sie diese auf eine andere Datenquelle/einen anderen Cluster als den Standard, indem Sie LAST9_DATASOURCE setzen.
Logs
get_logs— Vollständige JSON-Pipeline-Log-Abfragen (Aggregationen, Filter, Feldextraktion)get_service_logs— Rohe Logzeilen für einen Dienst, filterbar nach Schweregrad und Nachrichteninhaltget_log_attributes— Globaler Katalog der Attribute im Log-Schema für ein Zeitfensterget_log_attributes_for_pipeline— Tatsächlich vorhandene Log-Felder für eine laufende Pipeline (bereichsbezogene Erkennung), jedes mit seinem exaktenfilter_fieldget_drop_rules— Log-Drop-Regeln von der Last9 Control Planeadd_drop_rule— Erstellen Sie eine neue Drop-Regel, um das Log-Volumen an der Quelle zu reduzieren
Traces
get_traces— JSON-Pipeline-Trace-Abfragen für breite Suchen und Aggregationenget_service_traces— Traces nach exakter Trace-ID oder Dienstname. Verwenden Sie dies, wenn Sie eine Trace-ID haben – es ist schnellerget_trace_attributes— Globaler Katalog der Attribute im Trace-Schemaget_trace_attributes_for_pipeline— Tatsächlich vorhandene Attribute für eine laufende Pipeline (bereichsbezogene Erkennung), jedes mit seinem exaktenfilter_fieldget_trace_attribute_values— Eindeutige Werte für ein Trace-Attribut, optional auf eine Pipeline beschränkt
Änderungsereignisse & Alarme
get_change_events— Deployments, Konfigurationsänderungen, Rollbacks. Korrelieren Sie Vorfälle mit dem, was sich geändert hatget_alert_config— Alarmregelkonfigurationen – durchsuchbar nach Name, Schweregrad, Typ, Tagsget_alerts— Derzeit aktive Alarme innerhalb eines Zeitfenstersget_alert_rule_state— Historischer Auslösezustand (1/0) pro Alarmregel über einen Zeitraum, gruppiert nachrule_id. Filterbar nach Alarmgruppe, 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 Metadatenget_dashboard— Vollständige Dashboard-Definition nach ID, einschließlich Panels und Abfragencreate_dashboard— Erstellen Sie ein neues benutzerdefiniertes Dashboard mit Panels, Abfragen und Metadatenupdate_dashboard— Aktualisieren Sie ein vorhandenes Dashboard nach ID (schreibgeschützte System-Dashboards geben einen Fehler zurück)delete_dashboard— Löschen Sie ein benutzerdefiniertes Dashboard nach IDlist_dashboard_snapshots— Eingefrorene Zeitpunkt-Snapshots für ein Dashboard (nur Metadaten)get_dashboard_snapshot— Vollständiger eingefrorener Snapshot einschließlich Panel-Daten für RCA / teilbare Ansichtendelete_dashboard_snapshot— Löschen Sie einen eingefrorenen Snapshot nach ID
Unscharfe Namensauflösung
did_you_mean— Wenn der Agent sich bei einem Entitätsnamen nicht sicher ist, gibt dies die nächstgelegenen Übereinstimmungen aus Ihrem Katalog zurück (Dienste, Umgebungen, Hosts, Datenbanken, K8s-Deployments/Namespaces, Jobs). Bis zu 3 Vorschläge mit Ähnlichkeitsbewertungen. Der Server ruft dies automatisch vor den meisten Tools auf, wenn eine Namenssuche leer zurückgibt.
Wie es funktioniert
Deep Links bei jeder Antwort. Jedes Tool gibt ein deep_link-Feld zurück – eine direkte URL in das Last9-Dashboard für genau diese Abfrage und diesen Zeitraum. Der Agent kann Ihnen den Link geben; Sie klicken darauf; Sie sind dort.
Live-Attribut-Caching. Beim Start ruft der Server die tatsächlichen Log- und Trace-Attributnamen aus Ihren Daten ab und bettet sie in die Tool-Beschreibungen ein. Das bedeutet, dass der KI-Assistent weiß, welche Felder in Ihrem Schema existieren, nicht nur eine generische Liste. Der Cache wird alle 2 Stunden aktualisiert.
Gestückelte große Ergebnisse. get_logs und get_traces verarbeiten große Ergebnismengen durch Stückelung statt durch Kürzung. Das Standardlimit beträgt 5000 Einträge für Logs; konfigurierbar über LAST9_MAX_GET_LOGS_ENTRIES.
Entwicklung
HTTP-Modus, curl-Tests, Erstellung 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
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 trotzdem (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, daher gibt GET /mcp (der SSE-Stream) 405 zurück.
# 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, Zeiteingabestandards und Details
Zeiteingabe
- Absolute Zeiten (
start_time_iso/end_time_isoodertime_iso) haben Vorrang vorlookback_minutes. - Für relative Fenster: Verwenden Sie
lookback_minutes. - Für absolute Fenster: Verwenden Sie RFC3339/ISO8601 —
2026-02-09T15:04:05Z. - Veraltetes
YYYY-MM-DD HH:MM:SSwird 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(Zeichenkette, optional): Absoluter Zeitbereich.service_name(Zeichenkette, optional): Nach Service filtern.span_name(Zeichenkette, optional): Nach Span-Namen filtern.env(Zeichenkette, optional): Nach Umgebung filtern.
get_service_summary
start_time_iso/end_time_iso(Zeichenkette, optional)env(Zeichenkette, optional): Standardwert istprod.
get_service_environments
start_time_iso/end_time_iso(Zeichenkette, optional)
Alle anderen APM-Tools erfordern einen
env-Wert. Verwenden Sie"", falls dies ein leeres Ergebnis liefert.
get_service_performance_details
service_name(Zeichenkette, erforderlich)lookback_minutes(Ganzzahl, optional): Standard: 60.start_time_iso/end_time_iso(Zeichenkette, optional)env(Zeichenkette, optional): Standardwert istprod.
get_service_operations_summary
service_name(Zeichenkette, erforderlich)lookback_minutes(Ganzzahl, optional): Standard: 60.start_time_iso/end_time_iso(Zeichenkette, optional)env(Zeichenkette, optional): Standardwert istprod.
get_service_dependency_graph
service_name(Zeichenkette, optional)lookback_minutes(Ganzzahl, optional): Standard: 60.start_time_iso/end_time_iso(Zeichenkette, optional)env(Zeichenkette, optional): Standardwert istprod.
get_apm_service_deviations
service_name(Zeichenkette, optional): Für den Flottenbereich weglassen; für einen Service und seine Betriebskorrelationen angeben.lookback_minutes(Ganzzahl, optional): Aktuelles Fenster. Standard: 60.start_time_iso/end_time_iso(Zeichenkette, optional): Explizites aktuelles Fenster.baseline_start_time_iso/baseline_end_time_iso(Zeichenkette, optional): Explizite Basislinie. Standardmäßig das unmittelbar vorhergehende Fenster gleicher Dauer.datasource(Zeichenkette, optional): Den Vergleich auf eine Datenquelle beschränken.env(Zeichenkette, optional): Standardwert istprod.max_services/max_operations(Ganzzahl, optional): Standard 10, maximal jeweils 10.
get_databases
env(Zeichenkette, optional): Nach Umgebung filtern. Standard: alle.lookback_minutes(Ganzzahl, optional): Standard: 60.start_time_iso/end_time_iso(Zeichenkette, optional)
get_database_slow_queries
db_system(Zeichenkette, optional): z. B.postgresql,mysql,mongodb,redis.host(Zeichenkette, optional): Datenbank-Host (net_peer_name).service_name(Zeichenkette, optional): Name des aufrufenden Service.env(Zeichenkette, optional)min_duration_ms(Gleitkommazahl, optional): Minimale Abfragedauer in ms.lookback_minutes(Ganzzahl, optional): Standard: 60.start_time_iso/end_time_iso(Zeichenkette, optional)limit(Ganzzahl, optional): Standard: 20.
get_database_queries
db_system(Zeichenkette, optional)host(Zeichenkette, optional)service_name(Zeichenkette, optional)env(Zeichenkette, optional)lookback_minutes(Ganzzahl, optional): Standard: 60.start_time_iso/end_time_iso(Zeichenkette, optional)limit(Ganzzahl, optional): Standard: 20.
get_database_server_metrics
db_system(Zeichenkette, erforderlich): z. B.postgresql,mysql,mongodb,redis,aerospike.host(Zeichenkette, optional)lookback_minutes(Ganzzahl, optional): Standard: 60.start_time_iso/end_time_iso(Zeichenkette, optional)
prometheus_range_query
query(Zeichenkette, erforderlich): Die PromQL-Abfrage.start_time_iso/end_time_iso(Zeichenkette, optional): Standardmäßig die letzten 60 Minuten.lookback_minutes(Gleitkommazahl, optional): Standard: 60.
prometheus_instant_query
query(Zeichenkette, erforderlich)time_iso(Zeichenkette, optional): Standardmäßig jetzt.lookback_minutes(Gleitkommazahl, optional)
prometheus_label_values
match_query(Zeichenkette, optional): PromQL-Filter.label(Zeichenkette, erforderlich): Label-Name.start_time_iso/end_time_iso(Zeichenkette, optional)
prometheus_labels
match_query(Zeichenkette, optional): PromQL-Filter.start_time_iso/end_time_iso(Zeichenkette, optional)
get_logs
logjson_query(Array, erforderlich): JSON-Pipeline-Abfrage.lookback_minutes(Ganzzahl, optional): Standard: 5.start_time_iso/end_time_iso(Zeichenkette, optional)limit(Ganzzahl, optional): Server-Standard: 5000.index(Zeichenkette, optional):physical_index:<name>oderrehydration_index:<block_name>.
Für das logbasierte Service-Inventar zuerst physical_index_service_count abfragen:
sum by (name, service_name, env) (physical_index_service_count{destination="logs"})
Verwenden Sie service_name als ServiceName, env als Umgebung, falls vorhanden, und name als physischen Indexnamen. Wenn name="default", lassen Sie index weg; für einen vom Benutzer ausgewählten nicht standardmäßigen physischen Index übergeben Sie index: "physical_index:<name>". Wenn das Backend die explizite physische Indexfilterung ablehnt, wiederholen Sie den Vorgang ohne index und melden Sie, dass die explizite physische Indexfilterung für dieses Backend nicht verfügbar ist.
get_service_logs
service_name(Zeichenkette, erforderlich)lookback_minutes(Ganzzahl, optional): Standard: 60.limit(Ganzzahl, optional): Standard: 20.env(Zeichenkette, 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(Zeichenkette, optional)index(Zeichenkette, optional)
Mehrere Filtertypen werden mit UND kombiniert. Jedes Array verwendet intern ODER.
Verwenden Sie zuerst get_logs für breite aggregierte Zählungen; verwenden Sie get_service_logs erst, nachdem Sie auf einen Service/eine Umgebung/einen Index und eine kleine Stichprobe eingegrenzt haben.
get_log_attributes
lookback_minutes(Ganzzahl, optional): Standard: 15.start_time_iso/end_time_iso(Zeichenkette, optional)region(Zeichenkette, optional)index(Zeichenkette, 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(Zeichenkette, optional)region(Zeichenkette, optional)index(Zeichenkette, optional)
get_drop_rules
Keine Parameter.
add_drop_rule
name(Zeichenkette, erforderlich)filters(Array, erforderlich): Jeder Filter:key,value,operator(equals/not_equals),conjunction(and).
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(Zeichenkette, 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(Zeichenkette, optional): Standardrückblick: 72 Stunden.service_name(Zeichenkette, optional): Standardrückblick: 60 Minuten.lookback_minutes(Ganzzahl, optional)start_time_iso/end_time_iso(Zeichenkette, optional)limit(Ganzzahl, optional): Standard: 10.env(Zeichenkette, optional)
get_trace_attributes
lookback_minutes(Ganzzahl, optional): Standard: 15.start_time_iso/end_time_iso(Zeichenkette, optional)region(Zeichenkette, 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(Ganzzahl, optional): Standard: 15.start_time_iso/end_time_iso(Zeichenkette, optional)region(Zeichenkette, optional)
get_trace_attribute_values
tag_name(Zeichenkette, erforderlich): Attributname ausget_trace_attributes(z. B.resource_departmentoderattributes['http.method']).pipeline(Array, optional): Vorherige Filterstufen zur Eingrenzung der Werte; für globale Werte weglassen.region(Zeichenkette, optional)
get_change_events
start_time_iso/end_time_iso(Zeichenkette, optional)lookback_minutes(Ganzzahl, optional): Standard: 60.service_name(Zeichenkette, optional)env(Zeichenkette, optional)event_name(Zeichenkette, optional): Rufen Sie dies zuerst ohne diesen Parameter auf, umavailable_event_nameszu erhalten.
get_alert_config
search_term(Zeichenkette, optional): Freitextsuche über Name, Gruppe, Datenquelle, Tags.rule_name(Zeichenkette, optional)severity(Zeichenkette, optional)rule_type(Zeichenkette, optional):staticoderanomaly.alert_group_name/alert_group_type/data_source_name(Zeichenkette, optional)tags(Array, optional): Alle müssen übereinstimmen (UND-Logik).
get_alerts
time_iso(Zeichenkette, optional): Auswertungszeit in RFC3339.window(Ganzzahl, optional): Rückblick in Sekunden. Standard: 900. Bereich: 60–86400.lookback_minutes(Ganzzahl, optional): Bereich: 1–1440.
get_alert_rule_state
start_time(Ganzzahl, erforderlich): Unix-Epochen-Start des Bereichs (inklusive).end_time(Ganzzahl, erforderlich): Unix-Epochen-Ende des Bereichs (inklusive).step(Ganzzahl, 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(Zeichenkette, optional): Nach Alarmgruppen-ID filtern.rule_name(Zeichenkette, optional): Regex-Filter für den Regelnamen.alert_group_name(Zeichenkette, optional): Regex-Filter für den Alarmgruppennamen.label_filters(Zeichenkette, optional): Durch Kommas getrenntekey=value-Label-Filter.state(Zeichenkette, 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 — dies 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(Zeichenkette, erforderlich): Der zu suchende Name — teilweise, falsch geschrieben oder abgekürzt.type(Zeichenkette, optional): Auf Entitätstyp beschränken:service,environment,host,database,k8s_deployment,k8s_namespace,job.
Gibt bis zu 3 beste Ü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ückgegeben hat, versuchen Sie dies, bevor Sie es erneut versuchen.
list_dashboards
Keine Parameter. Gibt alle benutzerdefinierten Dashboards in der Organisation als JSON-Array mit id, name und Metadaten zurück.
get_dashboard
id(Zeichenkette, erforderlich): Dashboard-UUID.region(Zeichenkette, optional): Region für die Panel-Abfragepopulation. Standardmäßig die konfigurierte Datenquellenregion.
create_dashboard
dashboard(Objekt, erforderlich): Dashboard-Definition mitnameundpanels[]. Jedes Panel erfordertname,version,layout(x,y,w,h),visualization.typeundqueries[].metadata(Objekt, optional): Dashboard-Metadaten — Felder_categoryund_type(z. B.{"_category":"custom","_type":"metrics"}).
update_dashboard
id(Zeichenkette, erforderlich): Zu aktualisierende Dashboard-UUID.dashboard(Objekt, erforderlich): Vollständiger Ersatz-Dashboard-Body (gleiche Form wie beim Erstellen).metadata(Objekt, optional): Ersatz-Metadaten. Schreibgeschützte System-Dashboards geben einen 403-Fehler zurück.
delete_dashboard
id(string, erforderlich): Dashboard-UUID, die gelöscht werden soll. 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, etc.). Verwenden Sie get_dashboard_snapshot für eingefrorene Panel-Daten.
get_dashboard_snapshot
id(string, erforderlich): Snapshot-UUID.
Gibt den vollständigen eingefrorenen Snapshot zurück, einschließlich dashboard_definition, panel_data, time_range und variables.
delete_dashboard_snapshot
id(string, erforderlich): Zu löschende Snapshot-UUID.
Testen
Siehe TESTING.md für Einrichtung und Anweisungen zu Integrationstests.
