Last9 MCP Server
ทางการนำบริบทการผลิตแบบเรียลไทม์—ล็อก เมตริก และเทรซ—มาสู่สภาพแวดล้อมในเครื่องของคุณได้อย่างราบรื่น เพื่อแก้ไขโค้ดอัตโนมัติได้เร็วขึ้น
เอกสาร
Last9 MCP Server

เอเจนต์ AI ของคุณไม่รู้ว่าอะไรเสียหายในโปรดักชัน นี่คือตัวแก้ไข
Last9 MCP Server เชื่อมต่อ Claude, Cursor, Windsurf และผู้ช่วย AI ที่รองรับ MCP อื่นๆ เข้ากับข้อมูล observability ในโปรดักชันของคุณโดยตรง — ล็อก, เมตริก, เทรซ, ข้อผิดพลาด, การสืบค้นฐานข้อมูล, การแจ้งเตือน และการดีพลอย เอเจนต์จะเลิกเดาและเริ่มอ่านสัญญาณจริง
เริ่มต้นใน 30 วินาที (แบบโฮสต์)
ไม่มีไบนารีให้ติดตั้ง ไม่มีโทเค็นให้จัดการ หนึ่ง 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
ต้องการ 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 ของคุณ
แบบ Self-Hosted (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 |
รับ 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 — รายละเอียด |
การกำหนดค่า 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>"
}
}
}
}
เส้นทาง NPM ง่ายกว่าบน Windows — ไม่ต้องจัดการพาธ
ตัวแปรสภาพแวดล้อม
| ตัวแปร | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
LAST9_REFRESH_TOKEN | (จำเป็น) | Refresh token จาก API Access |
LAST9_DATASOURCE | ค่าเริ่มต้นของ org | ชื่อ Datasource/คลัสเตอร์ — มีประโยชน์เมื่อคุณมีหลายคลัสเตอร์ Levitate |
LAST9_API_HOST | app.last9.io | แทนที่โฮสต์ API |
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 (เฉพาะเมื่อเปิดใช้งาน telemetry) |
OTEL_EXPORTER_OTLP_HEADERS | — | ส่วนหัวการรับรองความถูกต้อง OTLP (เฉพาะเมื่อเปิดใช้งาน telemetry) |
สิ่งที่ทำได้
สุขภาพบริการ
get_service_summary— ปริมาณงาน, อัตราข้อผิดพลาด, เวลาตอบสนอง p95 ในทุกบริการget_service_environments— สภาพแวดล้อมที่พร้อมใช้งานสำหรับบริการของคุณ รันสิ่งนี้ก่อน — เครื่องมือ APM อื่นๆ ต้องการenvจากที่นี่get_service_performance_details— รายละเอียดทั้งหมด: ปริมาณงาน, อัตราข้อผิดพลาด, p50/p90/p95/ค่าเฉลี่ย/สูงสุด, apdex, ความพร้อมใช้งานget_service_operations_summary— การดำเนินการที่จัดกลุ่มตามปลายทาง HTTP, การเรียก DB, การส่งข้อความ, ไคลเอนต์ HTTPget_service_dependency_graph— แผนที่การพึ่งพาพร้อมปริมาณงาน, เวลาแฝง และอัตราข้อผิดพลาดสำหรับ upstream/downstream/infraget_exceptions— ข้อผิดพลาดฝั่งเซิร์ฟเวอร์พร้อมตัวกรองบริการและ span
การสังเกตฐานข้อมูล
สี่เครื่องมือที่เข้าถึงประสิทธิภาพฐานข้อมูลของคุณโดยตรง ซึ่งได้มาจาก span ของ OpenTelemetry trace ไม่ต้องใช้เครื่องมือเพิ่มเติมหากคุณใช้ OTel อยู่แล้ว
get_databases— ค้นพบฐานข้อมูลทั้งหมดในโครงสร้างพื้นฐานของคุณ: ประเภท DB, โฮสต์, ปริมาณงาน (การสืบค้น/นาที), เวลาแฝง p95, อัตราข้อผิดพลาด, จำนวนบริการที่พึ่งพาget_database_slow_queries— การดำเนินการสืบค้นที่ช้าที่สุดจริง เรียงตามระยะเวลา พร้อม trace ID สำหรับเจาะลึก trace ทั้งหมดget_database_queries— รูปแบบการสืบค้นและการรวม: ความถี่ในการรันการสืบค้น, ระยะเวลาเฉลี่ย/p95, อัตราข้อผิดพลาดget_database_server_metrics— เมตริกฝั่งเซิร์ฟเวอร์จากโฮสต์ DB เอง (CPU, การเชื่อมต่อ, อัตราการเข้าถึงบัฟเฟอร์ — ขึ้นอยู่กับระบบ DB ของคุณ)
รองรับ PostgreSQL, MySQL, MongoDB, Redis, Aerospike และอื่นๆ ที่มี trace OTel พร้อมแอตทริบิวต์ db_system
Prometheus / PromQL
prometheus_range_query— การสืบค้นช่วง PromQL บนเมตริกใดๆprometheus_instant_query— การสืบค้นทันที; ใช้ฟังก์ชันการรวมเช่นavg_over_time,sum_over_timeprometheus_label_values— ค่าป้ายกำกับสำหรับซีรีส์ที่กำหนดprometheus_labels— ป้ายกำกับทั้งหมดที่พร้อมใช้งานสำหรับซีรีส์
ชี้สิ่งเหล่านี้ไปยัง datasource/คลัสเตอร์อื่นที่ไม่ใช่ค่าเริ่มต้นโดยตั้งค่า LAST9_DATASOURCE
ล็อก
get_logs— การสืบค้นล็อกแบบไปป์ไลน์ JSON เต็มรูปแบบ (การรวม, ตัวกรอง, การแยกฟิลด์)get_service_logs— บรรทัดล็อกดิบสำหรับบริการ กรองตามความรุนแรงและเนื้อหาget_log_attributes— แคตตาล็อกแอตทริบิวต์ทั่วโลกในสคีมาล็อกสำหรับช่วงเวลาหนึ่งget_log_attributes_for_pipeline— ฟิลด์ล็อกที่มีอยู่จริงสำหรับไปป์ไลน์ที่กำลังดำเนินการ (การค้นพบแบบจำกัดขอบเขต) แต่ละฟิลด์มีfilter_fieldที่แน่นอนget_drop_rules— กฎการดรอปล็อกจาก Last9 Control Planeadd_drop_rule— สร้างกฎการดรอปใหม่เพื่อลดปริมาณล็อกที่ต้นทาง
เทรซ
get_traces— การสืบค้นเทรซแบบไปป์ไลน์ JSON สำหรับการค้นหาและการรวมในวงกว้างget_service_traces— เทรซตาม trace ID หรือชื่อบริการที่แน่นอน ใช้เมื่อคุณมี trace ID — มันเร็วกว่าget_trace_attributes— แคตตาล็อกแอตทริบิวต์ทั่วโลกในสคีมาเทรซget_trace_attributes_for_pipeline— แอตทริบิวต์ที่มีอยู่จริงสำหรับไปป์ไลน์ที่กำลังดำเนินการ (การค้นพบแบบจำกัดขอบเขต) แต่ละแอตทริบิวต์มีfilter_fieldที่แน่นอนget_trace_attribute_values— ค่าที่แตกต่างสำหรับแอตทริบิวต์เทรซ อาจจำกัดขอบเขตไปยังไปป์ไลน์
เหตุการณ์การเปลี่ยนแปลงและการแจ้งเตือน
get_change_events— การดีพลอย, การเปลี่ยนแปลงการกำหนดค่า, การย้อนกลับ เชื่อมโยงเหตุการณ์กับสิ่งที่เปลี่ยนแปลงget_alert_config— การกำหนดค่ากฎการแจ้งเตือน — ค้นหาได้ตามชื่อ, ความรุนแรง, ประเภท, แท็กget_alerts— การแจ้งเตือนที่กำลังทำงานอยู่ภายในช่วงเวลาหนึ่งget_alert_rule_state— สถานะการทำงานในอดีต (1/0) ต่อกฎการแจ้งเตือนในช่วงเวลาหนึ่ง จัดกลุ่มตามrule_idกรองตามกลุ่มการแจ้งเตือน, ชื่อกฎ, ตัวกรองป้ายกำกับ และสถานะget_notification_channels— ช่องทางการแจ้งเตือนที่กำหนดค่าไว้ (Slack, PagerDuty, อีเมล ฯลฯ)
แดชบอร์ดที่กำหนดเอง
list_dashboards— แดชบอร์ดที่กำหนดเองทั้งหมดในองค์กรของคุณ: ID, ชื่อ และเมตาดาตาget_dashboard— คำจำกัดความแดชบอร์ดแบบเต็มตาม ID รวมถึงแผงและการสืบค้นcreate_dashboard— สร้างแดชบอร์ดที่กำหนดเองใหม่พร้อมแผง, การสืบค้น และเมตาดาตาupdate_dashboard— อัปเดตแดชบอร์ดที่มีอยู่ตาม ID (แดชบอร์ดระบบแบบอ่านอย่างเดียวจะส่งคืนข้อผิดพลาด)delete_dashboard— ลบแดชบอร์ดที่กำหนดเองตาม ID
การแก้ไขชื่อแบบคลุมเครือ
did_you_mean— เมื่อเอเจนต์ไม่แน่ใจเกี่ยวกับชื่อเอนทิตี สิ่งนี้จะส่งคืนการจับคู่ที่ใกล้เคียงที่สุดจากแคตตาล็อกของคุณ (บริการ, สภาพแวดล้อม, โฮสต์, ฐานข้อมูล, การดีพลอย/เนมสเปซ K8s, งาน) สูงสุด 3 ข้อเสนอแนะพร้อมคะแนนความคล้ายคลึง เซิร์ฟเวอร์เรียกสิ่งนี้โดยอัตโนมัติก่อนเครื่องมือส่วนใหญ่เมื่อการค้นหาชื่อส่งคืนค่าว่าง
วิธีการทำงาน
ลิงก์ลึกในทุกการตอบสนอง ทุกเครื่องมือส่งคืนฟิลด์ deep_link — URL โดยตรงไปยังแดชบอร์ด Last9 สำหรับการสืบค้นและช่วงเวลานั้นๆ เอเจนต์สามารถส่งลิงก์ให้คุณ คุณคลิกมัน คุณก็ไปถึงที่นั่น
การแคชแอตทริบิวต์แบบสด เมื่อเริ่มต้น เซิร์ฟเวอร์จะดึงชื่อแอตทริบิวต์ล็อกและเทรซจริงจากข้อมูลของคุณและฝังลงในคำอธิบายเครื่องมือ นี่หมายความว่าผู้ช่วย AI รู้ว่ามีฟิลด์ใดบ้างในสคีมาของคุณ ไม่ใช่แค่รายการทั่วไป แคชรีเฟรชทุก 2 ชั่วโมง
ผลลัพธ์ขนาดใหญ่แบบแบ่งส่วน 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
MCP Streamable HTTP ต้องการการจับมือเริ่มต้นก่อน อย่าตั้งค่า Mcp-Session-Id ในคำขอแรก
# 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
}
}
}'
สร้างจากซอร์ส
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(สตริง, ไม่บังคับ): กรองตามชื่อ spandeployment_environment(สตริง, ไม่บังคับ): กรองตามสภาพแวดล้อม
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(สตริง, จำเป็น)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(สตริง, ไม่บังคับ)environment(สตริง, ไม่บังคับ)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 สำหรับการตั้งค่าและคำแนะนำการทดสอบการรวมระบบ
