Last9
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.
Bạn có thể làm gì với Last9 MCP?
Yêu cầu trợ lý của bạn điều tra sự cố production bằng cách sử dụng log trực tiếp, trace và metrics từ Last9.
- Xếp hạng sức khỏe dịch vụ — Sử dụng
get_service_summaryđể xem số lượng request, throughput và lỗi 4xx/5xx trên toàn bộ hệ thống của bạn. - Tìm truy vấn database chậm — Sử dụng
get_database_slow_queriesđể lấy các lần thực thi chậm nhất thực tế kèm trace ID để điều tra sâu. - Kéo log dịch vụ — Sử dụng
get_service_logsđể lấy các dòng log thô được lọc theo mức độ nghiêm trọng và nội dung. - Theo dõi một request cụ thể — Sử dụng
get_trace_waterfallđể xem waterfall parent/child cho một trace ID chính xác. - Kiểm tra trạng thái cảnh báo — Sử dụng
get_alert_rule_stateđể xem lịch sử kích hoạt theo từng quy tắc cảnh báo trong một khoảng thời gian. - Quản lý dashboard — Sử dụng
create_dashboardđể xây dựng dashboard tùy chỉnh với các panel và truy vấn.
Tài liệu
Máy chủ MCP Last9

Tác nhân AI của bạn không biết điều gì đang hỏng trong môi trường production. Công cụ này khắc phục điều đó.
Máy chủ MCP Last9 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 — log, metric, trace, exception, truy vấn cơ sở dữ liệu, cảnh báo và bản triển khai. Tác nhân không còn đoán mò mà bắt đầu đọ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, 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 v1.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 cho tổ chức Claude của bạn.
Tự lưu trữ (STDIO)
Sử dụng khi máy khách MCP của bạn không hỗ trợ giao thức HTTP, hoặc khi bạn cần máy chủ 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 xuống từ GitHub Releases:
| Nền tảng | Kho 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.
- Đi tới API Access
- Nhấp Generate Token với quyền Write
- Sao chép nó
Cấu hình máy khách
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:
| Máy khách | 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 | Bọc 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>"
}
}
}
}
}
Đối với NPM: sử dụng "command": "npx" và thêm "args": ["-y", "@last9/mcp-server@latest"].
Windows
Sau khi tải xuống 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>"
}
}
}
}
Đường dẫn NPM dễ 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 cluster Levitate |
LAST9_API_HOST | app.last9.io | Ghi đè host API |
LAST9_TOOLSETS | tất cả công cụ | Các bộ công cụ phân tách bằng dấu phẩy để hiển thị (logs, traces, metrics, alerts, dashboards, investigate, all). Bí danh: LAST9_MCP_TOOLSETS |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | Số mục tối đa cho các yêu cầu get_logs được phân khối |
LAST9_DEBUG_CHUNKING | false | Đặt true để ghi log chi tiết lập kế hoạch phân khối cho get_logs, get_service_logs, get_traces |
LAST9_DISABLE_TELEMETRY | true | Đặt false để bật tracing OTel nội bộ |
OTEL_SDK_DISABLED | — | Biến môi trường OTel chuẩn. Ghi đè LAST9_DISABLE_TELEMETRY |
OTEL_EXPORTER_OTLP_ENDPOINT | — | Endpoint 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ì công cụ này có thể làm
Sức khỏe dịch vụ
get_service_summary— Các hàng(service, env)của fleet được xếp hạng: interval request_count, throughput_rpm, số lượng HTTP 4xx/5xx và số lỗi gRPCget_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/avg/max, apdex, tính khả dụngget_service_operations_summary— Các thao tác được nhóm theo endpoint HTTP, lệnh gọi DB, nhắn tin, máy khách HTTPget_service_dependency_graph— Bản đồ phụ thuộc với throughput, độ trễ và tỷ lệ lỗi cho upstream/downstream/infraget_apm_service_deviations— So sánh cửa sổ hiện tại với đường cơ sở có cùng thời lượng: suy giảm/cải thiện, đối chiếu Apdex và kết quả cuối cùng (fleet hoặc dịch vụ đơn lẻ)get_exceptions— Exception 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ụ đi thẳng vào hiệu suất cơ sở dữ liệu của bạn, được suy ra từ span trace OpenTelemetry. Không cần instrumentation bổ sung nếu bạn đã sử dụng OTel.
get_databases— Khám phá tất cả cơ sở dữ liệu trong hạ tầng của bạn: loại DB, host, 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 để đào sâu vào trace đầy đủget_database_queries— Mẫu truy vấn và tổng hợp: tần suất truy vấn chạy, 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 host DB (CPU, kết nối, tỷ lệ buffer hit — phụ thuộc vào hệ thống DB của bạn)
Hỗ trợ PostgreSQL, MySQL, MongoDB, Redis, Aerospike và mọi thứ khác mà OTel trace có thuộc tính db_system.
Prometheus / PromQL
prometheus_range_query— Truy vấn phạm vi PromQL trên bất kỳ metric nàoprometheus_instant_query— Truy vấn tức thời; sử dụng các hàm rollup 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.
Log
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 bodyget_log_attributes— Danh mục toàn cục các thuộc tính trong lược đồ log cho một khoảng thời gianget_log_attributes_for_pipeline— Các trường log thực sự hiện diện cho một pipeline đang chạy (khám phá có phạm vi), mỗi trường kèmfilter_fieldchính xácget_drop_rules— Quy tắc drop log từ Last9 Control Planeadd_drop_rule— Tạo quy tắc drop mới để cắt giảm khối lượng log tại nguồn
Trace
get_traces— Truy vấn trace pipeline JSON cho tìm kiếm rộng và tổng hợpget_service_traces— Trace theo ID trace chính xác hoặc tên dịch vụ. Sử dụng khi bạn có ID trace — 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 chạy (khám phá có phạm vi), mỗi thuộc tính kèmfilter_fieldchính xácget_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 pipelineget_trace_attribute_deviations— Xếp hạng các giá trị thuộc tính khác nhau giữa hai nhóm span có giới hạn (chậm so với nhanh, lỗi so với không lỗi, hoặc hai khoảng thời gian). Tương quan, không phải nguyên nhânget_trace_waterfall— Một trace chính xác dưới dạng waterfall cha/con với self-time hợp nhất theo khoảng, span chậm nhất và cảnh báo đồ thị
Sự kiện thay đổi & Cảnh báo
get_change_events— Bản triển khai, thay đổi cấu hình, rollback. 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 đang kích hoạt trong một khoảng 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 bảng điều khiển đầy đủ theo ID, bao gồm panel và truy vấncreate_dashboard— Tạo bảng điều khiển tùy chỉnh mới với panel, 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 IDlist_dashboard_snapshots— Ảnh chụp nhanh đóng băng tại một thời điểm cho một bảng điều khiển (chỉ siêu dữ liệu)get_dashboard_snapshot— Ảnh chụp nhanh đóng băng đầy đủ bao gồm dữ liệu panel cho RCA / chế độ xem chia sẻdelete_dashboard_snapshot— Xóa ảnh chụp nhanh đóng băng theo ID
Phân giải tên mờ
did_you_mean— Khi tác nhân không chắc chắn về tên một 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, host, cơ sở dữ liệu, bản triển khai/namespace K8s, job). Tối đa 3 gợi ý kèm đ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ụ khác khi tra cứu tên trả về rỗng.
Cách hoạt động
Deep link trên mọi phản hồi. Mỗi công cụ trả về trường deep_link — một URL trực tiếp vào bảng điều khiển Last9 cho chính xác truy vấn và khoảng thời gian đó. Tác nhân có thể đưa cho bạn liên kết; bạn nhấp vào; bạn ở đó.
Bộ công cụ. Theo mặc định, máy chủ hiển thị mọi công cụ. Các host tự động hóa chỉ cần điều tra (log/trace/metric) có thể đặt LAST9_TOOLSETS=investigate (hoặc truyền --toolsets=investigate) để tools/list giữ nhỏ mà không cần vô hiệu hóa hàng loạt phía máy khách. Các gói có tên: logs, traces, metrics, alerts, dashboards, investigate, all. Tên không xác định sẽ thất bại nhanh. Riêng gói metrics không bao gồm list_datasources hoặc did_you_mean — hãy sử dụng investigate (hoặc kết hợp các bộ công cụ) khi bạn cần các trợ giúp khám phá đó.
Tài nguyên tham chiếu công cụ. Các sổ tay dài logjson/tracejson/service-logs/metrics là tài nguyên MCP (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics), không phải văn bản mô tả công cụ luôn bật. Các quy tắc truy vấn quan trọng vẫn nằm trong mô tả công cụ để các tác nhân không bao giờ gọi resources/read vẫn nhận được hướng dẫn xây dựng chính xác. Khám phá các trường riêng của org bằng get_log_attributes / get_log_attributes_for_pipeline (và các công cụ tương đương cho trace) — chúng không được chèn vào mô tả.
Kết quả lớn được phân khối. get_logs và get_traces xử lý các tập kết quả lớn thông qua phân khối 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 thử 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 thử bằng curl
Trình xử lý HTTP Streamable chạy ở chế độ không trạng thái (stateless), vì vậy mọi yêu cầu đều được phục vụ độc lập. Bắt tay initialize và header Mcp-Session-Id là tùy chọn — các máy khách gửi chúng vẫn hoạt động (header được chấp nhận và bỏ qua), và máy khách cũng có thể bỏ qua để chuyển thẳng đến tools/list / tools/call. Mỗi công cụ là một truy vấn yêu cầu/phản hồi độc lập; máy chủ không gửi thông báo từ máy chủ đến máy khách, vì vậy GET /mcp (luồng SSE) trả về 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
}
}
}'
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ữ sẽ dễ dàng hơn.
Tham chiếu 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:SSkế thừa chỉ được chấp nhận cho mục đích tương thích.
get_exceptions
limit(số nguyên, tùy chọn): Số 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.env(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): Biểu thức chính quy PromQL. Mặc định là.*. Khớp chính xác cần có neo (ví dụ:^prod$).sort_by(chuỗi, tùy chọn):request_count(mặc định),throughput_rpm,http_4xx_count,http_5xx_count, hoặcgrpc_error_count.limit(số nguyên, tùy chọn): Số hàng xếp hạng tối đa. Bỏ qua hoặc 0 nghĩa là 10; giá trị trên 100 sẽ được giới hạn xuống 100.
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 đều yêu cầu giá trị
env. Sử dụng""nếu giá trị này trả về rỗ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_apm_service_deviations
service_name(chuỗi, tùy chọn): Bỏ qua cho phạm vi toàn bộ hệ thống; cung cấp cho một dịch vụ và các tương quan hoạt động của nó.lookback_minutes(số nguyên, tùy chọn): Cửa sổ hiện tại. Mặc định: 60.start_time_iso/end_time_iso(chuỗi, tùy chọn): Cửa sổ hiện tại tường minh.baseline_start_time_iso/baseline_end_time_iso(chuỗi, tùy chọn): Đường cơ sở tường minh. Mặc định là cửa sổ có cùng thời lượng liền kề trước đó.datasource(chuỗi, tùy chọn): Giới hạn so sánh trong một nguồn dữ liệu.env(chuỗi, tùy chọn): Mặc định làprod.max_services/max_operations(số nguyên, tùy chọn): Mặc định 10, tối đa 10 mỗi loại.
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 gần nhất.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 đường ống 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 kiểm kê dịch vụ dựa trên nhật ký, hãy 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, hãy truyền index: "physical_index:<name>". Nếu backend từ chối lọc chỉ mục vật lý tường minh, hãy 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_name(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ố liệu tổng hợp rộng trước; chỉ sử dụng get_service_logs sau khi thu hẹp phạm vi đến 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ố. Liệt kê các quy tắc loại bỏ qua GET /otel_settings/drop?region=....
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).- Các khóa bộ lọc phải sử dụng
attributes["key_name"]hoặcresource.attributes["key_name"](bắt buộc bởi API Last9). - Tạo quy tắc qua
POST /otel_settings/drop?region=...&cluster_id=....
get_traces
Sử dụng cho các tìm kiếm và tổng hợp rộng. Để tra cứu ID trace chính xác, hãy 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
Chính xác một trong trace_id hoặc service_name là bắt buộc.
trace_id(chuỗi, tùy chọn): Khoảng thời gian nhìn lại mặc định: 72 giờ.service_name(chuỗi, tùy chọn): Khoảng thời gian nhìn lại 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_trace_attribute_deviations
comparison_mode(chuỗi, bắt buộc):latency,errors, hoặctime.service_name(chuỗi, bắt buộc)environment(chuỗi, bắt buộc): Giá trịdeployment.environmentchính xác.operation(chuỗi, tùy chọn)filters(mảng, tùy chọn): Các điều kiện lọc JSON trace.candidate_attributes(mảng, tùy chọn): Tối đa 8; bỏ qua để khám phá có giới hạn.latency_threshold_ms(số, tùy chọn): Bắt buộc cho chế độlatency; bị từ chối cho các chế độ khá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: 15. Tối đa: 15.baseline_start_time_iso/baseline_end_time_iso(chuỗi, tùy chọn): Bắt buộc cho chế độtime; không chồng lấn và có thời lượng bằng với cửa sổ mục tiêu.minimum_cohort_size(số nguyên, tùy chọn): Mặc định: 100. Tối thiểu: 20.minimum_value_support(số nguyên, tùy chọn): Mặc định: 20. Tối thiểu: 10.limit(số nguyên, tùy chọn): Mặc định: 10. Tối đa: 10.
Yêu cầu khả năng backend đi kèm phải được bật.
get_trace_waterfall
trace_id(chuỗi, bắt buộc)environment(chuỗi, tùy chọn)start_time_iso/end_time_iso(chuỗi, tùy chọn)lookback_minutes(số nguyên, tùy chọn): Mặc định: 4320 (72 giờ).selected_span_id(chuỗi, tùy chọn): Trả về thuộc tính, sự kiện và liên kết cho span đó.max_spans(số nguyên, tùy chọn): Mặc định: 500. Tối đa: 1000.
Trả về một phong bì investigation-evidence/v1; waterfall nằm dưới data.
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_name(chuỗi, tùy chọn)env(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 điểm đánh giá theo RFC3339.window(số nguyên, tùy chọn): Khoảng thời gian nhìn lại 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): Thời điểm bắt đầu của phạm vi theo Unix epoch (bao gồm).end_time(số nguyên, bắt buộc): Thời điểm kết thúc của 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)bị giới hạn ở mức 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 biểu thức chính quy trên tên quy tắc.alert_group_name(chuỗi, tùy chọn): Bộ lọc biểu thức chính quy trên tên nhóm cảnh báo.label_filters(chuỗi, tùy chọn): 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 mốc thời gian tại đó một quy tắc vắng mặt trong phản hồi từ nguồn đượ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 đã được 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, webhook, 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 kèm điểm tương đồng. Sử dụng công cụ này trước bất kỳ lời gọi công cụ nào khi tên thực thể không chắc chắn. Nếu lời gọi trước đó trả về kết quả rỗng, hãy thử công cụ này trước khi thử lại.
list_dashboards
Không có tham số. Trả về tất cả dashboard 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 của dashboard.region(chuỗi, tùy chọn): Vùng cho việc điền truy vấn bảng điều khiển. Mặc định là vùng nguồn dữ liệu đã cấu hình.
create_dashboard
dashboard(đối tượng, bắt buộc): Định nghĩa dashboard vớinamevàpanels[]. Mỗi bảng điều khiển yêu cầuname,version,layout(x,y,w,h),visualization.type, vàqueries[].metadata(đối tượng, tùy chọn): Siêu dữ liệu dashboard — các trường_categoryvà_type(ví dụ:{"_category":"custom","_type":"metrics"}).
update_dashboard
id(chuỗi, bắt buộc): UUID của dashboard cần cập nhật.dashboard(đối tượng, bắt buộc): Nội dung dashboard thay thế hoàn toàn (cùng cấu trúc với create).metadata(đối tượng, tùy chọn): Siêu dữ liệu thay thế. Dashboard hệ thống chỉ đọc trả về lỗi 403.
delete_dashboard
id(chuỗi, bắt buộc): UUID của dashboard cần xóa. Các dashboard hệ thống chỉ đọc không thể bị xóa.
list_dashboard_snapshots
dashboard_id(chuỗi, bắt buộc): UUID của dashboard cần liệt kê các ảnh chụp nhanh.
Chỉ trả về siêu dữ liệu (id, name, expires_at, v.v.). Sử dụng get_dashboard_snapshot để lấy dữ liệu bảng điều khiển đã đóng băng.
get_dashboard_snapshot
id(chuỗi, bắt buộc): UUID của ảnh chụp nhanh.
Trả về ảnh chụp nhanh đã đóng băng đầy đủ bao gồm dashboard_definition, panel_data, time_range, và variables.
delete_dashboard_snapshot
id(chuỗi, bắt buộc): UUID của ảnh chụp nhanh cần xóa.
Kiểm thử
Xem TESTING.md để biết cách thiết lập và hướng dẫn kiểm thử tích hợp.
