Last9
resmiBawa konteks produksi real-time—log, metrik, dan trace—secara mulus ke lingkungan lokal Anda untuk memperbaiki kode secara otomatis lebih cepat.
Apa yang bisa Anda lakukan dengan Last9 MCP?
Minta asisten Anda untuk menyelidiki insiden produksi menggunakan log langsung, jejak, dan metrik dari Last9.
- Peringkat kesehatan layanan — Gunakan
get_service_summaryuntuk melihat jumlah permintaan, throughput, dan kesalahan 4xx/5xx di seluruh armada Anda. - Temukan kueri basis data yang lambat — Gunakan
get_database_slow_queriesuntuk menarik eksekusi paling lambat yang sebenarnya dengan ID jejak untuk penelusuran lebih lanjut. - Tarik log layanan — Gunakan
get_service_logsuntuk mengambil baris log mentah yang difilter berdasarkan tingkat keparahan dan isi tubuh. - Telusuri satu permintaan — Gunakan
get_trace_waterfalluntuk melihat waterfall induk/anak untuk ID jejak yang tepat. - Periksa status peringatan — Gunakan
get_alert_rule_stateuntuk melihat riwayat pemicuan per aturan peringatan dalam rentang waktu. - Kelola dasbor — Gunakan
create_dashboarduntuk membuat dasbor kustom dengan panel dan kueri.
Dokumentasi
Server MCP Last9

