Last9

resmi

Bawa 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?

  • Investigate service health — Minta ringkasan armada yang diperingkat berdasarkan jumlah permintaan, throughput, dan tingkat error melalui get_service_summary.

  • Pull raw service logs — Ambil baris log yang difilter berdasarkan tingkat keparahan atau konten isi untuk layanan tertentu menggunakan get_service_logs.

  • Trace database performance — Temukan database, kueri lambat, dan pola kueri dengan get_databases serta alat terkait.

  • Run PromQL queries — Jalankan kueri rentang atau instan terhadap metrik apa pun menggunakan prometheus_range_query atau prometheus_instant_query.

  • Correlate changes with incidents — Ambil peristiwa perubahan deployment dan konfigurasi untuk memahami apa yang mengubah perilaku produksi melalui get_change_events.

  • Manage custom dashboards — Daftarkan, buat, perbarui, atau validasi dasbor secara terprogram dengan list_dashboards dan create_dashboard.

Dokumentasi

Server MCP Last9

last9 mcp demo

Agen AI Anda tidak tahu apa yang rusak di produksi. Ini yang memperbaikinya.

Server MCP Last9 menghubungkan Claude, Cursor, Windsurf, dan asisten AI berkemampuan MCP lainnya langsung ke data observabilitas produksi Anda — log, metrik, trace, pengecualian, kueri basis data, peringatan, dan deployment. 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 membutuhkan 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:

PlatformArsip
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.

  1. Buka API Access
  2. Klik Generate Token dengan izin Write
  3. 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:

KlienLokasi
Claude Web/DesktopSettings > Developer > Edit Config (claude_desktop_config.json)
CursorSettings > Cursor Settings > MCP > Add New Global MCP Server
WindsurfSettings > Cascade > MCP Marketplace > ikon roda gigi (mcp_config.json)
VS CodeBungkus 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

VariabelDefaultDeskripsi
LAST9_REFRESH_TOKEN(wajib)Refresh token dari API Access
LAST9_DATASOURCEdefault orgNama datasource/cluster — berguna saat Anda memiliki beberapa cluster Levitate
LAST9_API_HOSTapp.last9.ioMenimpa host API
LAST9_TOOLSETSsemua toolsToolset yang dipisahkan koma untuk diekspos (logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all). Alias: LAST9_MCP_TOOLSETS
LAST9_MAX_GET_LOGS_ENTRIES5000Entri maksimum untuk permintaan get_logs yang di-chunk
LAST9_USE_LOG_SEARCH_APIfalseSetel true untuk menjawab get_logs dan get_service_logs dengan satu panggilan pencarian sisi server alih-alih chunking sisi klien
LAST9_DEBUG_CHUNKINGfalseSetel true untuk mencatat detail perencanaan chunk untuk get_logs, get_service_logs, get_traces
LAST9_DISABLE_TELEMETRYtrueSetel 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)

Yang Dapat Dilakukan

Kesehatan Layanan

  • get_service_summary — Baris (service, env) armada yang diperingkat: interval request_count, throughput_rpm, jumlah HTTP 4xx/5xx, dan jumlah error gRPC
  • get_service_environments — Lingkungan yang tersedia untuk layanan Anda. Jalankan ini terlebih dahulu — alat APM lain membutuhkan env dari sini
  • get_service_performance_details — Rincian lengkap: throughput, tingkat error, p50/p90/p95/avg/max, apdex, ketersediaan
  • get_service_operations_summary — Operasi yang dikelompokkan berdasarkan endpoint HTTP, panggilan DB, perpesanan, klien HTTP
  • get_service_dependency_graph — Peta dependensi dengan throughput, latensi, dan tingkat error untuk upstream/downstream/infra
  • get_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 Basis Data

