Last9

ทางการ

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

คุณทำอะไรได้บ้างด้วย Last9 MCP?

ขอให้ผู้ช่วยของคุณตรวจสอบเหตุการณ์ในการผลิตโดยใช้ล็อกสด ร่องรอย และเมตริกจาก Last9

  • จัดอันดับความสมบูรณ์ของบริการ — ใช้ get_service_summary เพื่อดูจำนวนคำขอ ปริมาณงาน และข้อผิดพลาด 4xx/5xx ทั่วทั้งระบบของคุณ
  • ค้นหาคิวรีฐานข้อมูลที่ช้า — ใช้ get_database_slow_queries เพื่อดึงรายการคิวรีที่ช้าที่สุดจริงพร้อม trace ID เพื่อเจาะลึก
  • ดึงล็อกบริการ — ใช้ get_service_logs เพื่อดึงบรรทัดล็อกดิบที่กรองตามระดับความรุนแรงและเนื้อหาของ body
  • ติดตามคำขอเดียว — ใช้ get_trace_waterfall เพื่อดู waterfall แบบ parent/child สำหรับ trace ID ที่แน่นอน
  • ตรวจสอบสถานะการแจ้งเตือน — ใช้ get_alert_rule_state เพื่อดูประวัติการ trigger ตามกฎการแจ้งเตือนแต่ละรายการในช่วงเวลาที่กำหนด
  • จัดการแดชบอร์ด — ใช้ create_dashboard เพื่อสร้างแดชบอร์ดที่กำหนดเองด้วยแผงและคิวรี

เอกสาร

Last9 MCP Server

last9 mcp demo

เอเจนต์ AI ของคุณไม่รู้ว่าอะไรผิดปกติในระบบ production แต่สิ่งนี้จะแก้ปัญหานั้น

Last9 MCP Server เชื่อมต่อ Claude, Cursor, Windsurf และผู้ช่วย AI อื่น ๆ ที่รองรับ MCP เข้ากับข้อมูล Observability ใน production ของคุณโดยตรง ไม่ว่าจะเป็น logs, metrics, traces, exceptions, database queries, alerts และ deployments เอเจนต์จะหยุดคาดเดาและเริ่มอ่านสัญญาณจริงแทน


เริ่มต้นใน 30 วินาที (โฮสต์ให้แล้ว)

ไม่ต้องติดตั้ง binary ไม่ต้องจัดการ tokens แค่ 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, ยืนยันตัวตน

ต้องมีสิทธิ์ admin ในองค์กร Claude ของคุณ


Self-Hosted (STDIO)

ใช้เมื่อ MCP client ของคุณไม่รองรับ 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

Binary releases (Windows / manual):

ดาวน์โหลดจาก GitHub Releases:

PlatformArchive
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

มีเฉพาะ admin ที่สามารถสร้าง tokens ได้

  1. ไปที่ API Access
  2. คลิก Generate Token ด้วยสิทธิ์เขียน (Write)
  3. คัดลอก

การกำหนดค่า Client

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>"
      }
    }
  }
}

จะวางโค้ดนี้ที่ไหน:

