Last9 MCP Server

ทางการ

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

เอกสาร

Last9 MCP Server

last9 mcp demo

เอเจนต์ 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

เฉพาะ ผู้ดูแลระบบ เท่านั้นที่สร้างโทเค็นได้

  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ห่อใน { "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_HOSTapp.last9.ioแทนที่โฮสต์ API
LAST9_MAX_GET_LOGS_ENTRIES5000จำนวนรายการสูงสุดสำหรับคำขอ get_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 (เฉพาะเมื่อเปิดใช้งาน 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, การส่งข้อความ, ไคลเอนต์ HTTP
  • get_service_dependency_graph — แผนที่การพึ่งพาพร้อมปริมาณงาน, เวลาแฝง และอัตราข้อผิดพลาดสำหรับ upstream/downstream/infra
  • get_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_time
  • prometheus_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 Plane
  • add_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 (จำนวนเต็ม, ไม่บังคับ): ข้อผิดพลาดสูงสุด ค่าเริ่มต้น: 20
  • lookback_minutes (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60
  • start_time_iso / end_time_iso (สตริง, ไม่บังคับ): ช่วงเวลาสัมบูรณ์
  • service_name (สตริง, ไม่บังคับ): กรองตามบริการ
  • span_name (สตริง, ไม่บังคับ): กรองตามชื่อ span
  • deployment_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 (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 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_databases

  • env (สตริง, ไม่บังคับ): กรองตามสภาพแวดล้อม ค่าเริ่มต้น: ทั้งหมด
  • lookback_minutes (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60
  • 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 (สตริง, จำเป็น)
  • 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

ไม่มีพารามิเตอร์

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 (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 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 (อาร์เรย์, ไม่บังคับ): ขั้นตอนตัวกรองก่อนหน้าเพื่อกำหนดขอบเขตค่า; ละเว้นสำหรับค่าส่วนกลาง
  • region (สตริง, ไม่บังคับ)

get_change_events

  • start_time_iso / end_time_iso (สตริง, ไม่บังคับ)
  • lookback_minutes (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60
  • service (สตริง, ไม่บังคับ)
  • environment (สตริง, ไม่บังคับ)
  • event_name (สตริง, ไม่บังคับ): เรียกโดยไม่มีค่านี้ก่อนเพื่อรับ available_event_names

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 (สตริง, ไม่บังคับ): ตัวกรอง 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 สำหรับการตั้งค่าและคำแนะนำการทดสอบการรวมระบบ


MseeP.ai Security Assessment Badge