Empat tools yang langsung menuju kinerja basis data Anda, diturunkan dari span trace OpenTelemetry dan, jika trace tidak ada, metrik infrastruktur seperti CloudWatch. Tidak perlu instrumentasi tambahan jika Anda sudah menggunakan OTel.

  • get_databases — Temukan semua basis data di seluruh infrastruktur Anda: tipe DB, host, throughput (kueri/menit), latensi p95, tingkat error, jumlah layanan dependen. Juga menemukan basis data dari metrik infrastruktur seperti CloudWatch, tanpa memerlukan instrumentasi trace — baris tersebut membawa nilai aktivitas alih-alih metrik trace
  • get_database_slow_queries — Eksekusi kueri paling lambat yang sebenarnya, diurutkan berdasarkan durasi, dengan ID trace untuk menelusuri trace lengkap
  • get_database_queries — Pola dan agregat kueri: seberapa sering kueri dijalankan, durasi rata-rata/p95, tingkat error
  • get_database_server_metrics — Metrik sisi server dari host DB itu sendiri (CPU, koneksi, tingkat hit buffer — tergantung pada sistem DB Anda)

Mendukung PostgreSQL, MySQL, MongoDB, Redis, Aerospike, dan apa pun yang dilacak OTel dengan atribut db_system — plus basis data yang ditemukan dari metrik infrastruktur seperti CloudWatch, yang barisnya membawa nilai aktivitas alih-alih metrik trace.

Prometheus / PromQL

  • prometheus_range_query — Kueri rentang PromQL atas metrik apa pun
  • prometheus_instant_query — Kueri instan; gunakan fungsi rollup seperti avg_over_time, sum_over_time
  • prometheus_label_values — Nilai label untuk deret tertentu
  • prometheus_labels — Semua label yang tersedia untuk sebuah deret

Arahkan ini ke datasource/cluster yang berbeda dari default dengan menyetel LAST9_DATASOURCE.

Log

  • get_logs — Kueri log pipeline JSON lengkap (agregasi, filter, ekstraksi kolom)
  • get_service_logs — Baris log mentah untuk sebuah layanan, dapat difilter berdasarkan tingkat keparahan dan konten isi
  • get_log_attributes — Katalog global atribut dalam skema log untuk jendela waktu
  • get_log_attributes_for_pipeline — Kolom log yang benar-benar ada untuk pipeline yang sedang berjalan (penemuan terbatas), masing-masing dengan filter_field yang tepat
  • get_drop_rules — Aturan drop log dari Last9 Control Plane
  • add_drop_rule — Buat aturan drop baru untuk mengurangi volume log di sumbernya

Trace

  • get_traces — Kueri trace pipeline JSON untuk pencarian luas dan agregasi
  • get_service_traces — Trace berdasarkan ID trace atau nama layanan yang tepat. Gunakan ini saat Anda memiliki ID trace — lebih cepat
  • get_trace_attributes — Katalog global atribut dalam skema trace
  • get_trace_attributes_for_pipeline — Atribut yang benar-benar ada untuk pipeline yang sedang berjalan (penemuan terbatas), masing-masing dengan filter_field yang tepat
  • get_trace_attribute_values — Nilai berbeda untuk atribut trace, opsional dibatasi ke pipeline
  • get_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 sebab
  • get_trace_waterfall — Satu trace yang tepat sebagai waterfall induk/anak dengan self-time gabungan interval, span paling lambat, dan peringatan grafik

Peristiwa Perubahan & Peringatan

  • get_change_events — Deployment, perubahan konfigurasi, rollback. Korelasikan insiden dengan apa yang berubah
  • get_alert_groups — Grup peringatan Compass yang dikonfigurasi dengan label metadata, tim, tier, dan jumlah aturan — termasuk grup tanpa aturan dan grup yang tidak memicu
  • get_alert_config — Konfigurasi aturan peringatan — dapat dicari berdasarkan nama, tingkat keparahan, tipe, tag
  • get_alerts — Peringatan yang sedang memicu dalam jendela waktu
  • get_alert_rule_state — Status pemicuan historis (1/0) per aturan peringatan selama rentang waktu, dikelompokkan berdasarkan rule_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 org Anda: ID, nama, dan metadata
  • get_dashboard — Definisi dasbor lengkap berdasarkan ID, termasuk panel dan kueri
  • validate_dashboard — Lint + eksekusi + klasifikasi hanya-baca untuk id dasbor tersimpan atau dashboard_definition inline selama jendela ≤24 jam. Tidak pernah membuat atau memperbarui dasbor
  • create_dashboard — Buat dasbor kustom baru sekali (panel, kueri, metadata). Setelah id dikembalikan, sempurnakan dengan update_dashboard.
  • update_dashboard — Sempurnakan dasbor yang ada berdasarkan ID (penggantian penuh; dasbor sistem hanya-baca mengembalikan error)
  • delete_dashboard — Hapus dasbor kustom berdasarkan ID
  • list_dashboard_snapshots — Snapshot beku titik-waktu untuk sebuah dasbor (hanya metadata)
  • get_dashboard_snapshot — Snapshot beku lengkap termasuk data panel untuk RCA / tampilan yang dapat dibagikan
  • delete_dashboard_snapshot — Hapus snapshot beku berdasarkan ID

