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

last9 mcp demo

ผู้ช่วย 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

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

  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รายละเอียด
การตั้งค่า 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_HOSTapp.last9.ioเขียนทับ API host
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 collector (เฉพาะเมื่อเปิดใช้งาน telemetry)
OTEL_EXPORTER_OTLP_HEADERSOTLP 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 clients
  • get_service_dependency_graph — แผนที่การพึ่งพาพร้อมปริมาณงาน, เวลาแฝง, และอัตราข้อผิดพลาดสำหรับ upstream/downstream/infra
  • get_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_time
  • prometheus_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 Plane
  • add_drop_rule — สร้างกฎการดรอปใหม่เพื่อลดปริมาณ log ที่ต้นทาง

Traces

  • get_traces — การค้นหา trace แบบ JSON pipeline สำหรับการค้นหาในวงกว้างและการรวม
  • get_service_traces — Traces ตาม trace ID หรือชื่อบริการที่แน่นอน ใช้เมื่อคุณมี trace ID — มันเร็วกว่า
  • get_trace_attributes — แคตตาล็อกแอตทริบิวต์ทั่วโลกใน schema ของ trace
  • get_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 (จำนวนเต็ม, ไม่บังคับ): จำนวนข้อยกเว้นสูงสุด ค่าเริ่มต้น: 20
  • lookback_minutes (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 60
  • start_time_iso / end_time_iso (สตริง, ไม่บังคับ): ช่วงเวลาสัมบูรณ์
  • service_name (สตริง, ไม่บังคับ): กรองตามบริการ
  • span_name (สตริง, ไม่บังคับ): กรองตามชื่อ span
  • env (สตริง, ไม่บังคับ): กรองตามสภาพแวดล้อม

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_name (สตริง, จำเป็น)
  • 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_name (สตริง, ไม่บังคับ)
  • env (สตริง, ไม่บังคับ)
  • 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