Last9
官方無縫地將即時生產環境上下文——日誌、指標和追蹤——帶入您的本地環境,以更快地自動修復程式碼。
你可以用 Last9 MCP 做什麼?
-
調查服務健康狀態 — 透過
get_service_summary要求提供請求數、吞吐量與錯誤率的排名摘要。 -
擷取原始服務日誌 — 使用
get_service_logs依嚴重程度或內容篩選特定服務的日誌行。 -
追蹤資料庫效能 — 使用
get_databases及相關工具探索資料庫、慢查詢與查詢模式。 -
執行 PromQL 查詢 — 使用
prometheus_range_query或prometheus_instant_query對任何指標執行範圍或即時查詢。 -
將變更與事件關聯 — 透過
get_change_events取得部署與設定變更事件,以了解哪些因素改變了生產行為。 -
管理自訂儀表板 — 使用
list_dashboards與create_dashboard以程式化方式列出、建立、更新或驗證儀表板。
文件
Last9 MCP Server

你的 AI 代理不知道生產環境出了什麼問題。這個工具可以解決這個問題。
Last9 MCP Server 將 Claude、Cursor、Windsurf 以及任何其他支援 MCP 的 AI 助手直接連接到你的生產環境可觀測性資料——日誌、指標、追蹤、例外、資料庫查詢、警報和部署。代理不再猜測,而是直接讀取實際訊號。
30 秒內開始使用(託管版)
無需安裝二進位檔。無需管理令牌。一個 URL,在瀏覽器中完成 OAuth,搞定。
在 Last9 URL 中找到你的組織 slug:app.last9.io/<org_slug>/...
Claude Code
claude mcp add --transport http last9 https://app.last9.io/api/v4/organizations/<org_slug>/mcp
輸入 /mcp,選擇 last9,完成驗證。就這樣。
Cursor
Settings > MCP > Add New MCP Server:
{
"mcpServers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
點擊 Connect,完成 OAuth。
VS Code
需要 v1.99+。開啟 Command Palette → MCP: Add Server,貼上 URL,完成驗證。
或直接在 settings.json 中:
{
"mcp": {
"servers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
}
Windsurf
Settings > Cascade > Open MCP Marketplace > 齒輪圖示 (mcp_config.json):
{
"mcpServers": {
"last9": {
"serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Claude Web/Desktop
Settings > Connectors > Add custom connector. 命名為 last9,貼上 URL,完成驗證。
需要你的 Claude 組織的管理員權限。
自架版(STDIO)
當你的 MCP 用戶端不支援 HTTP 傳輸,或需要伺服器在本機執行時,請使用此方式。
安裝
Homebrew:
brew install last9/tap/last9-mcp
NPM:
npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest
二進位版本(Windows / 手動安裝):
從 GitHub Releases 下載:
| 平台 | 壓縮檔 |
|---|---|
| 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 |
取得重新整理令牌
只有管理員可以建立令牌。
- 前往 API Access
- 點擊 Generate Token,並具備 Write 權限
- 複製它
用戶端設定
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>"
}
}
}
}
貼上位置:
| 用戶端 | 位置 |
|---|---|
| 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 > 齒輪圖示 (mcp_config.json) |
| VS Code | 在 settings.json 中包裝於 { "mcp": { "servers": { ... } } } — 詳細資訊 |
VS Code STDIO 設定
{
"mcp": {
"servers": {
"last9": {
"type": "stdio",
"command": "/opt/homebrew/bin/last9-mcp",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
}
若使用 NPM:使用 "command": "npx" 並加入 "args": ["-y", "@last9/mcp-server@latest"]。
Windows
從 GitHub Releases 下載後,解壓縮並指向完整路徑:
{
"mcpServers": {
"last9": {
"command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
在 Windows 上使用 NPM 方式較簡單——無需管理路徑。
環境變數
| 變數 | 預設值 | 說明 |
|---|---|---|
LAST9_REFRESH_TOKEN | (必填) | 來自 API Access 的重新整理令牌 |
LAST9_DATASOURCE | 組織預設值 | 資料源/叢集名稱——當你有多個 Levitate 叢集時很有用 |
LAST9_API_HOST | app.last9.io | 覆寫 API 主機 |
LAST9_TOOLSETS | 所有工具 | 以逗號分隔的開放工具集(logs、traces、metrics、alerts、dashboards、profiles、grafana、investigate、all)。別名:LAST9_MCP_TOOLSETS |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | 分塊 get_logs 請求的最大條目數 |
LAST9_USE_LOG_SEARCH_API | false | 設定 true 以使用單次伺服器端搜尋呼叫回答 get_logs 和 get_service_logs,而非用戶端分塊 |
LAST9_DEBUG_CHUNKING | false | 設定 true 以記錄 get_logs、get_service_logs、get_traces 的分塊規劃詳細資訊 |
LAST9_DISABLE_TELEMETRY | true | 設定 false 以啟用內部 OTel 追蹤 |
OTEL_SDK_DISABLED | — | 標準 OTel 環境變數。覆寫 LAST9_DISABLE_TELEMETRY |
OTEL_EXPORTER_OTLP_ENDPOINT | — | OTLP collector 端點(僅在啟用遙測時) |
OTEL_EXPORTER_OTLP_HEADERS | — | OTLP 驗證標頭(僅在啟用遙測時) |
功能說明
服務健康狀態
get_service_summary— 排名服務群(service, env)列:區間請求數、throughput_rpm、HTTP 4xx/5xx 計數和 gRPC 錯誤計數get_service_environments— 服務可用的環境。先執行此工具——其他 APM 工具需要這裡的envget_service_performance_details— 完整分解:吞吐量、錯誤率、p50/p90/p95/平均/最大、apdex、可用性get_service_operations_summary— 依 HTTP 端點、資料庫呼叫、訊息傳遞、HTTP 用戶端分組的操作get_service_dependency_graph— 依賴關係圖,包含上游/下游/基礎設施的吞吐量、延遲和錯誤率get_apm_service_deviations— 將目前時間視窗與等時長基準比較:回歸/改善、Apdex 對帳和最終結果(服務群或單一服務)get_exceptions— 伺服器端例外,可依服務和 span 篩選
資料庫可觀測性
四個直接針對資料庫效能的工具,源自 OpenTelemetry 追蹤 span,若無追蹤則使用 CloudWatch 等基礎設施指標。若你已使用 OTel,則無需額外儀器。
get_databases— 探索基礎設施中的所有資料庫:資料庫類型、主機、吞吐量(查詢/分鐘)、p95 延遲、錯誤率、依賴服務數量。也可從 CloudWatch 等基礎設施指標發現資料庫,無需追蹤儀器——這些列帶有活動值而非追蹤指標get_database_slow_queries— 實際最慢的查詢執行,依持續時間排序,附追蹤 ID 以深入完整追蹤get_database_queries— 查詢模式和彙總:查詢執行頻率、平均/p95 持續時間、錯誤率get_database_server_metrics— 來自資料庫主機本身的伺服器端指標(CPU、連線數、緩衝區命中率——取決於你的資料庫系統)
支援 PostgreSQL、MySQL、MongoDB、Redis、Aerospike,以及任何其他帶有 db_system 屬性的 OTel 追蹤——加上從 CloudWatch 等基礎設施指標發現的資料庫,其列帶有活動值而非追蹤指標。
Prometheus / PromQL
prometheus_range_query— 對任何指標執行 PromQL 範圍查詢prometheus_instant_query— 即時查詢;使用avg_over_time、sum_over_time等彙總函式prometheus_label_values— 指定序列的標籤值prometheus_labels— 序列可用的所有標籤
透過設定 LAST9_DATASOURCE,將這些指向非預設的資料源/叢集。
日誌
get_logs— 完整 JSON 管線日誌查詢(彙總、篩選、欄位提取)get_service_logs— 服務的原始日誌列,可依嚴重性和內容篩選get_log_attributes— 時間視窗內日誌架構屬性的全域目錄get_log_attributes_for_pipeline— 進行中管線實際存在的日誌欄位(範圍探索),每個欄位附其確切filter_fieldget_drop_rules— 來自 Last9 Control Plane 的日誌丟棄規則add_drop_rule— 建立新的丟棄規則,從源頭減少日誌量
追蹤
get_traces— JSON 管線追蹤查詢,用於廣泛搜尋和彙總get_service_traces— 依確切追蹤 ID 或服務名稱的追蹤。當你有追蹤 ID 時使用此工具——速度更快get_trace_attributes— 追蹤架構屬性的全域目錄get_trace_attributes_for_pipeline— 進行中管線實際存在的屬性(範圍探索),每個屬性附其確切filter_fieldget_trace_attribute_values— 追蹤屬性的不同值,可選擇限定於管線get_trace_attribute_deviations— 排名兩個有界 span 群組之間不同的屬性值(慢 vs 快、錯誤 vs 非錯誤,或兩個時間視窗)。相關性,非因果關係get_trace_waterfall— 單一確切追蹤的父/子瀑布圖,包含區間聯集自身時間、最慢 span 和圖形警告
變更事件與警報
get_change_events— 部署、設定變更、回滾。將事件與變更內容關聯get_alert_groups— 已設定的 Compass 警報群組,附元資料標籤、團隊、層級和規則計數——包括零規則和未觸發的群組get_alert_config— 警報規則設定——可依名稱、嚴重性、類型、標籤搜尋get_alerts— 時間視窗內目前觸發的警報get_alert_rule_state— 時間範圍內每個警報規則的歷史觸發狀態(1/0),依rule_id分組。可依警報群組、規則名稱、標籤篩選和狀態篩選。get_notification_channels— 已設定的通知管道(Slack、PagerDuty、email 等)
自訂儀表板
list_dashboards— 組織中的所有自訂儀表板:ID、名稱和元資料get_dashboard— 依 ID 的完整儀表板定義,包括面板和查詢validate_dashboard— 對已儲存的儀表板 ID 或內聯dashboard_definition在 ≤24 小時視窗內執行唯讀 lint + 執行 + 分類。絕不建立或更新儀表板create_dashboard— 建立一次全新的自訂儀表板(面板、查詢、元資料)。傳回 ID 後,使用update_dashboard精煉。update_dashboard— 依 ID 精煉現有儀表板(完整取代;唯讀系統儀表板會傳回錯誤)delete_dashboard— 依 ID 刪除自訂儀表板list_dashboard_snapshots— 儀表板的凍結時間點快照(僅元資料)get_dashboard_snapshot— 完整凍結快照,包括面板資料,用於 RCA / 可分享檢視delete_dashboard_snapshot— 依 ID 刪除凍結快照
持續效能分析
需要組織啟用持續效能分析。先使用 get_profile_services 探索服務,然後提取火焰圖或排名函式。
get_profile_services— 在時間視窗內有效能分析資料的服務(查詢前先索引)get_flamegraph— 單一服務的巢狀火焰圖樹(預設cpu;也可用alloc、wall)get_top_functions— 單一服務最熱門函式的自身取樣排名get_profile_summary— 單一服務效能分析的簡短自然語言分類
Grafana 儀表板
針對組織 Grafana 執行個體的唯讀工具(透過 Last9 的 Grafana 代理)。憑證欄位絕不傳回模型。使用 LAST9_TOOLSETS=grafana 啟用(或將工具集留空以取得所有工具)。
grafana_search_dashboards— 依標題子字串搜尋儀表板(分頁;達到上限時回傳truncated: true)grafana_get_dashboard— 依 uid 取得儀表板摘要(面板、變數、PromQL 目標);full_json=true用於取得原始 Grafana JSONgrafana_list_folders— 資料夾樹狀結構grafana_list_folder_dashboards— 單一資料夾中的儀表板(分頁)grafana_list_datasources— 不含憑證的資料源清單
模糊名稱解析
did_you_mean— 當代理程式不確定實體名稱時,此功能會從您的目錄中回傳最接近的相符項目(服務、環境、主機、資料庫、K8s 部署/命名空間、工作)。最多 3 筆建議,附相似度分數。當名稱查詢回傳空值時,伺服器會在大多數工具之前自動呼叫此功能。
服務設定檔
get_service_profile— 在查詢之前,先了解服務的遙測資料實際樣貌:存在哪些訊號、語言與執行環境、部署環境、日誌的形狀,以及適用的建議擷取修正。讓代理程式在服務沒有追蹤時跳過追蹤工具,並在SeverityText為空時從日誌主體解析嚴重性,而不是過濾後找不到任何結果。
運作方式
每個回應都附深層連結。 每個工具都會回傳 deep_link 欄位 — 一個直接指向 Last9 儀表板中該確切查詢與時間範圍的 URL。代理程式可以將連結交給您;您點擊後即可到達。
工具集。 預設情況下,伺服器會公開所有工具。僅需調查(日誌/追蹤/指標/設定檔)的自動化主機可以設定 LAST9_TOOLSETS=investigate(或傳入 --toolsets=investigate),讓 tools/list 保持精簡,無需在用戶端進行大量停用。具名套件:logs、traces、metrics、alerts、dashboards、profiles、grafana、investigate、all。未知名稱會快速失敗。metrics 套件單獨不包含 list_datasources 或 did_you_mean — 當您需要這些探索輔助工具時,請使用 investigate(或組合工具集)。
工具參考資源。 較長的 logjson/tracejson/service-logs/metrics 手冊是 MCP 資源(last9://reference/logjson、last9://reference/tracejson、last9://reference/service_logs、last9://reference/metrics、last9://reference/investigation),而非常駐的工具描述文字。關鍵查詢規則保留在工具描述中,讓從不呼叫 resources/read 的代理程式仍能獲得正確的建構指引。使用 get_log_attributes / get_log_attributes_for_pipeline(以及追蹤的對應項目)探索組織特定欄位 — 這些不會注入描述中。
大型結果分塊。 get_logs 和 get_traces 透過分塊而非截斷來處理大型結果集。日誌的預設限制為 5000 筆;可透過 LAST9_MAX_GET_LOGS_ENTRIES 設定。
開發
HTTP 模式、curl 測試、從原始碼建置
以 HTTP 模式執行
export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server
伺服器啟動於 http://localhost:8080/mcp。
使用 curl 測試
Streamable HTTP 處理器以無狀態模式執行,因此任何請求都會獨立處理。initialize 握手和 Mcp-Session-Id 標頭為選用 — 發送這些的用戶端仍可正常運作(標頭會被接受並忽略),用戶端也可以直接跳到 tools/list / tools/call。每個工具都是獨立的請求/回應查詢;伺服器不會發出伺服器→用戶端通知,因此 GET /mcp(SSE 串流)會回傳 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
}
}
}'
從原始碼建置
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 用於本地開發。實際使用時,託管 HTTP 端點 更為簡便。
工具參考
所有參數、時間輸入標準與詳細資訊
時間輸入
- 絕對時間(
start_time_iso/end_time_iso,或time_iso)優先於lookback_minutes。 - 相對時間視窗:使用
lookback_minutes。 - 絕對時間視窗:使用 RFC3339/ISO8601 —
2026-02-09T15:04:05Z。 - 僅為相容性接受舊版
YYYY-MM-DD HH:MM:SS。
get_exceptions
limit(整數,選用):最大例外數。預設:20。lookback_minutes(整數,選用):預設:60。start_time_iso/end_time_iso(字串,選用):絕對時間範圍。service_name(字串,選用):依服務篩選。span_name(字串,選用):依 span 名稱篩選。env(字串,選用):依環境篩選。
get_service_summary
start_time_iso/end_time_iso(字串,選用)env(字串,選用):PromQL 正規表示式。預設為.*。精確比對需要錨點(例如^prod$)。sort_by(字串,選用):request_count(預設)、throughput_rpm、http_4xx_count、http_5xx_count或grpc_error_count。limit(整數,選用):最大排名列數。省略或 0 表示 10;超過 100 的值會限制為 100。
get_service_environments
start_time_iso/end_time_iso(字串,選用)
所有其他 APM 工具都需要
env值。如果此功能回傳空值,請使用""。
get_service_performance_details
service_name(字串,必填)lookback_minutes(整數,選用):預設:60。start_time_iso/end_time_iso(字串,選用)env(字串,選用):預設為prod。
get_service_operations_summary
service_name(字串,必填)lookback_minutes(整數,選用):預設:60。start_time_iso/end_time_iso(字串,選用)env(字串,選用):預設為prod。
get_service_dependency_graph
service_name(字串,選用)lookback_minutes(整數,選用):預設:60。start_time_iso/end_time_iso(字串,選用)env(字串,選用):預設為prod。
get_apm_service_deviations
service_name(字串,選用):省略以取得整個叢集範圍;提供則用於單一服務及其操作關聯。lookback_minutes(整數,選用):目前視窗。預設:60。start_time_iso/end_time_iso(字串,選用):明確的目前視窗。baseline_start_time_iso/baseline_end_time_iso(字串,選用):明確的基準線。預設為緊接在前、相同時長的視窗。datasource(字串,選用):將比較限制在單一資料源。env(字串,選用):預設為prod。max_services/max_operations(整數,選用):預設 10,各別最多 10。
get_databases
env(字串,選用):依環境篩選。接受正規表示式。預設:全部。lookback_minutes(整數,選用):預設:60。視窗不得超過 7 天。start_time_iso/end_time_iso(字串,選用)
get_database_slow_queries
db_system(字串,選用):例如postgresql、mysql、mongodb、redis。host(字串,選用):資料庫主機(net_peer_name)。service_name(字串,選用):呼叫服務名稱。env(字串,選用)min_duration_ms(浮點數,選用):最小查詢持續時間(毫秒)。lookback_minutes(整數,選用):預設:60。start_time_iso/end_time_iso(字串,選用)limit(整數,選用):預設:20。
get_database_queries
db_system(字串,選用)host(字串,選用)service_name(字串,選用)env(字串,選用)lookback_minutes(整數,選用):預設:60。start_time_iso/end_time_iso(字串,選用)limit(整數,選用):預設:20。
get_database_server_metrics
db_system(字串,必填):例如postgresql、mysql、mongodb、redis、aerospike。host(字串,選用)lookback_minutes(整數,選用):預設:60。start_time_iso/end_time_iso(字串,選用)
prometheus_range_query
query(字串,必填):PromQL 查詢。start_time_iso/end_time_iso(字串,選用):預設為最近 60 分鐘。lookback_minutes(浮點數,選用):預設:60。
prometheus_instant_query
query(字串,必填)time_iso(字串,選用):預設為現在。lookback_minutes(浮點數,選用)
prometheus_label_values
match_query(字串,選用):PromQL 篩選器。label(字串,必填):標籤名稱。start_time_iso/end_time_iso(字串,選用)
prometheus_labels
match_query(字串,選用):PromQL 篩選器。start_time_iso/end_time_iso(字串,選用)
get_logs
logjson_query(陣列,必填):JSON 管線查詢。lookback_minutes(整數,選用):預設:5。start_time_iso/end_time_iso(字串,選用)limit(整數,選用):伺服器預設:5000。index(字串,選用):physical_index:<name>或rehydration_index:<block_name>。
對於以日誌為基礎的服務清單,請先查詢 physical_index_service_count:
sum by (name, service_name, env) (physical_index_service_count{destination="logs"})
使用 service_name 作為 ServiceName,env 作為環境(若存在),name 作為實體索引名稱。如果 name="default",請省略 index;若使用者選擇了非預設的實體索引,請傳入 index: "physical_index:<name>"。如果後端拒絕明確的實體索引篩選,請在不使用 index 的情況下重試,並回報該後端不支援明確的實體索引篩選。
get_service_logs
service_name(字串,必填)lookback_minutes(整數,選用):預設:60。limit(整數,選用):預設:20。env(字串,選用)severity_filters(陣列,選用):例如["error", "warn"]。OR 邏輯。body_filters(陣列,選用):例如["timeout", "failed"]。OR 邏輯。start_time_iso/end_time_iso(字串,選用)index(字串,選用)
多種篩選類型以 AND 結合。每個陣列內部使用 OR。
先使用 get_logs 取得廣泛的彙總計數;僅在縮小到特定服務/環境/索引和小型樣本集後,再使用 get_service_logs。
get_log_attributes
lookback_minutes(整數,選用):預設:15。start_time_iso/end_time_iso(字串,選用)region(字串,選用)index(字串,選用)
get_log_attributes_for_pipeline
pipeline(陣列,必填):先前的篩選階段以限定探索範圍,例如[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}]。lookback_minutes(整數,選用):預設:15。start_time_iso/end_time_iso(字串,選用)region(字串,選用)index(字串,選用)
get_drop_rules
無參數。透過 GET /otel_settings/drop?region=... 列出丟棄規則。
add_drop_rule
name(字串,必填)filters(陣列,必填):每個篩選器:key、value、operator(equals/not_equals)、conjunction(and)。- 篩選鍵必須使用
attributes["key_name"]或resource.attributes["key_name"](Last9 API 要求)。 - 透過
POST /otel_settings/drop?region=...&cluster_id=...建立規則。
get_traces
用於廣泛搜尋和彙總。若要精確查詢 trace ID,請使用 get_service_traces。
tracejson_query(陣列,必填)start_time_iso/end_time_iso(字串,選用)lookback_minutes(整數,選用):預設:60。limit(整數,選用):預設:5000。
get_service_traces
trace_id 或 service_name 兩者中必須提供一個。
trace_id(字串,選用):預設回看時間:72 小時。service_name(字串,選用):預設回看時間:60 分鐘。lookback_minutes(整數,選用)start_time_iso/end_time_iso(字串,選用)limit(整數,選用):預設值:10。env(字串,選用)
get_trace_attributes
lookback_minutes(整數,選用):預設值:15。start_time_iso/end_time_iso(字串,選用)region(字串,選用)
get_trace_attributes_for_pipeline
pipeline(陣列,必填):先前的篩選階段,用於限定探索範圍,例如[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}]。lookback_minutes(整數,選用):預設值:15。start_time_iso/end_time_iso(字串,選用)region(字串,選用)
get_trace_attribute_values
tag_name(字串,必填):來自get_trace_attributes的屬性名稱(例如resource_department或attributes['http.method'])。pipeline(陣列,選用):先前的篩選階段,用於限定數值範圍;省略則取得全域數值。lookback_minutes(整數,選用):預設值:15。start_time_iso/end_time_iso(字串,選用):歷史 RFC3339 時間邊界;優先於lookback_minutes。region(字串,選用)
get_trace_attribute_deviations
comparison_mode(字串,必填):latency、errors或time。service_name(字串,必填)environment(字串,必填):精確的deployment.environment值。operation(字串,選用)filters(陣列,選用):Trace JSON 篩選條件。candidate_attributes(陣列,選用):最多 8 個;省略則進行有界探索。latency_threshold_ms(數字,選用):latency模式必填;其他模式則拒絕。start_time_iso/end_time_iso(字串,選用)lookback_minutes(整數,選用):預設值:15。最大值:15。baseline_start_time_iso/baseline_end_time_iso(字串,選用):time模式必填;不可重疊且與目標視窗時長相等。minimum_cohort_size(整數,選用):預設值:100。最小值:20。minimum_value_support(整數,選用):預設值:20。最小值:10。limit(整數,選用):預設值:10。最大值:10。
需要啟用配套的後端功能。
get_trace_waterfall
trace_id(字串,必填)environment(字串,選用)start_time_iso/end_time_iso(字串,選用)lookback_minutes(整數,選用):預設值:4320(72 小時)。selected_span_id(字串,選用):僅回傳該 span 的屬性、事件和連結。max_spans(整數,選用):預設值:500。最大值:1000。
回傳 investigation-evidence/v1 封裝;waterfall 位於 data 之下。
get_change_events
start_time_iso/end_time_iso(字串,選用)lookback_minutes(整數,選用):預設值:60。service_name(字串,選用)env(字串,選用)event_name(字串,選用):先不帶此參數呼叫,以取得available_event_names。
get_alert_groups
已設定的 Compass 警示群組清單,用於變更看板/標籤覆蓋率稽核。包含零規則的群組以及未觸發的群組。不回傳 PromQL。
alert_group_name/alert_group_type/data_source_name(字串,選用):不區分大小寫的子字串比對。team/tier(字串,選用):對已設定中繼資料進行精確且不區分大小寫的比對。label_key+label_value(字串,選用):必須同時設定。對單一metadata.labels鍵值對進行精確且不區分大小寫的比對——鍵和值都需相符。
回傳精簡 JSON {"count":N,"groups":[...]},包含 id、name、type、entity_class、team、tier、metadata.labels 及規則計數。空的 team / labels 表示未設定。
get_alert_config
search_term(字串,選用):跨名稱、群組、資料來源、標籤進行自由文字搜尋。rule_name(字串,選用)severity(字串,選用)rule_type(字串,選用):static或anomaly。alert_group_name/alert_group_type/data_source_name(字串,選用)tags(陣列,選用):所有條件皆須相符(AND 邏輯)。
get_alerts
time_iso(字串,選用):RFC3339 格式的評估時間。window(整數,選用):回看秒數。預設值:900。範圍:60–86400。lookback_minutes(整數,選用):範圍:1–1440。
get_alert_rule_state
start_time(整數,必填):範圍起始的 Unix epoch(含)。end_time(整數,必填):範圍結束的 Unix epoch(含)。step(整數,必填):樣本之間的解析度(秒)。樣本數((end_time - start_time) / step + 1)上限為 100。alert_group_id(字串,選用):依警示群組 ID 篩選。rule_name(字串,選用):對規則名稱進行正規表達式篩選。alert_group_name(字串,選用):對警示群組名稱進行正規表達式篩選。label_filters(字串,選用):以逗號分隔的key=value標籤篩選。state(字串,選用):依狀態篩選(例如firing)。
回傳 rule_id -> [{timestamp, is_firing}] 的 JSON 對應。若某時間點規則未出現在上游回應中,則回報為 is_firing=0——這表示「未觀察到觸發」,而非確認的正常狀態。
get_notification_channels
無參數。回傳所有已設定的通知管道(Slack、PagerDuty、電子郵件、webhook 等)。
did_you_mean
query(字串,必填):要搜尋的名稱——部分、拼錯或縮寫皆可。type(字串,選用):限制實體類型:service、environment、host、database、k8s_deployment、k8s_namespace、job。
回傳最多 3 個最接近的相符項目及相似度分數。在實體名稱不確定的任何工具呼叫前使用此功能。若先前呼叫回傳空結果,請在重試前先嘗試此功能。
get_service_profile
service_name(字串,必填):要為其推導遙測設定檔的服務。datasource(字串,選用):資料來源名稱。省略則使用預設值。
回傳簡短的調查摘要,後接完整設定檔的原始 JSON:訊號存在性(logs/traces/metrics 為 present、absent 或 unknown)、語言與執行環境、部署環境、日誌 signal_shape(log_format、severity_set、level_field),以及適用的建議擷取修正。由上游推導並快取,TTL 約 15 分鐘。
在任何服務範圍調查前呼叫此功能,以便工具選擇符合服務的實際遙測——當 traces 為 absent 時跳過 trace 工具;當 severity_set 為 none 或 partial 時,從日誌主體中的 level_field 解析嚴重性,而非使用 severity_filters。metrics 一律為 unknown,且 dependencies 在 v1 中未填入。當 logs 和 traces 皆為 absent 時,先以 did_you_mean 確認名稱,再斷定服務未受監控。
list_dashboards
無參數。回傳組織中所有自訂儀表板,為 JSON 陣列,包含 id、name 及中繼資料。
get_dashboard
id(字串,必填):儀表板 UUID。region(字串,選用):面板查詢填入的區域。預設為已設定的資料來源區域。
validate_dashboard
唯讀。絕不會建立或更新儀表板。僅接受 dashboard_id 或 dashboard_definition 其中一個。
dashboard_id(字串,選用):要驗證的已儲存儀表板 UUID。dashboard_definition(物件,選用):內嵌的未儲存儀表板主體(真正的乾執行)。start_time_iso/end_time_iso(字串,選用):驗證視窗(RFC3339)。必須 ≤ 24 小時。region(字串,選用):面板查詢執行的區域。
回傳 dashboard_validation/v1:逐面板 lint 與執行分類(data / no_data / invalid / error)。第 1 天空結果分類為 valid_no_data,不執行診斷探測。
create_dashboard
僅限全新建立。此呼叫回傳 dashboard.id 後,請以 update_dashboard 進行調整——不要為了新增、刪減或修正面板而再次建立。
dashboard(物件,必填):儀表板定義,包含name和panels[]。每個面板需要name、version、layout(x、y、w、h)、visualization.type和queries[]。metadata(物件,選用):儀表板中繼資料——_category和_type欄位(例如{"_category":"custom","_type":"metrics"})。
update_dashboard
建立後優先使用此功能。依 ID 完整取代(主體與建立相同)。
id(字串,必填):要更新的儀表板 UUID。dashboard(物件,必填):完整取代的儀表板主體(結構與建立相同)。metadata(物件,選用):取代的中繼資料。唯讀系統儀表板回傳 403 錯誤。
delete_dashboard
id(字串,必填):要刪除的儀表板 UUID。唯讀系統儀表板無法刪除。
list_dashboard_snapshots
dashboard_id(字串,必填):要列出快照的儀表板 UUID。
僅回傳中繼資料(id、name、expires_at 等)。凍結的面板資料請使用 get_dashboard_snapshot。
get_dashboard_snapshot
id(字串,必填):快照 UUID。
回傳完整的凍結快照,包含 dashboard_definition、panel_data、time_range 和 variables。
delete_dashboard_snapshot
id(字串,必填):要刪除的快照 UUID。
get_profile_services
lookback_minutes/start_time_iso/end_time_iso(選用):視窗;建議使用回看或明確 ISO 邊界(預設 60 分鐘)。region(字串,選用):區域覆寫。
回傳在視窗內具有剖析資料的服務。在 get_flamegraph / get_top_functions / get_profile_summary 之前呼叫此功能。
get_flamegraph
service(字串,必填):來自get_profile_services的服務名稱。profile_type(字串,選用):cpu(預設)、alloc或wall。比較視窗時請固定類型。env/cluster/namespace/runtime(字串,選用):範圍篩選。limit(數字,選用):最大彙總堆疊列數(預設 1000,最大 10000)。lookback_minutes/start_time_iso/end_time_iso/region(選用)。
回傳巢狀火焰圖樹(name / value / self / children)。truncated: true 表示已達 API 列數上限。
get_top_functions
與 get_flamegraph 相同的篩選。回傳最熱門函式的自身取樣排名。可能被截斷;請檢查 truncated。
get_profile_summary
與 get_flamegraph 相同的篩選。回傳該服務剖析的簡短自然語言分流報告。
grafana_search_dashboards
query(字串,選用):標題子字串。空白則廣泛列出(受 5,000 列上限約束)。
回傳 {"dashboards":[…], "truncated":bool},包含 uid、title、uri、url、type、tags。搭配 uid 使用 grafana_get_dashboard。
grafana_get_dashboard
uid(字串,必填):Grafana 儀表板 uid。full_json(布林值,選用):為 true 時,回傳原始 Grafana JSON,而非篩選後的摘要。 Default summary: version, tags, templating variables, and each panel's type/datasource/gridPos/promQL targets. Unknown plugin panel types appear inunsupportedPanelTypes.
grafana_list_folders
無參數。回傳資料夾樹狀結構。
grafana_list_folder_dashboards
folder_uid(字串,必填):Grafana 資料夾 uid。
回傳該資料夾中儀表板的 {"dashboards":[…], "truncated":bool}(分頁,最多 5,000 筆)。
grafana_list_datasources
無參數。回傳資料來源的安全投影(不含憑證欄位)。
測試
請參閱 TESTING.md 以了解整合測試設定與說明。
