Last9
ทางการนำบริบทการผลิตแบบเรียลไทม์—ล็อก เมตริก และเทรซ—มาสู่สภาพแวดล้อมในเครื่องของคุณได้อย่างราบรื่น เพื่อแก้ไขโค้ดอัตโนมัติได้เร็วขึ้น
คุณทำอะไรได้บ้างด้วย Last9 MCP?
- ตรวจสอบสถานะและประสิทธิภาพของบริการ — สอบถามข้อมูลปริมาณงาน อัตราข้อผิดพลาด และสรุปความหน่วงข้ามบริการด้วย
get_service_summaryหรือเจาะลึก p50/p95/p99, Apdex และความพร้อมใช้งานของบริการเฉพาะด้วยget_service_performance_details - ตรวจสอบประสิทธิภาพของฐานข้อมูล — ค้นหาฐานข้อมูลทั้งหมดและความหน่วง p95 ด้วย
get_databasesจากนั้นดึงข้อมูลการดำเนินการค้นหาที่ช้าที่สุด (get_database_slow_queries) หรือรูปแบบการค้นหาที่รวมกลุ่ม (get_database_queries) เพื่อระบุจุดคอขวด - สอบถามล็อกและเทรซด้วยสคีมาจริงของคุณ — รันคำสั่ง JSON pipeline บนล็อก (
get_logs) หรือเทรซ (get_traces) และค้นหาฟิลด์ที่พร้อมใช้งานด้วยget_log_attributesหรือget_trace_attributes_for_pipelineเพื่อให้ผู้ช่วยทราบโครงสร้างข้อมูลที่แน่นอนของคุณ - เชื่อมโยงเหตุการณ์กับความเปลี่ยนแปลงล่าสุด — ใช้
get_change_eventsเพื่อแสดงรายการการปรับใช้ การเปลี่ยนแปลงการกำหนดค่า และการย้อนกลับภายในช่วงเวลา และอ้างอิงไขว้กับget_alertsเพื่อดูว่ามีการแจ้งเตือนใดเกิดขึ้นเมื่อใด - รันคำสั่ง PromQL บนเมตริก — ดำเนินการ PromQL แบบช่วงเวลาหรือแบบทันที (
prometheus_range_query,prometheus_instant_query) และสำรวจป้ายกำกับที่พร้อมใช้งานด้วยprometheus_labelsและprometheus_label_values - แก้ไขชื่อเอนทิตีที่ไม่ชัดเจน — เมื่อไม่พบชื่อบริการ สภาพแวดล้อม หรือฐานข้อมูล ให้ใช้
did_you_meanเพื่อรับชื่อที่ใกล้เคียงที่สุดจากแคตตาล็อกของคุณก่อนลองเรียกใช้เครื่องมือเดิมอีกครั้ง
เอกสาร
Last9 MCP Server

