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

last9 mcp demo

你的 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

取得重新整理令牌

只有管理員可以建立令牌。

  1. 前往 API Access
  2. 點擊 Generate Token,並具備 Write 權限
  3. 複製它

用戶端設定

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/DesktopSettings > Developer > Edit Config (claude_desktop_config.json)
CursorSettings > Cursor Settings > MCP > Add New Global MCP Server
WindsurfSettings > 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_HOSTapp.last9.io覆寫 API 主機
LAST9_TOOLSETS所有工具以逗號分隔的開放工具集(logs、traces、metrics、alerts、dashboards、profiles、grafana、investigate、all)。別名:LAST9_MCP_TOOLSETS
LAST9_MAX_GET_LOGS_ENTRIES5000分塊 get_logs 請求的最大條目數
LAST9_USE_LOG_SEARCH_APIfalse設定 true 以使用單次伺服器端搜尋呼叫回答 get_logs 和 get_service_logs,而非用戶端分塊
LAST9_DEBUG_CHUNKINGfalse設定 true 以記錄 get_logs、get_service_logs、get_traces 的分塊規劃詳細資訊
LAST9_DISABLE_TELEMETRYtrue設定 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 工具需要這裡的 env
  • get_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_field
  • get_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_field
  • get_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 JSON
  • grafana_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 in unsupportedPanelTypes.

grafana_list_folders

無參數。回傳資料夾樹狀結構。

grafana_list_folder_dashboards

  • folder_uid(字串,必填):Grafana 資料夾 uid。

回傳該資料夾中儀表板的 {"dashboards":[…], "truncated":bool}(分頁,最多 5,000 筆)。

grafana_list_datasources

無參數。回傳資料來源的安全投影(不含憑證欄位)。


測試

請參閱 TESTING.md 以了解整合測試設定與說明。


MseeP.ai Security Assessment Badge