Clientตำแหน่ง
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 config
{
  "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 — ไม่ต้องจัดการพาธ

ตัวแปรสภาพแวดล้อม

Variableค่าเริ่มต้นคำอธิบาย
LAST9_REFRESH_TOKEN(จำเป็น)Refresh token จาก API Access
LAST9_DATASOURCEค่าเริ่มต้นของ orgชื่อ datasource/cluster — มีประโยชน์เมื่อคุณมี Levitate clusters หลายตัว
LAST9_API_HOSTapp.last9.ioใช้แทนค่า API host
LAST9_TOOLSETSเครื่องมือทั้งหมดชุดเครื่องมือที่เปิดใช้งาน คั่นด้วยเครื่องหมายจุลภาค (logs, traces, metrics, alerts, dashboards, investigate, all). ชื่ออื่น: LAST9_MCP_TOOLSETS
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_HEADERSส่วนหัวการตรวจสอบสิทธิ์ OTLP (เฉพาะเมื่อเปิดใช้งาน telemetry)

สิ่งที่ทำได้

สุขภาพบริการ (Service Health)

  • get_service_summary — แถวของ fleet (service, env) ที่จัดอันดับ: interval request_count, throughput_rpm, HTTP 4xx/5xx counts และ gRPC error counts
  • get_service_environments — สภาพแวดล้อมที่พร้อมใช้งานสำหรับบริการของคุณ รันสิ่งนี้ก่อน — เครื่องมือ APM อื่น ๆ ต้องใช้ env จากที่นี่
  • get_service_performance_details — รายละเอียดทั้งหมด: throughput, error rate, p50/p90/p95/avg/max, apdex, availability
  • get_service_operations_summary — การดำเนินการที่จัดกลุ่มตาม HTTP endpoints, การเรียก DB, การส่งข้อความ, HTTP clients
  • get_service_dependency_graph — แผนผังการขึ้นต่อกันพร้อม throughput, latency และ error rates สำหรับ upstream/downstream/infra
  • get_apm_service_deviations — เปรียบเทียบหน้าต่างปัจจุบันกับเส้นฐานระยะเวลาเท่ากัน: regressions/improvements, การกระทบยอด Apdex และผลลัพธ์สุดท้าย (fleet หรือบริการเดียว)
  • get_exceptions — ข้อยกเว้นฝั่งเซิร์ฟเวอร์พร้อมตัวกรองบริการและสแปน

การตรวจสอบฐานข้อมูล

เครื่องมือสี่ตัวที่มองตรงไปที่ประสิทธิภาพฐานข้อมูลของคุณ ซึ่งได้จาก OpenTelemetry trace spans ไม่ต้องติดตั้งเครื่องมือเพิ่มเติมหากคุณใช้ OTel อยู่แล้ว

  • get_databases — ค้นพบฐานข้อมูลทั้งหมดในโครงสร้างพื้นฐานของคุณ: ประเภท DB, host, throughput (queries/min), p95 latency, error rate, จำนวนบริการที่ขึ้นต่อกัน
  • get_database_slow_queries — การเรียก query ที่ช้าที่สุดจริง โดยเรียงตามระยะเวลา พร้อม trace IDs สำหรับเจาะลึกเข้าไปใน trace เต็ม
  • get_database_queries — รูปแบบและผลรวมของ query: ความถี่ที่ query ทำงาน, ระยะเวลาเฉลี่ย/p95, error rate
  • get_database_server_metrics — เมตริกฝั่งเซิร์ฟเวอร์จากโฮสต์ DB เอง (CPU, การเชื่อมต่อ, buffer hit rates — ขึ้นอยู่กับระบบ DB ของคุณ)

รองรับ PostgreSQL, MySQL, MongoDB, Redis, Aerospike และสิ่งอื่นใดที่ OTel ติดตามด้วยแอตทริบิวต์ db_system

Prometheus / PromQL

  • prometheus_range_query — การสอบถามช่วง PromQL เหนือเมตริกใด ๆ
  • prometheus_instant_query — การสอบถามแบบทันที; ใช้ฟังก์ชัน rollup เช่น avg_over_time, sum_over_time
  • prometheus_label_values — ค่าป้ายกำกับสำหรับซีรีส์ที่กำหนด
  • prometheus_labels — ป้ายกำกับทั้งหมดที่มีสำหรับซีรีส์

ชี้ไปที่ datasource/cluster ที่แตกต่างจากค่าเริ่มต้นโดยตั้งค่า LAST9_DATASOURCE.

Logs

  • get_logs — การสอบถาม log แบบ JSON pipeline เต็มรูปแบบ (การรวม, ตัวกรอง, การแยกฟิลด์)
  • get_service_logs — บรรทัด log ดิบสำหรับบริการ กรองได้ตามระดับความรุนแรงและเนื้อหาของ 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_trace_attribute_deviations — จัดอันดับค่าแอตทริบิวต์ที่ต่างกันระหว่างกลุ่มสแปนสองกลุ่มที่จำกัด (ช้า vs เร็ว, error vs non-error หรือสองช่วงเวลา) เป็นสหสัมพันธ์ ไม่ใช่สาเหตุ
  • get_trace_waterfall — trace เดียวที่แน่นอนเป็นน้ำตก parent/child พร้อม interval-union self-time, สแปนที่ช้าที่สุด และคำเตือนจากกราฟ

เหตุการณ์การเปลี่ยนแปลงและการแจ้งเตือน

  • get_change_events — การ deploy, การเปลี่ยนแปลงการกำหนดค่า, การย้อนกลับ เชื่อมโยงเหตุการณ์กับสิ่งที่เปลี่ยนแปลง
  • get_alert_config — การกำหนดค่ากฎการแจ้งเตือน — ค้นหาตามชื่อ, ความรุนแรง, ประเภท, แท็ก
  • get_alerts — การแจ้งเตือนที่กำลังทำงานอยู่ในช่วงเวลา
  • get_alert_rule_state — สถานะการทำงานในอดีต (1/0) ต่อกฎการแจ้งเตือนตลอดช่วงเวลา จัดกลุ่มตาม rule_id. กรองได้ตามกลุ่มการแจ้งเตือน, ชื่อกฎ, ตัวกรองป้ายกำกับ และสถานะ
  • get_notification_channels — ช่องทางการแจ้งเตือนที่กำหนดค่าไว้ (Slack, PagerDuty, email ฯลฯ)

แดชบอร์ดที่กำหนดเอง

  • list_dashboards — แดชบอร์ดที่กำหนดเองทั้งหมดในองค์กรของคุณ: IDs, ชื่อ และ metadata
  • get_dashboard — คำจำกัดความแดชบอร์ดเต็มรูปแบบตาม ID รวมถึงแผงและการสอบถาม
  • create_dashboard — สร้างแดชบอร์ดที่กำหนดเองใหม่พร้อมแผง การสอบถาม และ metadata
  • update_dashboard — อัปเดตแดชบอร์ดที่มีอยู่ตาม ID (แดชบอร์ดระบบแบบอ่านอย่างเดียวจะคืนค่าข้อผิดพลาด)
  • delete_dashboard — ลบแดชบอร์ดที่กำหนดเองตาม ID
  • list_dashboard_snapshots — สแนปช็อตแบบจุดเวลาที่คงที่สำหรับแดชบอร์ด (เฉพาะ metadata)
  • get_dashboard_snapshot — สแนปช็อตเต็มรูปแบบรวมถึงข้อมูลแผงสำหรับ RCA / มุมมองที่แชร์ได้
  • delete_dashboard_snapshot — ลบสแนปช็อตที่คงที่ตาม ID

การแก้ไขชื่อแบบคลุมเครือ

  • did_you_mean — เมื่อเอเจนต์ไม่แน่ใจเกี่ยวกับชื่อเอนทิตี เครื่องมือนี้จะคืนการจับคู่ที่ใกล้เคียงที่สุดจากแคตตาล็อกของคุณ (บริการ, สภาพแวดล้อม, โฮสต์, ฐานข้อมูล, K8s deployments/namespaces, jobs) สูงสุด 3 ข้อเสนอแนะพร้อมคะแนนความคล้ายคลึง เซิร์ฟเวอร์เรียกสิ่งนี้โดยอัตโนมัติก่อนเครื่องมือส่วนใหญ่เมื่อการค้นหาชื่อคืนค่าว่าง

วิธีการทำงาน

Deep links ในทุกคำตอบ ทุกเครื่องมือคืนฟิลด์ deep_link — URL โดยตรงไปยังแดชบอร์ด Last9 สำหรับการสอบถามและช่วงเวลานั้น ๆ เอเจนต์สามารถส่งลิงก์ให้คุณ คุณคลิก และไปถึงที่นั่น

Toolsets โดยค่าเริ่มต้นเซิร์ฟเวอร์จะแสดงเครื่องมือทั้งหมด โฮสต์อัตโนมัติที่ต้องการเฉพาะการตรวจสอบ (logs/traces/metrics) สามารถตั้งค่า LAST9_TOOLSETS=investigate (หรือส่ง --toolsets=investigate) เพื่อให้ tools/list เล็กโดยไม่ต้องปิดใช้งานจำนวนมากฝั่ง client ชุดแพ็กที่ตั้งชื่อ: logs, traces, metrics, alerts, dashboards, investigate, all. ชื่อที่ไม่รู้จักจะล้มเหลวทันที แพ็ก metrics เพียงอย่างเดียว ไม่ รวม list_datasources หรือ did_you_mean — ใช้ investigate (หรือรวม toolsets) เมื่อคุณต้องการตัวช่วยการค้นพบเหล่านั้น

ทรัพยากรอ้างอิงเครื่องมือ คู่มือ logjson/tracejson/service-logs/metrics ยาวเป็นทรัพยากร MCP (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics) ไม่ใช่ข้อความคำอธิบายเครื่องมือที่เปิดตลอดเวลา กฎการสอบถามที่สำคัญยังคงอยู่ในคำอธิบายเครื่องมือเพื่อให้เอเจนต์ที่ไม่เคยเรียก resources/read ยังได้รับแนวทางสร้างที่ถูกต้อง ค้นพบฟิลด์เฉพาะของ org ด้วย get_log_attributes / get_log_attributes_for_pipeline (และเทียบเท่า trace) — ไม่ถูกฉีดเข้าไปในคำอธิบาย

การแบ่งผลลัพธ์ขนาดใหญ่เป็นชิ้น 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

ตัวจัดการ HTTP แบบสตรีมทำงานในโหมด ไร้สถานะ (stateless) ดังนั้นคำขอแต่ละรายการจะถูกให้บริการอย่างอิสระ การจับมือแบบ 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 (สตริง, ไม่บังคับ): กรองตามชื่อสแปน
  • env (สตริง, ไม่บังคับ): กรองตามสภาพแวดล้อม

get_service_summary

  • start_time_iso / end_time_iso (สตริง, ไม่บังคับ)
  • env (สตริง, ไม่บังคับ): regex ของ PromQL ค่าเริ่มต้นคือ .* การจับคู่แบบตรงทั้งหมดต้องใช้เครื่องหมายยึด (เช่น ^prod$)
  • sort_by (สตริง, ไม่บังคับ): request_count (ค่าเริ่มต้น), throughput_rpm, http_4xx_count, http_5xx_count หรือ grpc_error_count
  • limit (จำนวนเต็ม, ไม่บังคับ): จำนวนแถวที่จัดอันดับสูงสุด ละเว้นหรือ 0 หมายถึง 10 ค่าที่มากกว่า 100 จะถูกจำกัดที่ 100

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_apm_service_deviations

  • service_name (สตริง, ไม่บังคับ): ละเว้นสำหรับขอบเขตฝูงบริการ ให้ระบุสำหรับบริการเดียวและความสัมพันธ์ของการดำเนินการ
  • lookback_minutes (จำนวนเต็ม, ไม่บังคับ): หน้าต่างเวลาปัจจุบัน ค่าเริ่มต้น: 60
  • start_time_iso / end_time_iso (สตริง, ไม่บังคับ): หน้าต่างเวลาปัจจุบันที่ระบุชัดเจน
  • baseline_start_time_iso / baseline_end_time_iso (สตริง, ไม่บังคับ): เส้นพื้นฐานที่ระบุชัดเจน ค่าเริ่มต้นคือหน้าต่างเวลาที่มีความยาวเท่ากันซึ่งอยู่ก่อนหน้าทันที
  • datasource (สตริง, ไม่บังคับ): จำกัดการเปรียบเทียบให้เหลือแหล่งข้อมูลเดียว
  • env (สตริง, ไม่บังคับ): ค่าเริ่มต้นคือ prod
  • max_services / max_operations (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น 10, สูงสุด 10 ต่อรายการ

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

ไม่มีพารามิเตอร์ แสดงรายการกฎการละทิ้งผ่าน GET /otel_settings/drop?region=...

add_drop_rule

  • name (สตริง, จำเป็น)
  • filters (อาร์เรย์, จำเป็น): ตัวกรองแต่ละรายการ: key, value, operator (equals/not_equals), conjunction (and)
  • คีย์ตัวกรองต้องใช้ attributes["key_name"] หรือ resource.attributes["key_name"] (จำเป็นโดย Last9 API)
  • สร้างกฎผ่าน POST /otel_settings/drop?region=...&cluster_id=...

get_traces

ใช้สำหรับการค้นหาและการรวมแบบกว้าง สำหรับการค้นหา 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_trace_attribute_deviations

  • comparison_mode (สตริง, จำเป็น): latency, errors หรือ time
  • service_name (สตริง, จำเป็น)
  • environment (สตริง, จำเป็น): ค่า deployment.environment ที่ตรงทั้งหมด
  • operation (สตริง, ไม่บังคับ)
  • filters (อาร์เรย์, ไม่บังคับ): เงื่อนไขตัวกรอง JSON ของเทรซ
  • candidate_attributes (อาร์เรย์, ไม่บังคับ): สูงสุด 8; ละเว้นสำหรับการค้นพบแบบมีขอบเขต
  • latency_threshold_ms (ตัวเลข, ไม่บังคับ): จำเป็นสำหรับโหมด latency; ถูกปฏิเสธสำหรับโหมดอื่น
  • start_time_iso / end_time_iso (สตริง, ไม่บังคับ)
  • lookback_minutes (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 15 สูงสุด: 15
  • baseline_start_time_iso / baseline_end_time_iso (สตริง, ไม่บังคับ): จำเป็นสำหรับโหมด time; ไม่ทับซ้อนกันและมีความยาวเท่ากับหน้าต่างเป้าหมาย
  • minimum_cohort_size (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 100 ขั้นต่ำ: 20
  • minimum_value_support (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 20 ขั้นต่ำ: 10
  • limit (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 10 สูงสุด: 10

ต้องเปิดใช้งานความสามารถของแบ็กเอนด์คู่หู

get_trace_waterfall

  • trace_id (สตริง, จำเป็น)
  • environment (สตริง, ไม่บังคับ)
  • start_time_iso / end_time_iso (สตริง, ไม่บังคับ)
  • lookback_minutes (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 4320 (72 ชั่วโมง)
  • selected_span_id (สตริง, ไม่บังคับ): คืนค่าแอตทริบิวต์ เหตุการณ์ และลิงก์สำหรับสแปนนั้นเท่านั้น
  • max_spans (จำนวนเต็ม, ไม่บังคับ): ค่าเริ่มต้น: 500 สูงสุด: 1000

คืนค่าซอง investigation-evidence/v1; น้ำตกอยู่ภายใต้ data

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 (string, ไม่บังคับ): ค้นหาข้อความอิสระในชื่อ กลุ่ม แหล่งข้อมูล และแท็ก
  • rule_name (string, ไม่บังคับ)
  • severity (string, ไม่บังคับ)
  • rule_type (string, ไม่บังคับ): static หรือ anomaly
  • alert_group_name / alert_group_type / data_source_name (string, ไม่บังคับ)
  • tags (array, ไม่บังคับ): ทั้งหมดต้องตรงกัน (ตรรกะ AND)

get_alerts

  • time_iso (string, ไม่บังคับ): เวลาประเมินในรูปแบบ RFC3339
  • window (integer, ไม่บังคับ): ระยะเวลาย้อนหลังเป็นวินาที ค่าเริ่มต้น: 900 ช่วง: 60–86400
  • lookback_minutes (integer, ไม่บังคับ): ช่วง: 1–1440

get_alert_rule_state

  • start_time (integer, จำเป็น): จุดเริ่มต้น Unix epoch ของช่วง (รวม)
  • end_time (integer, จำเป็น): จุดสิ้นสุด Unix epoch ของช่วง (รวม)
  • step (integer, จำเป็น): ความละเอียดเป็นวินาทีระหว่างตัวอย่าง จำนวนตัวอย่าง ((end_time - start_time) / step + 1) จำกัดที่ 100
  • alert_group_id (string, ไม่บังคับ): กรองตาม ID กลุ่มการแจ้งเตือน
  • rule_name (string, ไม่บังคับ): กรองด้วย regex บนชื่อกฎ
  • alert_group_name (string, ไม่บังคับ): กรองด้วย regex บนชื่อกลุ่มการแจ้งเตือน
  • label_filters (string, ไม่บังคับ): ตัวกรองป้ายกำกับ key=value คั่นด้วยเครื่องหมายจุลภาค
  • state (string, ไม่บังคับ): กรองตามสถานะ (เช่น firing)

คืนค่าแผนที่ JSON ของ rule_id -> [{timestamp, is_firing}] เวลาประทับที่กฎไม่ปรากฏในการตอบกลับจากต้นทางจะรายงานเป็น is_firing=0 — หมายความว่า "ไม่พบว่ากำลังทำงาน" ไม่ใช่สถานะปกติที่ยืนยันแล้ว

get_notification_channels

ไม่มีพารามิเตอร์ คืนค่าช่องทางการแจ้งเตือนที่กำหนดค่าทั้งหมด (Slack, PagerDuty, อีเมล, webhooks ฯลฯ)

did_you_mean

  • query (string, จำเป็น): ชื่อที่ต้องการค้นหา — บางส่วน สะกดผิด หรือย่อ
  • type (string, ไม่บังคับ): จำกัดประเภทเอนทิตี: service, environment, host, database, k8s_deployment, k8s_namespace, job

คืนค่าผลลัพธ์ที่ใกล้เคียงที่สุดสูงสุด 3 รายการพร้อมคะแนนความคล้ายคลึง ใช้ก่อนการเรียกเครื่องมือใดๆ เมื่อชื่อเอนทิตีไม่แน่นอน หากการเรียกก่อนหน้านี้คืนค่าผลลัพธ์ว่าง ให้ลองใช้ก่อนลองใหม่

list_dashboards

ไม่มีพารามิเตอร์ คืนค่าแดชบอร์ดที่กำหนดเองทั้งหมดในองค์กรเป็นอาร์เรย์ JSON พร้อม id, name และข้อมูลเมตา

get_dashboard

  • id (string, จำเป็น): UUID ของแดชบอร์ด
  • region (string, ไม่บังคับ): ภูมิภาคสำหรับการเติมข้อมูลคำสั่งค้นหาของแผง ค่าเริ่มต้นคือภูมิภาคแหล่งข้อมูลที่กำหนดค่าไว้

create_dashboard

  • dashboard (object, จำเป็น): คำนิยามแดชบอร์ดพร้อม name และ panels[] แต่ละแผงต้องมี name, version, layout (x, y, w, h), visualization.type และ queries[]
  • metadata (object, ไม่บังคับ): ข้อมูลเมตาของแดชบอร์ด — ฟิลด์ _category และ _type (เช่น {"_category":"custom","_type":"metrics"})

update_dashboard

  • id (string, จำเป็น): UUID ของแดชบอร์ดที่จะอัปเดต
  • dashboard (object, จำเป็น): เนื้อหาแดชบอร์ดทดแทนแบบเต็ม (รูปแบบเดียวกับ create)
  • metadata (object, ไม่บังคับ): ข้อมูลเมตาทดแทน แดชบอร์ดระบบแบบอ่านอย่างเดียวจะคืนค่าข้อผิดพลาด 403

delete_dashboard

  • id (string, จำเป็น): UUID ของแดชบอร์ดที่จะลบ ไม่สามารถลบแดชบอร์ดระบบแบบอ่านอย่างเดียวได้

list_dashboard_snapshots

  • dashboard_id (string, จำเป็น): UUID ของแดชบอร์ดที่ต้องการแสดงรายการสแนปช็อต

คืนค่าเฉพาะข้อมูลเมตา (id, name, expires_at ฯลฯ) ใช้ get_dashboard_snapshot สำหรับข้อมูลแผงที่ถูกแช่แข็ง

get_dashboard_snapshot

  • id (string, จำเป็น): UUID ของสแนปช็อต

คืนค่าสแนปช็อตที่แช่แข็งแบบเต็ม รวมถึง dashboard_definition, panel_data, time_range และ variables

delete_dashboard_snapshot

  • id (string, จำเป็น): UUID ของสแนปช็อตที่จะลบ

การทดสอบ

ดู TESTING.md สำหรับการตั้งค่าและคำแนะนำการทดสอบการรวมระบบ


MseeP.ai Security Assessment Badge