Last9 MCP Server
offiziellBringen Sie nahtlos Echtzeit-Produktionskontext—Logs, Metriken und Traces—in Ihre lokale Umgebung, um Code schneller automatisch zu reparieren.
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, die tatsächlichen Signale zu lesen.
Start in 30 Sekunden (Gehostet)
Keine zu installierende Binärdatei. Keine zu verwaltenden Token. Eine URL, OAuth in Ihrem 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+. Befehlspalette öffnen → MCP: Server hinzufügen, URL einfügen, authentifizieren.
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-Marktplatz ö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 Administratorzugriff auf Ihre Claude-Organisation.
Selbst gehostet (STDIO)
Verwenden Sie dies, wenn Ihr MCP-Client keinen HTTP-Transport unterstützt oder wenn der Server lokal ausgeführt werden muss.
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 |
Refresh-Token erhalten
Nur Administratoren können Token erstellen.
- Gehen Sie zu API-Zugriff
- Klicken Sie auf Token generieren mit Schreibberechtigungen
- Kopieren Sie ihn
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 einzufügen:
| 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-Marktplatz > 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 | 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 Blockplanung 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_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, Puffer-Trefferraten – abhängig von Ihrem DB-System)
Unterstützt PostgreSQL, MySQL, MongoDB, Redis, Aerospike und alles andere mit OTel-Traces und 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 Logfelder für eine laufende Pipeline (bereichsbezogene Erkennung), jedes mit seinem exaktenfilter_fieldget_drop_rules— Log-Verwerfungsregeln von der Last9 Control Planeadd_drop_rule— Erstellen Sie eine neue Verwerfungsregel, 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 ausgelöste Alarme innerhalb eines Zeitfenstersget_alert_rule_state— Historischer Auslösestatus (1/0) pro Alarmregel über einen Zeitbereich, gruppiert nachrule_id. Filterbar nach Alarmgruppe, Regelname, Label-Filtern und Status.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 ID
Unscharfe Namensauflösung
did_you_mean— Wenn der Agent sich bei einem Entitätsnamen nicht sicher ist, gibt dies die ähnlichsten Ü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 Zeitbereich. 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 Abschneiden. Das Standardlimit beträgt 5000 Einträge für Logs; konfigurierbar über LAST9_MAX_GET_LOGS_ENTRIES.
Entwicklung
HTTP-Modus, curl-Tests, Build 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
MCP Streamable HTTP erfordert zuerst einen Initialisierungs-Handshake. Setzen Sie Mcp-Session-Id nicht bei der ersten Anfrage.
# Step 1: Initialize
SESSION_ID=$(curl -si -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {"name": "curl-test", "version": "1.0"}
}
}' | grep -i "^Mcp-Session-Id:" | awk '{print $2}' | tr -d '\r')
echo "Session: $SESSION_ID"
# Step 2: Send initialized notification
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{"jsonrpc": "2.0", "method": "notifications/initialized", "params": {}}'
# Step 3: List tools
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}'
# Step 4: Call a tool
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_service_logs",
"arguments": {
"service": "your-service-name",
"lookback_minutes": 30,
"limit": 10
}
}
}'
Aus dem Quellcode bauen
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 Dienst filtern.span_name(Zeichenkette, optional): Nach Span-Namen filtern.deployment_environment(Zeichenkette, optional): Nach Umgebung filtern.
get_service_summary
start_time_iso/end_time_iso(Zeichenkette, optional)env(Zeichenkette, optional): Standard istprod.
get_service_environments
start_time_iso/end_time_iso(Zeichenkette, optional)
Alle anderen APM-Tools benötigen einen
env-Wert. Verwenden Sie"", wenn dies leer zurückgibt.
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): Standard 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_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 Dienstes.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): Standard: letzte 60 Min.lookback_minutes(Gleitkommazahl, optional): Standard: 60.
prometheus_instant_query
query(Zeichenkette, erforderlich)time_iso(Zeichenkette, optional): Standard: 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(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 get_logs zuerst für breite aggregierte Zählungen; verwenden Sie get_service_logs erst, nachdem Sie auf einen Dienst/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): Standard-Rückblick: 72 Stunden.service_name(Zeichenkette, optional): Standard-Rückblick: 60 Min.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(Zeichenkette, optional)environment(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 Abtastungen. Die Anzahl der Abtastungen((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): Kommagetrenntekey=valueLabel-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 ähnlichste Treffer mit Ähnlichkeitsbewertungen zurück. Verwenden Sie dies vor jedem Werkzeugaufruf, bei dem der Entitätsname unsicher ist. Wenn ein vorheriger Aufruf leere Ergebnisse zurückgab, versuchen Sie dies vor einem erneuten Versuch.
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. Standard: 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(Zeichenkette, erforderlich): Zu löschende Dashboard-UUID. Schreibgeschützte System-Dashboards können nicht gelöscht werden.
Testen
Siehe TESTING.md für Einrichtung und Anweisungen zu Integrationstests.