Profiling Berkelanjutan

Membutuhkan profiling berkelanjutan yang diaktifkan untuk org. Temukan layanan terlebih dahulu dengan get_profile_services, lalu tarik flamegraph atau fungsi yang diperingkat.

  • get_profile_services — Layanan yang memiliki data profiling di jendela (indeks sebelum kueri)
  • get_flamegraph — Pohon flamegraph bersarang untuk satu layanan (cpu default; juga alloc, wall)
  • get_top_functions — Peringkat sampel mandiri fungsi terpanas untuk satu layanan
  • get_profile_summary — Triage bahasa alami singkat dari profil untuk satu layanan

Dasbor Grafana

Tools hanya-baca terhadap instance Grafana org (melalui proxy Grafana Last9). Kolom kredensial tidak pernah dikembalikan ke model. Aktifkan dengan LAST9_TOOLSETS=grafana (atau biarkan toolset tidak disetel untuk semua tools).

  • grafana_search_dashboards — Mencari dashboard berdasarkan substring judul (dengan paginasi; truncated: true saat batas tercapai)
  • grafana_get_dashboard — Ringkasan dashboard berdasarkan uid (panel, variabel, target PromQL); full_json=true untuk JSON Grafana mentah
  • grafana_list_folders — Pohon folder
  • grafana_list_folder_dashboards — Dashboard dalam satu folder (dengan paginasi)
  • grafana_list_datasources — Inventaris sumber data tanpa kredensial

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 secara otomatis sebelum sebagian besar alat saat pencarian nama mengembalikan kosong.

Profil Layanan

  • get_service_profile — Seperti apa telemetri layanan sebenarnya, sebelum Anda menanyakannya: sinyal apa yang ada, bahasa dan runtime, lingkungan deployment, bentuk lognya, dan perbaikan ingest yang direkomendasikan jika berlaku. Memungkinkan agen melewati alat trace saat layanan tidak memiliki trace, dan mengurai tingkat keparahan dari isi log saat SeverityText kosong, alih-alih memfilter berdasarkan itu dan tidak menemukan apa pun.

Cara Kerjanya

Tautan dalam di setiap respons. Setiap alat mengembalikan kolom deep_link — URL langsung ke dashboard Last9 untuk kueri dan rentang waktu yang tepat tersebut. Agen dapat memberikan tautan itu kepada Anda; Anda mengkliknya; Anda langsung di sana.

Kumpulan alat. Secara default, server mengekspos semua alat. Host otomasi yang hanya membutuhkan investigasi (log/trace/metrik/profil) dapat mengatur LAST9_TOOLSETS=investigate (atau meneruskan --toolsets=investigate) sehingga tools/list tetap kecil tanpa penonaktifan massal di sisi klien. Paket bernama: logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all. Nama yang tidak dikenal gagal dengan cepat. Paket metrics saja tidak menyertakan list_datasources atau did_you_mean — gunakan investigate (atau gabungkan kumpulan alat) saat Anda membutuhkan bantuan penemuan tersebut.

