Last9 MCP Server
chính thứcMang bối cảnh sản xuất thời gian thực—log, chỉ số và dấu vết—vào môi trường cục bộ của bạn một cách liền mạch để tự động sửa mã nhanh hơn.
Tài liệu
Last9 MCP Server

Trợ lý AI của bạn không biết điều gì đang bị hỏng trong production. Công cụ này sẽ khắc phục điều đó.
Last9 MCP Server kết nối Claude, Cursor, Windsurf và bất kỳ trợ lý AI nào hỗ trợ MCP trực tiếp với dữ liệu quan sát production của bạn — logs, metrics, traces, exceptions, database queries, alerts và deployments. Trợ lý sẽ ngừng phỏng đoán và bắt đầu đọc các tín hiệu thực tế.
Bắt đầu trong 30 giây (Hosted)
Không cần cài đặt binary. Không cần quản lý token. Một URL, xác thực OAuth trong trình duyệt, xong.
Tìm org slug của bạn trong 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
Gõ /mcp, chọn last9, xác thực. Vậy là xong.
Cursor
Settings > MCP > Add New MCP Server:
{
"mcpServers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Nhấp Connect, hoàn tất OAuth.
VS Code
Yêu cầu phiên bản 1.99+. Mở Command Palette → MCP: Add Server, dán URL, xác thực.
Hoặc trực tiếp trong settings.json:
{
"mcp": {
"servers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
}
Windsurf
Settings > Cascade > Open MCP Marketplace > biểu tượng bánh răng (mcp_config.json):
{
"mcpServers": {
"last9": {
"serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Claude Web/Desktop
Settings > Connectors > Add custom connector. Đặt tên là last9, dán URL, xác thực.
Yêu cầu quyền admin đối với tổ chức Claude của bạn.
Tự lưu trữ (STDIO)
Sử dụng khi client MCP của bạn không hỗ trợ HTTP transport, hoặc khi bạn cần server chạy cục bộ.
Cài đặt
Homebrew:
brew install last9/tap/last9-mcp
NPM:
npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest
Bản phát hành binary (Windows / thủ công):
Tải về từ GitHub Releases:
| Nền tảng | Lưu trữ |
|---|---|
| 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 |
Lấy Refresh Token
Chỉ admin mới có thể tạo token.
- Vào API Access
- Nhấp Generate Token với quyền Write
- Sao chép nó
Cấu hình Client
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>"
}
}
}
}
Nơi dán cấu hình này:
| Client | Vị trí |
|---|---|
| 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 > biểu tượng bánh răng (mcp_config.json) |
| VS Code | Gói trong { "mcp": { "servers": { ... } } } trong settings.json — chi tiết |
Cấu hình STDIO cho VS Code
{
"mcp": {
"servers": {
"last9": {
"type": "stdio",
"command": "/opt/homebrew/bin/last9-mcp",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
}
Với NPM: sử dụng "command": "npx" và thêm "args": ["-y", "@last9/mcp-server@latest"].
Windows
Sau khi tải về từ GitHub Releases, giải nén và trỏ đến đường dẫn đầy đủ:
{
"mcpServers": {
"last9": {
"command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
Sử dụng NPM dễ dàng hơn trên Windows — không cần quản lý đường dẫn.
Biến môi trường
| Biến | Mặc định | Mô tả |
|---|---|---|
LAST9_REFRESH_TOKEN | (bắt buộc) | Refresh token từ API Access |
LAST9_DATASOURCE | mặc định của org | Tên datasource/cluster — hữu ích khi bạn có nhiều cụm Levitate |
LAST9_API_HOST | app.last9.io | Ghi đè máy chủ API |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | Số mục tối đa cho các yêu cầu get_logs được chia nhỏ |
LAST9_DEBUG_CHUNKING | false | Đặt true để ghi nhật ký chi tiết lập kế hoạch phân đoạn cho get_logs, get_service_logs, get_traces |
LAST9_DISABLE_TELEMETRY | true | Đặt false để bật truy vết OTel nội bộ |
OTEL_SDK_DISABLED | — | Biến môi trường OTel tiêu chuẩn. Ghi đè LAST9_DISABLE_TELEMETRY |
OTEL_EXPORTER_OTLP_ENDPOINT | — | Điểm cuối collector OTLP (chỉ khi telemetry được bật) |
OTEL_EXPORTER_OTLP_HEADERS | — | Header xác thực OTLP (chỉ khi telemetry được bật) |
Những gì nó có thể làm
Tình trạng dịch vụ
get_service_summary— Throughput, tỷ lệ lỗi, thời gian phản hồi p95 trên tất cả các dịch vụget_service_environments— Các môi trường khả dụng cho dịch vụ của bạn. Chạy công cụ này trước — các công cụ APM khác cầnenvtừ đâyget_service_performance_details— Phân tích đầy đủ: throughput, tỷ lệ lỗi, p50/p90/p95/trung bình/tối đa, apdex, tính khả dụngget_service_operations_summary— Các hoạt động được nhóm theo điểm cuối HTTP, lệnh gọi DB, tin nhắn, HTTP clientget_service_dependency_graph— Bản đồ phụ thuộc với throughput, độ trễ và tỷ lệ lỗi cho upstream/downstream/infraget_exceptions— Ngoại lệ phía máy chủ với bộ lọc dịch vụ và span
Quan sát cơ sở dữ liệu
Bốn công cụ truy cập trực tiếp vào hiệu suất cơ sở dữ liệu của bạn, được lấy từ các span trace OpenTelemetry. Không cần thêm công cụ nếu bạn đã sử dụng OTel.
get_databases— Khám phá tất cả cơ sở dữ liệu trên toàn bộ hạ tầng của bạn: loại DB, máy chủ, throughput (truy vấn/phút), độ trễ p95, tỷ lệ lỗi, số lượng dịch vụ phụ thuộcget_database_slow_queries— Các lần thực thi truy vấn chậm nhất thực tế, được sắp xếp theo thời lượng, kèm trace ID để đi sâu vào trace đầy đủget_database_queries— Các mẫu truy vấn và tổng hợp: tần suất chạy truy vấn, thời lượng trung bình/p95, tỷ lệ lỗiget_database_server_metrics— Số liệu phía máy chủ từ chính máy chủ DB (CPU, kết nối, tỷ lệ hit bộ đệm — tùy thuộc vào hệ thống DB của bạn)
Hỗ trợ PostgreSQL, MySQL, MongoDB, Redis, Aerospike và bất kỳ thứ gì khác có trace OTel với thuộc tính db_system.
Prometheus / PromQL
prometheus_range_query— Truy vấn phạm vi PromQL trên bất kỳ số liệu nàoprometheus_instant_query— Truy vấn tức thời; sử dụng các hàm tổng hợp nhưavg_over_time,sum_over_timeprometheus_label_values— Giá trị nhãn cho một chuỗi nhất địnhprometheus_labels— Tất cả nhãn khả dụng cho một chuỗi
Trỏ các công cụ này đến datasource/cluster khác với mặc định bằng cách đặt LAST9_DATASOURCE.
Logs
get_logs— Truy vấn log pipeline JSON đầy đủ (tổng hợp, bộ lọc, trích xuất trường)get_service_logs— Dòng log thô cho một dịch vụ, có thể lọc theo mức độ nghiêm trọng và nội dung thânget_log_attributes— Danh mục toàn cục các thuộc tính trong lược đồ log cho một cửa sổ thời gianget_log_attributes_for_pipeline— Các trường log thực sự hiện diện cho một pipeline đang tiến hành (khám phá theo phạm vi), mỗi trường cófilter_fieldchính xác của nóget_drop_rules— Quy tắc loại bỏ log từ Last9 Control Planeadd_drop_rule— Tạo quy tắc loại bỏ mới để cắt giảm khối lượng log tại nguồn
Traces
get_traces— Truy vấn trace pipeline JSON cho các tìm kiếm và tổng hợp rộngget_service_traces— Trace theo trace ID chính xác hoặc tên dịch vụ. Sử dụng khi bạn có trace ID — nhanh hơnget_trace_attributes— Danh mục toàn cục các thuộc tính trong lược đồ traceget_trace_attributes_for_pipeline— Các thuộc tính thực sự hiện diện cho một pipeline đang tiến hành (khám phá theo phạm vi), mỗi thuộc tính cófilter_fieldchính xác của nóget_trace_attribute_values— Các giá trị riêng biệt cho một thuộc tính trace, tùy chọn giới hạn phạm vi theo pipeline
Sự kiện thay đổi & Cảnh báo
get_change_events— Deployments, thay đổi cấu hình, rollbacks. Tương quan sự cố với những gì đã thay đổiget_alert_config— Cấu hình quy tắc cảnh báo — có thể tìm kiếm theo tên, mức độ nghiêm trọng, loại, thẻget_alerts— Cảnh báo hiện đang kích hoạt trong một cửa sổ thời gianget_alert_rule_state— Trạng thái kích hoạt lịch sử (1/0) cho mỗi quy tắc cảnh báo trong một khoảng thời gian, được nhóm theorule_id. Có thể lọc theo nhóm cảnh báo, tên quy tắc, bộ lọc nhãn và trạng thái.get_notification_channels— Các kênh thông báo đã cấu hình (Slack, PagerDuty, email, v.v.)
Bảng điều khiển tùy chỉnh
list_dashboards— Tất cả bảng điều khiển tùy chỉnh trong tổ chức của bạn: ID, tên và siêu dữ liệuget_dashboard— Định nghĩa đầy đủ bảng điều khiển theo ID, bao gồm bảng và truy vấncreate_dashboard— Tạo bảng điều khiển tùy chỉnh mới với bảng, truy vấn và siêu dữ liệuupdate_dashboard— Cập nhật bảng điều khiển hiện có theo ID (bảng điều khiển hệ thống chỉ đọc sẽ trả về lỗi)delete_dashboard— Xóa bảng điều khiển tùy chỉnh theo ID
Phân giải tên mờ
did_you_mean— Khi trợ lý không chắc chắn về tên thực thể, công cụ này trả về các kết quả khớp gần nhất từ danh mục của bạn (dịch vụ, môi trường, máy chủ, cơ sở dữ liệu, triển khai/không gian tên K8s, công việc). Tối đa 3 gợi ý với điểm tương đồng. Máy chủ tự động gọi công cụ này trước hầu hết các công cụ khi tra cứu tên trả về trống.
Cách thức hoạt động
Liên kết sâu trên mọi phản hồi. Mỗi công cụ trả về một trường deep_link — một URL trực tiếp vào bảng điều khiển Last9 cho chính truy vấn và phạm vi thời gian đó. Trợ lý có thể đưa cho bạn liên kết; bạn nhấp vào nó; bạn đến đó.
Bộ nhớ đệm thuộc tính trực tiếp. Khi khởi động, máy chủ tìm nạp tên thuộc tính log và trace thực tế từ dữ liệu của bạn và nhúng chúng vào mô tả công cụ. Điều này có nghĩa là trợ lý AI biết những trường nào tồn tại trong lược đồ của bạn, không chỉ là danh sách chung. Bộ nhớ đệm làm mới mỗi 2 giờ.
Kết quả lớn được chia nhỏ. get_logs và get_traces xử lý các tập kết quả lớn thông qua việc chia nhỏ thay vì cắt bớt. Giới hạn mặc định là 5000 mục cho log; có thể cấu hình qua LAST9_MAX_GET_LOGS_ENTRIES.
Phát triển
Chế độ HTTP, kiểm tra curl, xây dựng từ mã nguồn
Chạy ở chế độ HTTP
export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server
Máy chủ khởi động tại http://localhost:8080/mcp.
Kiểm tra với curl
MCP Streamable HTTP yêu cầu bắt tay khởi tạo trước. Đừng đặt Mcp-Session-Id trong yêu cầu đầu tiên.
# Step 1: Initialize
SESSION_ID=$(curl -si -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {"name": "curl-test", "version": "1.0"}
}
}' | grep -i "^Mcp-Session-Id:" | awk '{print $2}' | tr -d '\r')
echo "Session: $SESSION_ID"
# Step 2: Send initialized notification
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{"jsonrpc": "2.0", "method": "notifications/initialized", "params": {}}'
# Step 3: List tools
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}'
# Step 4: Call a tool
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_service_logs",
"arguments": {
"service": "your-service-name",
"lookback_minutes": 30,
"limit": 10
}
}
}'
Xây dựng từ mã nguồn
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 dành cho phát triển cục bộ. Để sử dụng thực tế, điểm cuối HTTP được lưu trữ dễ dàng hơn.
Tham khảo công cụ
Tất cả tham số, tiêu chuẩn đầu vào thời gian và chi tiết
Đầu vào thời gian
- Thời gian tuyệt đối (
start_time_iso/end_time_iso, hoặctime_iso) được ưu tiên hơnlookback_minutes. - Đối với cửa sổ tương đối: sử dụng
lookback_minutes. - Đối với cửa sổ tuyệt đối: sử dụng RFC3339/ISO8601 —
2026-02-09T15:04:05Z. YYYY-MM-DD HH:MM:SScũ chỉ được chấp nhận để tương thích.
get_exceptions
limit(số nguyên, tùy chọn): Ngoại lệ tối đa. Mặc định: 20.lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.start_time_iso/end_time_iso(chuỗi, tùy chọn): Phạm vi thời gian tuyệt đối.service_name(chuỗi, tùy chọn): Lọc theo dịch vụ.span_name(chuỗi, tùy chọn): Lọc theo tên span.deployment_environment(chuỗi, tùy chọn): Lọc theo môi trường.
get_service_summary
start_time_iso/end_time_iso(chuỗi, tùy chọn)env(chuỗi, tùy chọn): Mặc định làprod.
get_service_environments
start_time_iso/end_time_iso(chuỗi, tùy chọn)
Tất cả các công cụ APM khác yêu cầu giá trị
env. Sử dụng""nếu công cụ này trả về trống.
get_service_performance_details
service_name(chuỗi, bắt buộc)lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.start_time_iso/end_time_iso(chuỗi, tùy chọn)env(chuỗi, tùy chọn): Mặc định làprod.
get_service_operations_summary
service_name(chuỗi, bắt buộc)lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.start_time_iso/end_time_iso(chuỗi, tùy chọn)env(chuỗi, tùy chọn): Mặc định làprod.
get_service_dependency_graph
service_name(chuỗi, tùy chọn)lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.start_time_iso/end_time_iso(chuỗi, tùy chọn)env(chuỗi, tùy chọn): Mặc định làprod.
get_databases
env(chuỗi, tùy chọn): Lọc theo môi trường. Mặc định: tất cả.lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.start_time_iso/end_time_iso(chuỗi, tùy chọn)
get_database_slow_queries
db_system(chuỗi, tùy chọn): ví dụ:postgresql,mysql,mongodb,redis.host(chuỗi, tùy chọn): Máy chủ cơ sở dữ liệu (net_peer_name).service_name(chuỗi, tùy chọn): Tên dịch vụ gọi.env(chuỗi, tùy chọn)min_duration_ms(số thực, tùy chọn): Thời lượng truy vấn tối thiểu tính bằng ms.lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.start_time_iso/end_time_iso(chuỗi, tùy chọn)limit(số nguyên, tùy chọn): Mặc định: 20.
get_database_queries
db_system(chuỗi, tùy chọn)host(chuỗi, tùy chọn)service_name(chuỗi, tùy chọn)env(chuỗi, tùy chọn)lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.start_time_iso/end_time_iso(chuỗi, tùy chọn)limit(số nguyên, tùy chọn): Mặc định: 20.
get_database_server_metrics
db_system(chuỗi, bắt buộc): ví dụ:postgresql,mysql,mongodb,redis,aerospike.host(chuỗi, tùy chọn)lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.start_time_iso/end_time_iso(chuỗi, tùy chọn)
prometheus_range_query
query(chuỗi, bắt buộc): Truy vấn PromQL.start_time_iso/end_time_iso(chuỗi, tùy chọn): Mặc định là 60 phút trước.lookback_minutes(số thực, tùy chọn): Mặc định: 60.
prometheus_instant_query
query(chuỗi, bắt buộc)time_iso(chuỗi, tùy chọn): Mặc định là hiện tại.lookback_minutes(số thực, tùy chọn)
prometheus_label_values
match_query(chuỗi, tùy chọn): Bộ lọc PromQL.label(chuỗi, bắt buộc): Tên nhãn.start_time_iso/end_time_iso(chuỗi, tùy chọn)
prometheus_labels
match_query(chuỗi, tùy chọn): Bộ lọc PromQL.start_time_iso/end_time_iso(chuỗi, tùy chọn)
get_logs
logjson_query(mảng, bắt buộc): Truy vấn pipeline JSON.lookback_minutes(số nguyên, tùy chọn): Mặc định: 5.start_time_iso/end_time_iso(chuỗi, tùy chọn)limit(số nguyên, tùy chọn): Mặc định máy chủ: 5000.index(chuỗi, tùy chọn):physical_index:<name>hoặcrehydration_index:<block_name>.
Đối với kho dịch vụ dựa trên log, truy vấn physical_index_service_count trước:
sum by (name, service_name, env) (physical_index_service_count{destination="logs"})
Sử dụng service_name làm ServiceName, env làm môi trường khi có, và name làm tên chỉ mục vật lý. Nếu name="default", bỏ qua index; đối với chỉ mục vật lý không mặc định do người dùng chọn, truyền index: "physical_index:<name>". Nếu backend từ chối lọc chỉ mục vật lý tường minh, thử lại mà không có index và báo cáo rằng lọc chỉ mục vật lý tường minh không khả dụng cho backend đó.
get_service_logs
service(chuỗi, bắt buộc)lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.limit(số nguyên, tùy chọn): Mặc định: 20.env(chuỗi, tùy chọn)severity_filters(mảng, tùy chọn): ví dụ:["error", "warn"]. Logic OR.body_filters(mảng, tùy chọn): ví dụ:["timeout", "failed"]. Logic OR.start_time_iso/end_time_iso(chuỗi, tùy chọn)index(chuỗi, tùy chọn)
Nhiều loại bộ lọc kết hợp với AND. Mỗi mảng sử dụng OR nội bộ.
Sử dụng get_logs cho số lượng tổng hợp rộng trước; chỉ sử dụng get_service_logs sau khi thu hẹp vào một dịch vụ/môi trường/chỉ mục và một tập mẫu nhỏ.
get_log_attributes
lookback_minutes(số nguyên, tùy chọn): Mặc định: 15.start_time_iso/end_time_iso(chuỗi, tùy chọn)region(chuỗi, tùy chọn)index(chuỗi, tùy chọn)
get_log_attributes_for_pipeline
pipeline(mảng, bắt buộc): Các giai đoạn lọc trước để giới hạn phạm vi khám phá, ví dụ:[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].lookback_minutes(số nguyên, tùy chọn): Mặc định: 15.start_time_iso/end_time_iso(chuỗi, tùy chọn)region(chuỗi, tùy chọn)index(chuỗi, tùy chọn)
get_drop_rules
Không có tham số.
add_drop_rule
name(chuỗi, bắt buộc)filters(mảng, bắt buộc): Mỗi bộ lọc:key,value,operator(equals/not_equals),conjunction(and).
get_traces
Sử dụng cho tìm kiếm và tổng hợp rộng. Để tra cứu chính xác ID trace, sử dụng get_service_traces.
tracejson_query(mảng, bắt buộc)start_time_iso/end_time_iso(chuỗi, tùy chọn)lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.limit(số nguyên, tùy chọn): Mặc định: 5000.
get_service_traces
Yêu cầu chính xác một trong trace_id hoặc service_name.
trace_id(chuỗi, tùy chọn): Khoảng thời gian tra cứu mặc định: 72 giờ.service_name(chuỗi, tùy chọn): Khoảng thời gian tra cứu mặc định: 60 phút.lookback_minutes(số nguyên, tùy chọn)start_time_iso/end_time_iso(chuỗi, tùy chọn)limit(số nguyên, tùy chọn): Mặc định: 10.env(chuỗi, tùy chọn)
get_trace_attributes
lookback_minutes(số nguyên, tùy chọn): Mặc định: 15.start_time_iso/end_time_iso(chuỗi, tùy chọn)region(chuỗi, tùy chọn)
get_trace_attributes_for_pipeline
pipeline(mảng, bắt buộc): Các giai đoạn lọc trước để giới hạn phạm vi khám phá, ví dụ:[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].lookback_minutes(số nguyên, tùy chọn): Mặc định: 15.start_time_iso/end_time_iso(chuỗi, tùy chọn)region(chuỗi, tùy chọn)
get_trace_attribute_values
tag_name(chuỗi, bắt buộc): Tên thuộc tính từget_trace_attributes(ví dụ:resource_departmenthoặcattributes['http.method']).pipeline(mảng, tùy chọn): Các giai đoạn lọc trước để giới hạn phạm vi giá trị; bỏ qua để lấy giá trị toàn cục.region(chuỗi, tùy chọn)
get_change_events
start_time_iso/end_time_iso(chuỗi, tùy chọn)lookback_minutes(số nguyên, tùy chọn): Mặc định: 60.service(chuỗi, tùy chọn)environment(chuỗi, tùy chọn)event_name(chuỗi, tùy chọn): Gọi không có tham số này trước để lấyavailable_event_names.
get_alert_config
search_term(chuỗi, tùy chọn): Tìm kiếm văn bản tự do trên tên, nhóm, nguồn dữ liệu, thẻ.rule_name(chuỗi, tùy chọn)severity(chuỗi, tùy chọn)rule_type(chuỗi, tùy chọn):statichoặcanomaly.alert_group_name/alert_group_type/data_source_name(chuỗi, tùy chọn)tags(mảng, tùy chọn): Tất cả phải khớp (logic AND).
get_alerts
time_iso(chuỗi, tùy chọn): Thời gian đánh giá theo RFC3339.window(số nguyên, tùy chọn): Khoảng thời gian tra cứu tính bằng giây. Mặc định: 900. Phạm vi: 60–86400.lookback_minutes(số nguyên, tùy chọn): Phạm vi: 1–1440.
get_alert_rule_state
start_time(số nguyên, bắt buộc): Điểm bắt đầu phạm vi theo Unix epoch (bao gồm).end_time(số nguyên, bắt buộc): Điểm kết thúc phạm vi theo Unix epoch (bao gồm).step(số nguyên, bắt buộc): Độ phân giải tính bằng giây giữa các mẫu. Số lượng mẫu((end_time - start_time) / step + 1)được giới hạn ở 100.alert_group_id(chuỗi, tùy chọn): Lọc theo ID nhóm cảnh báo.rule_name(chuỗi, tùy chọn): Bộ lọc regex trên tên quy tắc.alert_group_name(chuỗi, tùy chọn): Bộ lọc regex trên tên nhóm cảnh báo.label_filters(chuỗi, tùy chọn): Các bộ lọc nhãnkey=valuephân tách bằng dấu phẩy.state(chuỗi, tùy chọn): Lọc theo trạng thái (ví dụ:firing).
Trả về một bản đồ JSON của rule_id -> [{timestamp, is_firing}]. Một dấu thời gian mà tại đó một quy tắc vắng mặt trong phản hồi upstream được báo cáo là is_firing=0 — điều này có nghĩa là "không được quan sát thấy đang kích hoạt", không phải là trạng thái bình thường đã xác nhận.
get_notification_channels
Không có tham số. Trả về tất cả các kênh thông báo đã cấu hình (Slack, PagerDuty, email, webhooks, v.v.).
did_you_mean
query(chuỗi, bắt buộc): Tên cần tìm kiếm — một phần, sai chính tả hoặc viết tắt.type(chuỗi, tùy chọn): Giới hạn theo loại thực thể:service,environment,host,database,k8s_deployment,k8s_namespace,job.
Trả về tối đa 3 kết quả khớp gần nhất với điểm tương đồng. Sử dụng điều này trước bất kỳ lệnh gọi công cụ nào khi tên thực thể không chắc chắn. Nếu lệnh gọi trước đó trả về kết quả trống, hãy thử điều này trước khi thử lại.
list_dashboards
Không có tham số. Trả về tất cả các bảng điều khiển tùy chỉnh trong tổ chức dưới dạng mảng JSON với id, name và siêu dữ liệu.
get_dashboard
id(chuỗi, bắt buộc): UUID bảng điều khiển.region(chuỗi, tùy chọn): Khu vực để điền truy vấn bảng điều khiển. Mặc định là khu vực nguồn dữ liệu đã cấu hình.
create_dashboard
dashboard(đối tượng, bắt buộc): Định nghĩa bảng điều khiển vớinamevàpanels[]. Mỗi bảng điều khiển yêu cầuname,version,layout(x,y,w,h),visualization.typevàqueries[].metadata(đối tượng, tùy chọn): Siêu dữ liệu bảng điều khiển — các trường_categoryvà_type(ví dụ:{"_category":"custom","_type":"metrics"}).
update_dashboard
id(chuỗi, bắt buộc): UUID bảng điều khiển cần cập nhật.dashboard(đối tượng, bắt buộc): Nội dung bảng điều khiển thay thế đầy đủ (cùng hình dạng như tạo mới).metadata(đối tượng, tùy chọn): Siêu dữ liệu thay thế. Bảng điều khiển hệ thống chỉ đọc sẽ trả về lỗi 403.
delete_dashboard
id(chuỗi, bắt buộc): UUID bảng điều khiển cần xóa. Không thể xóa bảng điều khiển hệ thống chỉ đọc.
Kiểm thử
Xem TESTING.md để biết thiết lập và hướng dẫn kiểm thử tích hợp.