Agen AI Anda tidak tahu apa yang rusak di produksi. Ini memperbaikinya.
Server MCP Last9 menghubungkan Claude, Cursor, Windsurf, dan asisten AI lain yang mendukung MCP langsung ke data observability produksi Anda — log, metrik, trace, pengecualian, kueri database, peringatan, dan penyebaran. Agen berhenti menebak dan mulai membaca sinyal yang sebenarnya.
Mulai dalam 30 detik (Hosted)
Tidak ada biner yang perlu diinstal. Tidak ada token yang perlu dikelola. Satu URL, OAuth di browser Anda, selesai.
Temukan slug organisasi Anda di 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
Ketik /mcp, pilih last9, autentikasi. Itu saja.
Cursor
Settings > MCP > Add New MCP Server:
{
"mcpServers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Klik Connect, selesaikan OAuth.
VS Code
Membutuhkan v1.99+. Buka Command Palette → MCP: Add Server, tempel URL, autentikasi.
Atau langsung di settings.json:
{
"mcp": {
"servers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
}
Windsurf
Settings > Cascade > Open MCP Marketplace > ikon roda gigi (mcp_config.json):
{
"mcpServers": {
"last9": {
"serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Claude Web/Desktop
Settings > Connectors > Add custom connector. Beri nama last9, tempel URL, autentikasi.
Membutuhkan akses admin ke organisasi Claude Anda.
Self-Hosted (STDIO)
Gunakan ini saat klien MCP Anda tidak mendukung transport HTTP, atau saat Anda memerlukan server berjalan secara lokal.
Instalasi
Homebrew:
brew install last9/tap/last9-mcp
NPM:
npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest
Rilis biner (Windows / manual):
Unduh dari GitHub Releases:
| Platform | Arsip |
|---|---|
| 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 |
Dapatkan Refresh Token
Hanya admin yang dapat membuat token.
- Buka API Access
- Klik Generate Token dengan izin Write
- Salin token tersebut
Konfigurasi Klien
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>"
}
}
}
}
Di mana menempelkan ini:
| Klien | Lokasi |
|---|---|
| Claude Web/Desktop | Settings > Developer > Edit Config (claude_desktop_config.json) |
| Cursor | Settings > Cursor Settings > MCP > Add New Global MCP Server |
| Windsurf | Settings > Cascade > MCP Marketplace > ikon roda gigi (mcp_config.json) |
| VS Code | Bungkus dalam { "mcp": { "servers": { ... } } } di settings.json — detail |
Konfigurasi STDIO VS Code
{
"mcp": {
"servers": {
"last9": {
"type": "stdio",
"command": "/opt/homebrew/bin/last9-mcp",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
}
Untuk NPM: gunakan "command": "npx" dan tambahkan "args": ["-y", "@last9/mcp-server@latest"].
Windows
Setelah mengunduh dari GitHub Releases, ekstrak dan arahkan ke path lengkap:
{
"mcpServers": {
"last9": {
"command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
Rute NPM lebih mudah di Windows — tidak perlu mengelola path.
Variabel Lingkungan
| Variabel | Default | Deskripsi |
|---|---|---|
LAST9_REFRESH_TOKEN | (wajib) | Refresh token dari API Access |
LAST9_DATASOURCE | default org | Nama datasource/cluster — berguna saat Anda memiliki beberapa cluster Levitate |
LAST9_API_HOST | app.last9.io | Ganti host API |
LAST9_TOOLSETS | semua tools | Toolset yang dipisahkan koma untuk diekspos (logs, traces, metrics, alerts, dashboards, investigate, all). Alias: LAST9_MCP_TOOLSETS |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | Entri maksimal untuk permintaan get_logs yang dibagi-bagi |
LAST9_DEBUG_CHUNKING | false | Atur true untuk mencatat detail perencanaan chunk untuk get_logs, get_service_logs, get_traces |
LAST9_DISABLE_TELEMETRY | true | Atur false untuk mengaktifkan tracing OTel internal |
OTEL_SDK_DISABLED | — | Variabel env OTel standar. Menimpa LAST9_DISABLE_TELEMETRY |
OTEL_EXPORTER_OTLP_ENDPOINT | — | Endpoint kolektor OTLP (hanya saat telemetri diaktifkan) |
OTEL_EXPORTER_OTLP_HEADERS | — | Header auth OTLP (hanya saat telemetri diaktifkan) |
Apa yang Dapat Dilakukan
Kesehatan Layanan
get_service_summary— Baris(service, env)peringkat armada: request_count interval, throughput_rpm, jumlah HTTP 4xx/5xx, dan jumlah kesalahan gRPCget_service_environments— Lingkungan yang tersedia untuk layanan Anda. Jalankan ini dulu — alat APM lain memerlukanenvdari siniget_service_performance_details— Rincian lengkap: throughput, tingkat kesalahan, p50/p90/p95/avg/max, apdex, ketersediaanget_service_operations_summary— Operasi yang dikelompokkan berdasarkan endpoint HTTP, panggilan DB, perpesanan, klien HTTPget_service_dependency_graph— Peta dependensi dengan throughput, latensi, dan tingkat kesalahan untuk upstream/downstream/infraget_apm_service_deviations— Bandingkan jendela saat ini dengan baseline durasi yang sama: regresi/perbaikan, rekonsiliasi Apdex, dan hasil akhir (armada atau layanan tunggal)get_exceptions— Pengecualian sisi server dengan filter layanan dan span
Observabilitas Database
Empat tools yang langsung menuju performa database Anda, berasal dari span trace OpenTelemetry. Tidak perlu instrumentasi tambahan jika Anda sudah menggunakan OTel.
get_databases— Temukan semua database di seluruh infrastruktur Anda: tipe DB, host, throughput (kueri/menit), latensi p95, tingkat kesalahan, jumlah layanan dependenget_database_slow_queries— Eksekusi kueri paling lambat yang sebenarnya, diurutkan berdasarkan durasi, dengan trace ID untuk menelusuri trace lengkapget_database_queries— Pola dan agregat kueri: seberapa sering kueri dijalankan, durasi rata-rata/p95, tingkat kesalahanget_database_server_metrics— Metrik sisi server dari host DB itu sendiri (CPU, koneksi, tingkat hit buffer — tergantung sistem DB Anda)
Mendukung PostgreSQL, MySQL, MongoDB, Redis, Aerospike, dan apa pun yang dilacak OTel dengan atribut db_system.
Prometheus / PromQL
prometheus_range_query— Kueri rentang PromQL atas metrik apa punprometheus_instant_query— Kueri instan; gunakan fungsi rollup sepertiavg_over_time,sum_over_timeprometheus_label_values— Nilai label untuk seri tertentuprometheus_labels— Semua label yang tersedia untuk sebuah seri
Arahkan ini ke datasource/cluster yang berbeda dari default dengan mengatur LAST9_DATASOURCE.
Log
get_logs— Kueri log pipeline JSON lengkap (agregasi, filter, ekstraksi field)get_service_logs— Baris log mentah untuk sebuah layanan, dapat difilter berdasarkan tingkat keparahan dan konten bodyget_log_attributes— Katalog global atribut dalam skema log untuk rentang waktuget_log_attributes_for_pipeline— Field log yang benar-benar ada untuk pipeline yang sedang berjalan (penemuan terbatas), masing-masing denganfilter_fieldyang tepatget_drop_rules— Aturan drop log dari Last9 Control Planeadd_drop_rule— Buat aturan drop baru untuk mengurangi volume log di sumbernya
Trace
get_traces— Kueri trace pipeline JSON untuk pencarian dan agregasi luasget_service_traces— Trace berdasarkan trace ID atau nama layanan yang tepat. Gunakan ini saat Anda memiliki trace ID — lebih cepatget_trace_attributes— Katalog global atribut dalam skema traceget_trace_attributes_for_pipeline— Atribut yang benar-benar ada untuk pipeline yang sedang berjalan (penemuan terbatas), masing-masing denganfilter_fieldyang tepatget_trace_attribute_values— Nilai berbeda untuk atribut trace, opsional dibatasi ke pipelineget_trace_attribute_deviations— Memberi peringkat nilai atribut yang berbeda antara dua kohort span terbatas (lambat vs cepat, error vs non-error, atau dua jendela waktu). Korelasi, bukan sebabget_trace_waterfall— Satu trace tepat sebagai waterfall parent/child dengan interval-union self-time, span paling lambat, dan peringatan grafik
Perubahan & Peringatan
get_change_events— Penyebaran, perubahan konfigurasi, rollback. Korelasikan insiden dengan apa yang berubahget_alert_config— Konfigurasi aturan peringatan — dapat dicari berdasarkan nama, tingkat keparahan, tipe, tagget_alerts— Peringatan yang sedang aktif dalam rentang waktuget_alert_rule_state— Status historis (1/0) per aturan peringatan selama rentang waktu, dikelompokkan berdasarkanrule_id. Dapat difilter berdasarkan grup peringatan, nama aturan, filter label, dan status.get_notification_channels— Saluran notifikasi yang dikonfigurasi (Slack, PagerDuty, email, dll.)
Dasbor Kustom
list_dashboards— Semua dasbor kustom di organisasi Anda: ID, nama, dan metadataget_dashboard— Definisi dasbor lengkap berdasarkan ID, termasuk panel dan kuericreate_dashboard— Buat dasbor kustom baru dengan panel, kueri, dan metadataupdate_dashboard— Perbarui dasbor yang ada berdasarkan ID (dasbor sistem read-only mengembalikan error)delete_dashboard— Hapus dasbor kustom berdasarkan IDlist_dashboard_snapshots— Snapshot beku point-in-time untuk dasbor (hanya metadata)get_dashboard_snapshot— Snapshot beku lengkap termasuk data panel untuk RCA / tampilan yang dapat dibagikandelete_dashboard_snapshot— Hapus snapshot beku berdasarkan ID
Resolusi Nama Fuzzy
did_you_mean— Saat agen tidak yakin tentang nama entitas, ini mengembalikan kecocokan terdekat dari katalog Anda (layanan, lingkungan, host, database, deployment/namespace K8s, job). Hingga 3 saran dengan skor kemiripan. Server memanggil ini otomatis sebelum sebagian besar tools saat pencarian nama mengembalikan kosong.
Cara Kerjanya
Tautan dalam di setiap respons. Setiap tool mengembalikan field deep_link — URL langsung ke dasbor Last9 untuk kueri dan rentang waktu yang tepat. Agen dapat memberikan tautan itu; Anda mengkliknya; Anda sampai di sana.
Toolset. Secara default server mengekspos setiap tool. Host otomasi yang hanya perlu investigasi (log/traces/metrik) dapat mengatur LAST9_TOOLSETS=investigate (atau berikan --toolsets=investigate) sehingga tools/list tetap kecil tanpa penonaktifan massal sisi klien. Paket bernama: logs, traces, metrics, alerts, dashboards, investigate, all. Nama yang tidak dikenal gagal cepat. Paket metrics saja tidak termasuk list_datasources atau did_you_mean — gunakan investigate (atau gabungkan toolset) saat Anda memerlukan bantuan penemuan tersebut.
Sumber daya referensi tool. Manual logjson/tracejson/service-logs/metrik yang panjang adalah sumber daya MCP (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics), bukan teks deskripsi tool yang selalu aktif. Aturan kueri penting tetap di deskripsi tool sehingga agen yang tidak pernah memanggil resources/read tetap mendapatkan panduan konstruksi yang benar. Temukan field khusus organisasi dengan get_log_attributes / get_log_attributes_for_pipeline (dan padanan trace-nya) — mereka tidak disuntikkan ke deskripsi.
Hasil besar yang dibagi-bagi. get_logs dan get_traces menangani set hasil besar melalui chunking daripada memotong. Batas default adalah 5000 entri untuk log; dapat dikonfigurasi melalui LAST9_MAX_GET_LOGS_ENTRIES.
Pengembangan
Mode HTTP, pengujian curl, membangun dari sumber
Jalankan dalam Mode HTTP
export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server
Server dimulai di http://localhost:8080/mcp.
Uji dengan curl
Handler Streamable HTTP berjalan dalam mode stateless, sehingga setiap permintaan dilayani secara independen. Jabat tangan initialize dan header Mcp-Session-Id bersifat opsional — klien yang mengirimnya tetap berfungsi (header diterima dan diabaikan), dan klien juga dapat langsung melompat ke tools/list / tools/call. Setiap tool adalah kueri request/response yang independen; server tidak mengeluarkan notifikasi server→klien, sehingga GET /mcp (aliran SSE) mengembalikan 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
}
}
}'
Membangun dari Sumber
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 digunakan untuk pengembangan lokal. Untuk penggunaan aktual, endpoint HTTP yang di-hosting lebih mudah.
Referensi Tool
Semua parameter, standar input waktu, dan detail
Input Waktu
- Waktu absolut (
start_time_iso/end_time_iso, atautime_iso) diutamakan daripadalookback_minutes. - Untuk jendela relatif: gunakan
lookback_minutes. - Untuk jendela absolut: gunakan RFC3339/ISO8601 —
2026-02-09T15:04:05Z. YYYY-MM-DD HH:MM:SSlama diterima hanya untuk kompatibilitas.
get_exceptions
limit(integer, opsional): Maksimum exception. Default: 20.lookback_minutes(integer, opsional): Default: 60.start_time_iso/end_time_iso(string, opsional): Rentang waktu absolut.service_name(string, opsional): Filter berdasarkan layanan.span_name(string, opsional): Filter berdasarkan nama span.env(string, opsional): Filter berdasarkan lingkungan.
get_service_summary
start_time_iso/end_time_iso(string, opsional)env(string, opsional): Regex PromQL. Default:.*. Pencocokan tepat memerlukan jangkar (mis.^prod$).sort_by(string, opsional):request_count(default),throughput_rpm,http_4xx_count,http_5xx_count, ataugrpc_error_count.limit(integer, opsional): Maksimum baris yang diperingkat. Hilangkan atau 0 berarti 10; nilai di atas 100 dibatasi ke 100.
get_service_environments
start_time_iso/end_time_iso(string, opsional)
Semua alat APM lainnya memerlukan nilai
env. Gunakan""jika ini mengembalikan kosong.
get_service_performance_details
service_name(string, wajib)lookback_minutes(integer, opsional): Default: 60.start_time_iso/end_time_iso(string, opsional)env(string, opsional): Default:prod.
get_service_operations_summary
service_name(string, wajib)lookback_minutes(integer, opsional): Default: 60.start_time_iso/end_time_iso(string, opsional)env(string, opsional): Default:prod.
get_service_dependency_graph
service_name(string, opsional)lookback_minutes(integer, opsional): Default: 60.start_time_iso/end_time_iso(string, opsional)env(string, opsional): Default:prod.
get_apm_service_deviations
service_name(string, opsional): Hilangkan untuk cakupan fleet; sediakan untuk satu layanan dan korelasi operasinya.lookback_minutes(integer, opsional): Jendela saat ini. Default: 60.start_time_iso/end_time_iso(string, opsional): Jendela saat ini eksplisit.baseline_start_time_iso/baseline_end_time_iso(string, opsional): Baseline eksplisit. Default: jendela dengan durasi sama yang tepat sebelumnya.datasource(string, opsional): Batasi perbandingan ke satu sumber data.env(string, opsional): Default:prod.max_services/max_operations(integer, opsional): Default 10, maksimum 10 masing-masing.
get_databases
env(string, opsional): Filter berdasarkan lingkungan. Default: semua.lookback_minutes(integer, opsional): Default: 60.start_time_iso/end_time_iso(string, opsional)
get_database_slow_queries
db_system(string, opsional): mis.postgresql,mysql,mongodb,redis.host(string, opsional): Host database (net_peer_name).service_name(string, opsional): Nama layanan pemanggil.env(string, opsional)min_duration_ms(float, opsional): Durasi kueri minimum dalam ms.lookback_minutes(integer, opsional): Default: 60.start_time_iso/end_time_iso(string, opsional)limit(integer, opsional): Default: 20.
get_database_queries
db_system(string, opsional)host(string, opsional)service_name(string, opsional)env(string, opsional)lookback_minutes(integer, opsional): Default: 60.start_time_iso/end_time_iso(string, opsional)limit(integer, opsional): Default: 20.
get_database_server_metrics
db_system(string, wajib): mis.postgresql,mysql,mongodb,redis,aerospike.host(string, opsional)lookback_minutes(integer, opsional): Default: 60.start_time_iso/end_time_iso(string, opsional)
prometheus_range_query
query(string, wajib): Kueri PromQL.start_time_iso/end_time_iso(string, opsional): Default: 60 menit terakhir.lookback_minutes(float, opsional): Default: 60.
prometheus_instant_query
query(string, wajib)time_iso(string, opsional): Default: sekarang.lookback_minutes(float, opsional)
prometheus_label_values
match_query(string, opsional): Filter PromQL.label(string, wajib): Nama label.start_time_iso/end_time_iso(string, opsional)
prometheus_labels
match_query(string, opsional): Filter PromQL.start_time_iso/end_time_iso(string, opsional)
get_logs
logjson_query(array, wajib): Kueri pipeline JSON.lookback_minutes(integer, opsional): Default: 5.start_time_iso/end_time_iso(string, opsional)limit(integer, opsional): Default server: 5000.index(string, opsional):physical_index:<name>ataurehydration_index:<block_name>.
Untuk inventaris layanan berbasis log, kueri physical_index_service_count terlebih dahulu:
sum by (name, service_name, env) (physical_index_service_count{destination="logs"})
Gunakan service_name sebagai ServiceName, env sebagai lingkungan jika tersedia, dan name sebagai nama indeks fisik. Jika name="default", hilangkan index; untuk indeks fisik non-default yang dipilih oleh pengguna, berikan index: "physical_index:<name>". Jika backend menolak pemfilteran indeks fisik eksplisit, coba lagi tanpa index dan laporkan bahwa pemfilteran indeks fisik eksplisit tidak tersedia untuk backend tersebut.
get_service_logs
service_name(string, wajib)lookback_minutes(integer, opsional): Default: 60.limit(integer, opsional): Default: 20.env(string, opsional)severity_filters(array, opsional): mis.["error", "warn"]. Logika OR.body_filters(array, opsional): mis.["timeout", "failed"]. Logika OR.start_time_iso/end_time_iso(string, opsional)index(string, opsional)
Beberapa jenis filter digabungkan dengan AND. Setiap array menggunakan OR secara internal.
Gunakan get_logs untuk hitungan agregat yang luas terlebih dahulu; gunakan get_service_logs hanya setelah mempersempit ke layanan/env/index dan kumpulan sampel kecil.
get_log_attributes
lookback_minutes(integer, opsional): Default: 15.start_time_iso/end_time_iso(string, opsional)region(string, opsional)index(string, opsional)
get_log_attributes_for_pipeline
pipeline(array, wajib): Tahap filter sebelumnya untuk membatasi penemuan, mis.[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].lookback_minutes(integer, opsional): Default: 15.start_time_iso/end_time_iso(string, opsional)region(string, opsional)index(string, opsional)
get_drop_rules
Tidak ada parameter. Menampilkan aturan drop melalui GET /otel_settings/drop?region=....
add_drop_rule
name(string, wajib)filters(array, wajib): Setiap filter:key,value,operator(equals/not_equals),conjunction(and).- Kunci filter harus menggunakan
attributes["key_name"]atauresource.attributes["key_name"](wajib oleh API Last9). - Membuat aturan melalui
POST /otel_settings/drop?region=...&cluster_id=....
get_traces
Gunakan untuk pencarian dan agregasi yang luas. Untuk pencarian ID trace yang tepat, gunakan get_service_traces.
tracejson_query(array, wajib)start_time_iso/end_time_iso(string, opsional)lookback_minutes(integer, opsional): Default: 60.limit(integer, opsional): Default: 5000.
get_service_traces
Tepat satu dari trace_id atau service_name wajib diisi.
trace_id(string, opsional): Default lookback: 72 jam.service_name(string, opsional): Default lookback: 60 menit.lookback_minutes(integer, opsional)start_time_iso/end_time_iso(string, opsional)limit(integer, opsional): Default: 10.env(string, opsional)
get_trace_attributes
lookback_minutes(integer, opsional): Default: 15.start_time_iso/end_time_iso(string, opsional)region(string, opsional)
get_trace_attributes_for_pipeline
pipeline(array, wajib): Tahap filter sebelumnya untuk membatasi penemuan, mis.[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].lookback_minutes(integer, opsional): Default: 15.start_time_iso/end_time_iso(string, opsional)region(string, opsional)
get_trace_attribute_values
tag_name(string, wajib): Nama atribut dariget_trace_attributes(mis.resource_departmentatauattributes['http.method']).pipeline(array, opsional): Tahap filter sebelumnya untuk membatasi nilai; hilangkan untuk nilai global.region(string, opsional)
get_trace_attribute_deviations
comparison_mode(string, wajib):latency,errors, atautime.service_name(string, wajib)environment(string, wajib): Nilaideployment.environmentyang tepat.operation(string, opsional)filters(array, opsional): Kondisi filter JSON trace.candidate_attributes(array, opsional): Maksimum 8; hilangkan untuk penemuan terbatas.latency_threshold_ms(number, opsional): Wajib untuk modelatency; ditolak untuk mode lainnya.start_time_iso/end_time_iso(string, opsional)lookback_minutes(integer, opsional): Default: 15. Maksimum: 15.baseline_start_time_iso/baseline_end_time_iso(string, opsional): Wajib untuk modetime; tidak tumpang tindih dan sama durasinya dengan jendela target.minimum_cohort_size(integer, opsional): Default: 100. Minimum: 20.minimum_value_support(integer, opsional): Default: 20. Minimum: 10.limit(integer, opsional): Default: 10. Maksimum: 10.
Memerlukan kapabilitas backend pendamping yang diaktifkan.
get_trace_waterfall
trace_id(string, wajib)environment(string, opsional)start_time_iso/end_time_iso(string, opsional)lookback_minutes(integer, opsional): Default: 4320 (72 jam).selected_span_id(string, opsional): Mengembalikan atribut, peristiwa, dan tautan untuk span tersebut saja.max_spans(integer, opsional): Default: 500. Maksimum: 1000.
Mengembalikan envelope investigation-evidence/v1; waterfall berada di bawah data.
get_change_events
start_time_iso/end_time_iso(string, opsional)lookback_minutes(integer, opsional): Default: 60.service_name(string, opsional)env(string, opsional)event_name(string, opsional): Panggil tanpa ini terlebih dahulu untuk mendapatkanavailable_event_names.
get_alert_config
search_term(string, opsional): Pencarian teks bebas di seluruh nama, grup, sumber data, dan tag.rule_name(string, opsional)severity(string, opsional)rule_type(string, opsional):staticatauanomaly.alert_group_name/alert_group_type/data_source_name(string, opsional)tags(array, opsional): Semua harus cocok (logika AND).
get_alerts
time_iso(string, opsional): Waktu evaluasi dalam RFC3339.window(integer, opsional): Jangka waktu mundur dalam detik. Default: 900. Rentang: 60–86400.lookback_minutes(integer, opsional): Rentang: 1–1440.
get_alert_rule_state
start_time(integer, wajib): Awal rentang waktu Unix epoch (inklusif).end_time(integer, wajib): Akhir rentang waktu Unix epoch (inklusif).step(integer, wajib): Resolusi dalam detik antar sampel. Jumlah sampel((end_time - start_time) / step + 1)dibatasi maksimal 100.alert_group_id(string, opsional): Filter berdasarkan ID grup alert.rule_name(string, opsional): Filter regex pada nama aturan.alert_group_name(string, opsional): Filter regex pada nama grup alert.label_filters(string, opsional): Filter labelkey=valueyang dipisahkan koma.state(string, opsional): Filter berdasarkan status (mis.firing).
Mengembalikan peta JSON dari rule_id -> [{timestamp, is_firing}]. Stempel waktu saat suatu aturan tidak ada dalam respons upstream dilaporkan sebagai is_firing=0 — ini berarti "tidak teramati sedang aktif", bukan status normal yang terkonfirmasi.
get_notification_channels
Tidak ada parameter. Mengembalikan semua saluran notifikasi yang dikonfigurasi (Slack, PagerDuty, email, webhooks, dll.).
did_you_mean
query(string, wajib): Nama yang dicari — sebagian, salah eja, atau disingkat.type(string, opsional): Batasi ke tipe entitas:service,environment,host,database,k8s_deployment,k8s_namespace,job.
Mengembalikan hingga 3 kecocokan terdekat dengan skor kemiripan. Gunakan ini sebelum pemanggilan tool apa pun saat nama entitas tidak pasti. Jika panggilan sebelumnya mengembalikan hasil kosong, coba ini sebelum mencoba ulang.
list_dashboards
Tidak ada parameter. Mengembalikan semua dashboard kustom dalam org sebagai array JSON dengan id, name, dan metadata.
get_dashboard
id(string, wajib): UUID dashboard.region(string, opsional): Region untuk pengisian kueri panel. Defaultnya adalah region sumber data yang dikonfigurasi.
create_dashboard
dashboard(object, wajib): Definisi dashboard dengannamedanpanels[]. Setiap panel memerlukanname,version,layout(x,y,w,h),visualization.type, danqueries[].metadata(object, opsional): Metadata dashboard — field_categorydan_type(mis.{"_category":"custom","_type":"metrics"}).
update_dashboard
id(string, wajib): UUID dashboard yang akan diperbarui.dashboard(object, wajib): Badan dashboard pengganti lengkap (bentuk yang sama dengan create).metadata(object, opsional): Metadata pengganti. Dashboard sistem yang bersifat read-only mengembalikan error 403.
delete_dashboard
id(string, wajib): UUID dashboard yang akan dihapus. Dashboard sistem yang bersifat read-only tidak dapat dihapus.
list_dashboard_snapshots
dashboard_id(string, wajib): UUID dashboard yang snapshot-nya akan didaftar.
Mengembalikan metadata saja (id, name, expires_at, dll.). Gunakan get_dashboard_snapshot untuk data panel yang dibekukan.
get_dashboard_snapshot
id(string, wajib): UUID snapshot.
Mengembalikan snapshot beku lengkap termasuk dashboard_definition, panel_data, time_range, dan variables.
delete_dashboard_snapshot
id(string, wajib): UUID snapshot yang akan dihapus.
Pengujian
Lihat TESTING.md untuk pengaturan dan petunjuk pengujian integrasi.