Sumber daya referensi alat. Manual panjang logjson/tracejson/service-logs/metrics adalah sumber daya MCP (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics, last9://reference/investigation), bukan teks deskripsi alat yang selalu aktif. Aturan kueri penting tetap ada di deskripsi alat sehingga agen yang tidak pernah memanggil resources/read tetap mendapatkan panduan konstruksi yang benar. Temukan kolom khusus organisasi dengan get_log_attributes / get_log_attributes_for_pipeline (dan padanan trace-nya)—kolom tersebut tidak disuntikkan ke dalam deskripsi.

Hasil besar yang dipecah. get_logs dan get_traces menangani kumpulan hasil besar melalui pemecahan, bukan pemotongan. Batas default adalah 5000 entri untuk log; dapat dikonfigurasi melalui LAST9_MAX_GET_LOGS_ENTRIES.


Pengembangan

Mode HTTP, pengujian curl, membangun dari sumber

Menjalankan 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.

Menguji dengan curl

Handler Streamable HTTP berjalan dalam mode tanpa status, sehingga permintaan apa pun 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 alat adalah kueri permintaan/respons 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 untuk pengembangan lokal. Untuk penggunaan aktual, endpoint HTTP yang dihosting lebih mudah.


Referensi Alat

Semua parameter, standar input waktu, dan detail

Input Waktu

  • Waktu absolut (start_time_iso/end_time_iso, atau time_iso) lebih diutamakan daripada lookback_minutes.
  • Untuk jendela relatif: gunakan lookback_minutes.
  • Untuk jendela absolut: gunakan RFC3339/ISO8601 — 2026-02-09T15:04:05Z.
  • YYYY-MM-DD HH:MM:SS lama diterima hanya untuk kompatibilitas.

get_exceptions

  • limit (integer, opsional): Jumlah maksimum pengecualian. 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 ke .*. Pencocokan tepat memerlukan jangkar (mis. ^prod$).
  • sort_by (string, opsional): request_count (default), throughput_rpm, http_4xx_count, http_5xx_count, atau grpc_error_count.
  • limit (integer, opsional): Jumlah maksimum baris yang diperingkat. Diabaikan 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 ke 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 ke 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 ke prod.

get_apm_service_deviations

  • service_name (string, opsional): Diabaikan untuk cakupan armada; berikan 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 yang eksplisit.
  • baseline_start_time_iso / baseline_end_time_iso (string, opsional): Baseline eksplisit. Default ke jendela dengan durasi sama yang tepat sebelumnya.
  • datasource (string, opsional): Batasi perbandingan ke satu sumber data.
  • env (string, opsional): Default ke prod.
  • max_services / max_operations (integer, opsional): Default 10, maks 10 masing-masing.

get_databases

  • env (string, opsional): Filter berdasarkan lingkungan. Menerima ekspresi reguler. Default: semua.
  • lookback_minutes (integer, opsional): Default: 60. Jendela tidak boleh melebihi 7 hari.
  • 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 ke 60 menit terakhir.
  • lookback_minutes (float, opsional): Default: 60.

prometheus_instant_query

  • query (string, wajib)
  • time_iso (string, opsional): Default ke 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> atau rehydration_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 saat ada, dan name sebagai nama indeks fisik. Jika name="default", abaikan index; untuk indeks fisik non-default yang dipilih pengguna, teruskan 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 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 mempersempit 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. Mencantumkan 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"] atau resource.attributes["key_name"] (diwajibkan oleh API Last9).
  • Membuat aturan melalui POST /otel_settings/drop?region=...&cluster_id=....

get_traces

Gunakan untuk pencarian luas dan agregasi. 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): Lookback default: 72 jam.
  • service_name (string, opsional): Lookback default: 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 cakupan penemuan, misalnya [{"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 dari get_trace_attributes (misalnya resource_department atau attributes['http.method']).
  • pipeline (array, opsional): Tahap filter sebelumnya untuk membatasi cakupan nilai; abaikan untuk nilai global.
  • lookback_minutes (integer, opsional): Default: 15.
  • start_time_iso / end_time_iso (string, opsional): Batas historis RFC3339; lebih diutamakan daripada lookback_minutes.
  • region (string, opsional)

get_trace_attribute_deviations

  • comparison_mode (string, wajib): latency, errors, atau time.
  • service_name (string, wajib)
  • environment (string, wajib): Nilai deployment.environment yang tepat.
  • operation (string, opsional)
  • filters (array, opsional): Kondisi filter JSON trace.
  • candidate_attributes (array, opsional): Maksimal 8; abaikan untuk penemuan terbatas.
  • latency_threshold_ms (number, opsional): Wajib untuk mode latency; 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 mode time; tidak tumpang tindih dan durasinya sama 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 mendapatkan available_event_names.

get_alert_groups

Inventaris grup alert Compass yang dikonfigurasi untuk audit changeboard / cakupan label. Termasuk grup dengan nol aturan dan grup yang tidak aktif. Tidak mengembalikan PromQL.

  • alert_group_name / alert_group_type / data_source_name (string, opsional): Pencocokan substring tidak peka huruf besar/kecil.
  • team / tier (string, opsional): Pencocokan tepat tidak peka huruf besar/kecil pada metadata yang dikonfigurasi.
  • label_key + label_value (string, opsional): Harus diatur bersamaan. Pencocokan tepat tidak peka huruf besar/kecil pada satu pasangan metadata.labels — baik kunci maupun nilai.

Mengembalikan JSON ringkas {"count":N,"groups":[...]} dengan id, name, type, entity_class, team, tier, metadata.labels, dan jumlah aturan. team / labels kosong berarti tidak diatur.

get_alert_config

  • search_term (string, opsional): Pencarian teks bebas di seluruh nama, grup, sumber data, tag.
  • rule_name (string, opsional)
  • severity (string, opsional)
  • rule_type (string, opsional): static atau anomaly.
  • 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): Lookback dalam detik. Default: 900. Rentang: 60–86400.
  • lookback_minutes (integer, opsional): Rentang: 1–1440.

get_alert_rule_state

  • start_time (integer, wajib): Awal rentang dalam epoch Unix (inklusif).
  • end_time (integer, wajib): Akhir rentang dalam epoch Unix (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 label key=value yang dipisahkan koma.
  • state (string, opsional): Filter berdasarkan status (misalnya firing).

Mengembalikan peta JSON dari rule_id -> [{timestamp, is_firing}]. Stempel waktu saat aturan tidak ada dalam respons upstream dilaporkan sebagai is_firing=0 — ini berarti "tidak teramati aktif", bukan status normal yang terkonfirmasi.

get_notification_channels

Tanpa parameter. Mengembalikan semua saluran notifikasi yang dikonfigurasi (Slack, PagerDuty, email, webhook, dll.).

did_you_mean

  • query (string, wajib): Nama yang dicari — sebagian, salah eja, atau disingkat.
  • type (string, opsional): Batasi ke jenis entitas: service, environment, host, database, k8s_deployment, k8s_namespace, job.

Mengembalikan hingga 3 kecocokan terdekat dengan skor kemiripan. Gunakan ini sebelum panggilan alat apa pun saat nama entitas tidak pasti. Jika panggilan sebelumnya mengembalikan hasil kosong, coba ini sebelum mencoba ulang.

get_service_profile

  • service_name (string, wajib): Layanan untuk membuat profil telemetri.
  • datasource (string, opsional): Nama sumber data. Abaikan untuk default.

Mengembalikan ringkasan investigasi singkat diikuti profil lengkap sebagai JSON mentah: keberadaan sinyal (logs/traces/metrics sebagai present, absent, atau unknown), bahasa dan runtime, lingkungan deployment, signal_shape log (log_format, severity_set, level_field), dan perbaikan ingest yang direkomendasikan jika ada. Diturunkan dari upstream dan di-cache dengan TTL sekitar 15 menit.

Panggil sebelum investigasi apa pun yang berfokus pada layanan agar pemilihan alat sesuai dengan telemetri aktual layanan — lewati alat trace saat traces adalah absent, dan saat severity_set adalah none atau partial parse tingkat keparahan dari level_field di badan log daripada menggunakan severity_filters. metrics selalu unknown dan dependencies tidak terisi di v1. Saat logs dan traces keduanya absent, konfirmasi nama dengan did_you_mean sebelum menyimpulkan layanan tidak dipantau.

list_dashboards

Tanpa parameter. Mengembalikan semua dashboard kustom di organisasi sebagai array JSON dengan id, name, dan metadata.

get_dashboard

  • id (string, wajib): UUID dashboard.
  • region (string, opsional): Wilayah untuk pengisian kueri panel. Default ke wilayah sumber data yang dikonfigurasi.

validate_dashboard

Hanya baca. Tidak pernah membuat atau memperbarui dashboard. Menerima tepat satu dari dashboard_id atau dashboard_definition.

  • dashboard_id (string, opsional): UUID dashboard tersimpan untuk divalidasi.
  • dashboard_definition (object, opsional): Badan dashboard inline yang belum disimpan (uji coba sungguhan).
  • start_time_iso / end_time_iso (string, opsional): Jendela validasi (RFC3339). Harus ≤ 24 jam.
  • region (string, opsional): Wilayah untuk eksekusi kueri panel.

Mengembalikan dashboard_validation/v1: klasifikasi lint + eksekusi per panel (data / no_data / invalid / error). Hasil kosong hari pertama diklasifikasikan sebagai valid_no_data tanpa probe diagnostik.

create_dashboard

Hanya baru. Setelah panggilan ini mengembalikan dashboard.id, sempurnakan dengan update_dashboard — jangan buat lagi untuk menambah, memangkas, atau memperbaiki panel.

  • dashboard (object, wajib): Definisi dashboard dengan name dan panels[]. Setiap panel memerlukan name, version, layout (x, y, w, h), visualization.type, dan queries[].
  • metadata (object, opsional): Metadata dashboard — bidang _category dan _type (misalnya {"_category":"custom","_type":"metrics"}).

update_dashboard

Utamakan ini setelah create. Penggantian penuh berdasarkan id (badan yang sama dengan create).

  • id (string, wajib): UUID dashboard untuk diperbarui.
  • dashboard (object, wajib): Badan dashboard pengganti penuh (bentuk yang sama dengan create).
  • metadata (object, opsional): Metadata pengganti. Dashboard sistem hanya baca mengembalikan kesalahan 403.

delete_dashboard

  • id (string, wajib): UUID dashboard untuk dihapus. Dashboard sistem hanya baca 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 untuk dihapus.

get_profile_services

  • lookback_minutes / start_time_iso / end_time_iso (opsional): Jendela; lebih suka lookback atau batas ISO eksplisit (default 60 menit).
  • region (string, opsional): Penimpaan wilayah.

Mengembalikan layanan yang memiliki data profiling di jendela tersebut. Panggil ini sebelum get_flamegraph / get_top_functions / get_profile_summary.

get_flamegraph

  • service (string, wajib): Nama layanan dari get_profile_services.
  • profile_type (string, opsional): cpu (default), alloc, atau wall. Sematkan jenis saat membandingkan jendela.
  • env / cluster / namespace / runtime (string, opsional): Filter cakupan.
  • limit (number, opsional): Baris tumpukan agregat maksimum (default 1000, maks 10000).
  • lookback_minutes / start_time_iso / end_time_iso / region (opsional).

Mengembalikan pohon flamegraph bersarang (name / value / self / children). truncated: true berarti batas baris API tercapai.

get_top_functions

Filter yang sama dengan get_flamegraph. Mengembalikan peringkat sampel mandiri dari fungsi terpanas. Mungkin terpotong; periksa truncated.

get_profile_summary

Filter yang sama dengan get_flamegraph. Mengembalikan triase bahasa alami singkat dari profil untuk layanan tersebut.

grafana_search_dashboards

  • query (string, opsional): Substring judul. Kosong mencantumkan secara luas (tergantung batas 5.000 baris).

Mengembalikan {"dashboards":[…], "truncated":bool} dengan uid, title, uri, url, type, tags. Gunakan uid dengan grafana_get_dashboard.

grafana_get_dashboard

  • uid (string, wajib): uid dashboard Grafana.
  • full_json (boolean, opsional): Saat true, kembalikan JSON Grafana mentah alih-alih ringkasan yang difilter. Ringkasan default: versi, tag, variabel templating, dan tipe/ datasource/ gridPos/ target promQL dari setiap panel. Tipe panel plugin yang tidak dikenal muncul di unsupportedPanelTypes.

grafana_list_folders

Tanpa parameter. Mengembalikan pohon folder.

grafana_list_folder_dashboards

  • folder_uid (string, wajib): uid folder Grafana.

Mengembalikan {"dashboards":[…], "truncated":bool} untuk dasbor di folder tersebut (dipaginasi hingga 5.000).

grafana_list_datasources

Tanpa parameter. Mengembalikan proyeksi aman dari datasource (tanpa kolom kredensial).


Pengujian

Lihat TESTING.md untuk pengaturan dan instruksi tes integrasi.


MseeP.ai Security Assessment Badge