ผู้ช่วย AI ของคุณไม่รู้ว่าอะไรเสียหายในระบบจริง นี่คือสิ่งที่ช่วยแก้ปัญหานั้น
Last9 MCP Server เชื่อมต่อ Claude, Cursor, Windsurf และผู้ช่วย AI ใดๆ ที่รองรับ MCP เข้ากับข้อมูล observability ในระบบจริงของคุณโดยตรง — ไม่ว่าจะเป็น logs, metrics, traces, exceptions, database queries, alerts และ deployments ผู้ช่วยจะหยุดการคาดเดาและเริ่มอ่านสัญญาณที่แท้จริง
เริ่มต้นใน 30 วินาที (แบบ Hosted)
ไม่ต้องติดตั้งไบนารี ไม่ต้องจัดการโทเค็น มีแค่ URL เดียว, OAuth ในเบราว์เซอร์ของคุณ, เสร็จสิ้น
ค้นหา org slug ของคุณใน 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
พิมพ์ /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
ต้องการเวอร์ชัน 1.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 ของคุณ
แบบ Self-Hosted (STDIO)
ใช้เมื่อไคลเอนต์ MCP ของคุณไม่รองรับ HTTP transport หรือเมื่อคุณต้องการให้เซิร์ฟเวอร์ทำงานในเครื่อง
ติดตั้ง
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 |
รับ Refresh Token
เฉพาะ ผู้ดูแลระบบ เท่านั้นที่สามารถสร้างโทเค็นได้
- ไปที่ 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 | ห่อด้วย { "mcp": { "servers": { ... } } } ใน settings.json — รายละเอียด |
การตั้งค่า STDIO ของ VS Code
{
"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>"
}
}
}
}
การใช้ NPM นั้นง่ายกว่าบน Windows — ไม่ต้องจัดการพาธ
ตัวแปรสภาพแวดล้อม
| ตัวแปร | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
LAST9_REFRESH_TOKEN | (จำเป็น) | Refresh token จาก API Access |
LAST9_DATASOURCE | ค่าเริ่มต้นของ org | ชื่อ Datasource/คลัสเตอร์ — มีประโยชน์เมื่อคุณมีหลาย Levitate clusters |
LAST9_API_HOST | app.last9.io | เขียนทับ API host |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | จำนวนรายการสูงสุดสำหรับคำขอ get_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 (เฉพาะเมื่อเปิดใช้งาน telemetry) |
OTEL_EXPORTER_OTLP_HEADERS | — | OTLP auth headers (เฉพาะเมื่อเปิดใช้งาน telemetry) |
สิ่งที่มันทำได้
สุขภาพของบริการ
get_service_summary— ปริมาณงาน, อัตราข้อผิดพลาด, เวลาตอบสนอง p95 ในทุกบริการget_service_environments— สภาพแวดล้อมที่พร้อมใช้งานสำหรับบริการของคุณ รันคำสั่งนี้ก่อน — เครื่องมือ APM อื่นๆ ต้องการenvจากที่นี่get_service_performance_details— รายละเอียดทั้งหมด: ปริมาณงาน, อัตราข้อผิดพลาด, p50/p90/p95/ค่าเฉลี่ย/สูงสุด, apdex, ความพร้อมใช้งานget_service_operations_summary— การดำเนินการที่จัดกลุ่มตาม HTTP endpoints, การเรียก DB, การส่งข้อความ, HTTP clientsget_service_dependency_graph— แผนที่การพึ่งพาพร้อมปริมาณงาน, เวลาแฝง, และอัตราข้อผิดพลาดสำหรับ upstream/downstream/infraget_exceptions— ข้อยกเว้นฝั่งเซิร์ฟเวอร์พร้อมตัวกรอง service และ span
การสังเกตการณ์ฐานข้อมูล
เครื่องมือสี่อย่างที่เข้าถึงประสิทธิภาพฐานข้อมูลของคุณโดยตรง ซึ่งได้มาจาก OpenTelemetry trace spans ไม่ต้องใช้เครื่องมือวัดเพิ่มเติมหากคุณใช้ OTel อยู่แล้ว
get_databases— ค้นพบฐานข้อมูลทั้งหมดในโครงสร้างพื้นฐานของคุณ: ประเภท DB, โฮสต์, ปริมาณงาน (คำค้น/นาที), เวลาแฝง p95, อัตราข้อผิดพลาด, จำนวนบริการที่พึ่งพาget_database_slow_queries— การดำเนินการคำค้นที่ช้าที่สุดจริงๆ เรียงตามระยะเวลา พร้อม trace IDs สำหรับเจาะลึกเข้าไปใน traces ทั้งหมดget_database_queries— รูปแบบคำค้นและข้อมูลรวม: ความถี่ในการรันคำค้น, ระยะเวลาเฉลี่ย/p95, อัตราข้อผิดพลาดget_database_server_metrics— เมตริกฝั่งเซิร์ฟเวอร์จากโฮสต์ DB เอง (CPU, การเชื่อมต่อ, อัตราการ hit ของ buffer — ขึ้นอยู่กับระบบ DB ของคุณ)
รองรับ PostgreSQL, MySQL, MongoDB, Redis, Aerospike และอื่นๆ ที่มี OTel traces พร้อมแอตทริบิวต์ db_system
Prometheus / PromQL
prometheus_range_query— การค้นหาแบบช่วง PromQL สำหรับเมตริกใดๆprometheus_instant_query— การค้นหาแบบทันที; ใช้ฟังก์ชัน rollup เช่นavg_over_time,sum_over_timeprometheus_label_values— ค่าของ label สำหรับซีรีส์ที่กำหนดprometheus_labels— label ทั้งหมดที่พร้อมใช้งานสำหรับซีรีส์
ชี้เครื่องมือเหล่านี้ไปยัง datasource/คลัสเตอร์อื่นที่ไม่ใช่ค่าเริ่มต้นโดยการตั้งค่า LAST9_DATASOURCE
Logs
get_logs— การค้นหา log แบบ JSON pipeline เต็มรูปแบบ (การรวม, ตัวกรอง, การแยกฟิลด์)get_service_logs— บรรทัด log ดิบสำหรับบริการ, กรองตาม severity และเนื้อหา body ได้get_log_attributes— แคตตาล็อกแอตทริบิวต์ทั่วโลกใน schema ของ log สำหรับช่วงเวลาหนึ่งget_log_attributes_for_pipeline— ฟิลด์ log ที่ปรากฏอยู่จริงสำหรับ pipeline ที่กำลังดำเนินการ (การค้นพบแบบจำกัดขอบเขต), แต่ละฟิลด์มีfilter_fieldที่แน่นอนget_drop_rules— กฎการดรอป log จาก Last9 Control Planeadd_drop_rule— สร้างกฎการดรอปใหม่เพื่อลดปริมาณ log ที่ต้นทาง
Traces
get_traces— การค้นหา trace แบบ JSON pipeline สำหรับการค้นหาในวงกว้างและการรวมget_service_traces— Traces ตาม trace ID หรือชื่อบริการที่แน่นอน ใช้เมื่อคุณมี trace ID — มันเร็วกว่าget_trace_attributes— แคตตาล็อกแอตทริบิวต์ทั่วโลกใน schema ของ traceget_trace_attributes_for_pipeline— แอตทริบิวต์ที่ปรากฏอยู่จริงสำหรับ pipeline ที่กำลังดำเนินการ (การค้นพบแบบจำกัดขอบเขต), แต่ละแอตทริบิวต์มีfilter_fieldที่แน่นอนget_trace_attribute_values— ค่าที่แตกต่างกันสำหรับแอตทริบิวต์ของ trace, สามารถจำกัดขอบเขตไปยัง pipeline ได้
เหตุการณ์การเปลี่ยนแปลงและการแจ้งเตือน
get_change_events— Deployments, การเปลี่ยนแปลงการตั้งค่า, rollbacks เชื่อมโยงเหตุการณ์กับสิ่งที่เปลี่ยนแปลงget_alert_config— การตั้งค่ากฎการแจ้งเตือน — ค้นหาได้ตามชื่อ, severity, ประเภท, แท็กget_alerts— การแจ้งเตือนที่กำลังทำงานอยู่ภายในช่วงเวลาหนึ่งget_alert_rule_state— สถานะการทำงานในอดีต (1/0) ต่อกฎการแจ้งเตือนในช่วงเวลาหนึ่ง, จัดกลุ่มตามrule_idกรองตามกลุ่มการแจ้งเตือน, ชื่อกฎ, ตัวกรอง label และสถานะได้get_notification_channels— ช่องทางการแจ้งเตือนที่กำหนดค่าไว้ (Slack, PagerDuty, อีเมล, ฯลฯ)
แดชบอร์ดที่กำหนดเอง
list_dashboards— แดชบอร์ดที่กำหนดเองทั้งหมดในองค์กรของคุณ: IDs, ชื่อ, และข้อมูลเมตาget_dashboard— คำจำกัดความของแดชบอร์ดแบบเต็มตาม ID, รวมถึงแผงและการค้นหาcreate_dashboard— สร้างแดชบอร์ดที่กำหนดเองใหม่พร้อมแผง, การค้นหา, และข้อมูลเมตาupdate_dashboard— อัปเดตแดชบอร์ดที่มีอยู่ตาม ID (แดชบอร์ดระบบแบบอ่านอย่างเดียวจะส่งคืนข้อผิดพลาด)delete_dashboard— ลบแดชบอร์ดที่กำหนดเองตาม ID
การแก้ไขชื่อแบบ Fuzzy
did_you_mean— เมื่อผู้ช่วยไม่แน่ใจเกี่ยวกับชื่อเอนทิตี, สิ่งนี้จะส่งคืนรายการที่ใกล้เคียงที่สุดจากแคตตาล็อกของคุณ (services, environments, hosts, databases, K8s deployments/namespaces, jobs) มากถึง 3 ข้อเสนอแนะพร้อมคะแนนความคล้ายคลึง เซิร์ฟเวอร์เรียกสิ่งนี้โดยอัตโนมัติก่อนเครื่องมือส่วนใหญ่เมื่อการค้นหาชื่อส่งคืนค่าว่าง
วิธีการทำงาน
ลิงก์ตรงไปยังทุกการตอบสนอง ทุกเครื่องมือส่งคืนฟิลด์ deep_link — URL โดยตรงไปยังแดชบอร์ด Last9 สำหรับการค้นหาและช่วงเวลานั้นๆ ผู้ช่วยสามารถส่งลิงก์ให้คุณ; คุณคลิกมัน; คุณก็ไปถึงที่นั่น
การแคชแอตทริบิวต์แบบสด เมื่อเริ่มต้น, เซิร์ฟเวอร์จะดึงชื่อแอตทริบิวต์ของ log และ trace จริงจากข้อมูลของคุณและฝังลงในคำอธิบายเครื่องมือ นี่หมายความว่าผู้ช่วย AI รู้ว่ามีฟิลด์ใดบ้างใน schema ของคุณ, ไม่ใช่แค่รายการทั่วไป แคชจะรีเฟรชทุก 2 ชั่วโมง
ผลลัพธ์ขนาดใหญ่แบบแบ่งส่วน get_logs และ get_traces จัดการชุดผลลัพธ์ขนาดใหญ่ผ่านการแบ่งส่วนแทนที่จะตัดทิ้ง ขีดจำกัดเริ่มต้นคือ 5000 รายการสำหรับ logs; กำหนดค่าได้ผ่าน 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 ทำงานในโหมด stateless, ดังนั้นคำขอใดๆ จะถูกให้บริการอย่างอิสระ การ handshake 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(จำนวนเต็ม, ไม่บังคับ): จำนวนข้อยกเว้นสูงสุด ค่าเริ่มต้น: 20lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60start_time_iso/end_time_iso(สตริง, ไม่บังคับ): ช่วงเวลาสัมบูรณ์service_name(สตริง, ไม่บังคับ): กรองตามบริการspan_name(สตริง, ไม่บังคับ): กรองตามชื่อ spanenv(สตริง, ไม่บังคับ): กรองตามสภาพแวดล้อม
get_service_summary
start_time_iso/end_time_iso(สตริง, ไม่บังคับ)env(สตริง, ไม่บังคับ): ค่าเริ่มต้นคือprod
get_service_environments
start_time_iso/end_time_iso(สตริง, ไม่บังคับ)
เครื่องมือ APM อื่นๆ ทั้งหมดต้องการค่า
envใช้""หากค่านี้ส่งกลับค่าว่าง
get_service_performance_details
service_name(สตริง, จำเป็น)lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60start_time_iso/end_time_iso(สตริง, ไม่บังคับ)env(สตริง, ไม่บังคับ): ค่าเริ่มต้นเป็นprod
get_service_operations_summary
service_name(สตริง, จำเป็น)lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60start_time_iso/end_time_iso(สตริง, ไม่บังคับ)env(สตริง, ไม่บังคับ): ค่าเริ่มต้นเป็นprod
get_service_dependency_graph
service_name(สตริง, ไม่บังคับ)lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60start_time_iso/end_time_iso(สตริง, ไม่บังคับ)env(สตริง, ไม่บังคับ): ค่าเริ่มต้นเป็นprod
get_databases
env(สตริง, ไม่บังคับ): กรองตามสภาพแวดล้อม ค่าเริ่มต้น: ทั้งหมดlookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60start_time_iso/end_time_iso(สตริง, ไม่บังคับ)
get_database_slow_queries
db_system(สตริง, ไม่บังคับ): เช่นpostgresql,mysql,mongodb,redishost(สตริง, ไม่บังคับ): โฮสต์ฐานข้อมูล (net_peer_name)service_name(สตริง, ไม่บังคับ): ชื่อบริการที่เรียกใช้env(สตริง, ไม่บังคับ)min_duration_ms(ทศนิยม, ไม่บังคับ): ระยะเวลาคิวรีขั้นต่ำในหน่วยมิลลิวินาทีlookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60start_time_iso/end_time_iso(สตริง, ไม่บังคับ)limit(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 20
get_database_queries
db_system(สตริง, ไม่บังคับ)host(สตริง, ไม่บังคับ)service_name(สตริง, ไม่บังคับ)env(สตริง, ไม่บังคับ)lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60start_time_iso/end_time_iso(สตริง, ไม่บังคับ)limit(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 20
get_database_server_metrics
db_system(สตริง, จำเป็น): เช่นpostgresql,mysql,mongodb,redis,aerospikehost(สตริง, ไม่บังคับ)lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60start_time_iso/end_time_iso(สตริง, ไม่บังคับ)
prometheus_range_query
query(สตริง, จำเป็น): คิวรี PromQLstart_time_iso/end_time_iso(สตริง, ไม่บังคับ): ค่าเริ่มต้นเป็น 60 นาทีล่าสุดlookback_minutes(ทศนิยม, ไม่บังคับ): ค่าเริ่มต้น: 60
prometheus_instant_query
query(สตริง, จำเป็น)time_iso(สตริง, ไม่บังคับ): ค่าเริ่มต้นเป็นเวลาปัจจุบันlookback_minutes(ทศนิยม, ไม่บังคับ)
prometheus_label_values
match_query(สตริง, ไม่บังคับ): ตัวกรอง PromQLlabel(สตริง, จำเป็น): ชื่อป้ายกำกับstart_time_iso/end_time_iso(สตริง, ไม่บังคับ)
prometheus_labels
match_query(สตริง, ไม่บังคับ): ตัวกรอง PromQLstart_time_iso/end_time_iso(สตริง, ไม่บังคับ)
get_logs
logjson_query(อาร์เรย์, จำเป็น): คิวรีไปป์ไลน์ JSONlookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 5start_time_iso/end_time_iso(สตริง, ไม่บังคับ)limit(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้นของเซิร์ฟเวอร์: 5000index(สตริง, ไม่บังคับ):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(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60limit(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 20env(สตริง, ไม่บังคับ)severity_filters(อาร์เรย์, ไม่บังคับ): เช่น["error", "warn"]ตรรกะ ORbody_filters(อาร์เรย์, ไม่บังคับ): เช่น["timeout", "failed"]ตรรกะ ORstart_time_iso/end_time_iso(สตริง, ไม่บังคับ)index(สตริง, ไม่บังคับ)
ประเภทตัวกรองหลายรายการรวมกันด้วย AND แต่ละอาร์เรย์ใช้ OR ภายใน
ใช้ get_logs สำหรับจำนวนรวมกว้างๆ ก่อน; ใช้ get_service_logs หลังจากจำกัดขอบเขตให้แคบลงเหลือบริการ/สภาพแวดล้อม/ดัชนี และชุดตัวอย่างขนาดเล็กเท่านั้น
get_log_attributes
lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 15start_time_iso/end_time_iso(สตริง, ไม่บังคับ)region(สตริง, ไม่บังคับ)index(สตริง, ไม่บังคับ)
get_log_attributes_for_pipeline
pipeline(อาร์เรย์, จำเป็น): ขั้นตอนตัวกรองก่อนหน้าเพื่อกำหนดขอบเขตการค้นพบ เช่น[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}]lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 15start_time_iso/end_time_iso(สตริง, ไม่บังคับ)region(สตริง, ไม่บังคับ)index(สตริง, ไม่บังคับ)
get_drop_rules
ไม่มีพารามิเตอร์
add_drop_rule
name(สตริง, จำเป็น)filters(อาร์เรย์, จำเป็น): แต่ละตัวกรอง:key,value,operator(equals/not_equals),conjunction(and)
get_traces
ใช้สำหรับการค้นหาและการรวมกลุ่มแบบกว้าง สำหรับการค้นหาด้วย trace ID ที่แน่นอน ให้ใช้ get_service_traces
tracejson_query(อาร์เรย์, จำเป็น)start_time_iso/end_time_iso(สตริง, ไม่บังคับ)lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60limit(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 5000
get_service_traces
จำเป็นต้องมีอย่างใดอย่างหนึ่งระหว่าง trace_id หรือ service_name
trace_id(สตริง, ไม่บังคับ): การมองย้อนกลับเริ่มต้น: 72 ชั่วโมงservice_name(สตริง, ไม่บังคับ): การมองย้อนกลับเริ่มต้น: 60 นาทีlookback_minutes(จำนวนเต็ม, ไม่บังคับ)start_time_iso/end_time_iso(สตริง, ไม่บังคับ)limit(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 10env(สตริง, ไม่บังคับ)
get_trace_attributes
lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 15start_time_iso/end_time_iso(สตริง, ไม่บังคับ)region(สตริง, ไม่บังคับ)
get_trace_attributes_for_pipeline
pipeline(อาร์เรย์, จำเป็น): ขั้นตอนตัวกรองก่อนหน้าเพื่อกำหนดขอบเขตการค้นพบ เช่น[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}]lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 15start_time_iso/end_time_iso(สตริง, ไม่บังคับ)region(สตริง, ไม่บังคับ)
get_trace_attribute_values
tag_name(สตริง, จำเป็น): ชื่อแอตทริบิวต์จากget_trace_attributes(เช่นresource_departmentหรือattributes['http.method'])pipeline(อาร์เรย์, ไม่บังคับ): ขั้นตอนตัวกรองก่อนหน้าเพื่อกำหนดขอบเขตค่า; ละเว้นสำหรับค่าส่วนกลางregion(สตริง, ไม่บังคับ)
get_change_events
start_time_iso/end_time_iso(สตริง, ไม่บังคับ)lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60service_name(สตริง, ไม่บังคับ)env(สตริง, ไม่บังคับ)event_name(สตริง, ไม่บังคับ): เรียกใช้โดยไม่มีค่านี้ก่อนเพื่อรับavailable_event_names
get_alert_config
search_term(สตริง, ไม่บังคับ): การค้นหาข้อความอิสระในชื่อ, กลุ่ม, แหล่งข้อมูล, แท็กrule_name(สตริง, ไม่บังคับ)severity(สตริง, ไม่บังคับ)rule_type(สตริง, ไม่บังคับ):staticหรือanomalyalert_group_name/alert_group_type/data_source_name(สตริง, ไม่บังคับ)tags(อาร์เรย์, ไม่บังคับ): ทั้งหมดต้องตรงกัน (ตรรกะ AND)
get_alerts
time_iso(สตริง, ไม่บังคับ): เวลาประเมินผลในรูปแบบ RFC3339window(จำนวนเต็ม, ไม่บังคับ): การมองย้อนกลับในหน่วยวินาที ค่าเริ่มต้น: 900 ช่วง: 60–86400lookback_minutes(จำนวนเต็ม, ไม่บังคับ): ช่วง: 1–1440
get_alert_rule_state
start_time(จำนวนเต็ม, จำเป็น): จุดเริ่มต้นช่วงเวลา Unix epoch (รวม)end_time(จำนวนเต็ม, จำเป็น): จุดสิ้นสุดช่วงเวลา Unix epoch (รวม)step(จำนวนเต็ม, จำเป็น): ความละเอียดในหน่วยวินาทีระหว่างตัวอย่าง จำนวนตัวอย่าง((end_time - start_time) / step + 1)ถูกจำกัดไว้ที่ 100alert_group_id(สตริง, ไม่บังคับ): กรองตาม ID กลุ่มการแจ้งเตือนrule_name(สตริง, ไม่บังคับ): ตัวกรอง regex บนชื่อกฎalert_group_name(สตริง, ไม่บังคับ): ตัวกรอง regex บนชื่อกลุ่มการแจ้งเตือนlabel_filters(สตริง, ไม่บังคับ): ตัวกรองป้ายกำกับkey=valueที่คั่นด้วยเครื่องหมายจุลภาคstate(สตริง, ไม่บังคับ): กรองตามสถานะ (เช่นfiring)
ส่งคืนแผนที่ JSON ของ rule_id -> [{timestamp, is_firing}] การประทับเวลาที่กฎหายไปจากการตอบกลับต้นทางจะถูกรายงานเป็น is_firing=0 — นี่หมายความว่า "ไม่พบว่ากำลังแจ้งเตือน" ไม่ใช่สถานะปกติที่ยืนยันแล้ว
get_notification_channels
ไม่มีพารามิเตอร์ ส่งคืนช่องทางการแจ้งเตือนที่กำหนดค่าทั้งหมด (Slack, PagerDuty, อีเมล, webhooks ฯลฯ)
did_you_mean
query(สตริง, จำเป็น): ชื่อที่จะค้นหา — บางส่วน, สะกดผิด, หรือย่อtype(สตริง, ไม่บังคับ): จำกัดประเภทเอนทิตี:service,environment,host,database,k8s_deployment,k8s_namespace,job
ส่งคืนรายการที่ตรงกันใกล้เคียงที่สุดสูงสุด 3 รายการพร้อมคะแนนความคล้ายคลึง ใช้สิ่งนี้ก่อนการเรียกใช้เครื่องมือใดๆ ที่ชื่อเอนทิตีไม่แน่นอน หากการเรียกก่อนหน้านี้ส่งคืนผลลัพธ์ว่างเปล่า ให้ลองใช้สิ่งนี้ก่อนลองใหม่
list_dashboards
ไม่มีพารามิเตอร์ ส่งคืนแดชบอร์ดที่กำหนดเองทั้งหมดในองค์กรเป็นอาร์เรย์ JSON พร้อม id, name และข้อมูลเมตา
get_dashboard
id(สตริง, จำเป็น): UUID ของแดชบอร์ดregion(สตริง, ไม่บังคับ): ภูมิภาคสำหรับการเติมข้อมูลคิวรีของแผงควบคุม ค่าเริ่มต้นเป็นภูมิภาคแหล่งข้อมูลที่กำหนดค่าไว้
create_dashboard
dashboard(ออบเจ็กต์, จำเป็น): นิยามแดชบอร์ดพร้อมnameและpanels[]แต่ละแผงควบคุมต้องการname,version,layout(x,y,w,h),visualization.typeและqueries[]metadata(ออบเจ็กต์, ไม่บังคับ): ข้อมูลเมตาของแดชบอร์ด — ฟิลด์_categoryและ_type(เช่น{"_category":"custom","_type":"metrics"})
update_dashboard
id(สตริง, จำเป็น): UUID ของแดชบอร์ดที่จะอัปเดตdashboard(ออบเจ็กต์, จำเป็น): เนื้อหาแดชบอร์ดทดแทนทั้งหมด (รูปแบบเดียวกับการสร้าง)metadata(ออบเจ็กต์, ไม่บังคับ): ข้อมูลเมตาทดแทน แดชบอร์ดระบบแบบอ่านอย่างเดียวจะส่งคืนข้อผิดพลาด 403
delete_dashboard
id(สตริง, จำเป็น): UUID ของแดชบอร์ดที่จะลบ ไม่สามารถลบแดชบอร์ดระบบแบบอ่านอย่างเดียวได้
การทดสอบ
ดู TESTING.md สำหรับการตั้งค่าและคำแนะนำการทดสอบการรวมระบบ
