Last9

ทางการ

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

GitHub
62
ลองใช้ MCP นี้ผู้สนับสนุน

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

  • ตรวจสอบสุขภาพของบริการ — ขอสรุปอันดับของฝูงบริการเกี่ยวกับจำนวนคำขอ ปริมาณงาน และอัตราข้อผิดพลาดผ่าน get_service_summary

  • ดึงบันทึกบริการดิบ — ดึงบรรทัดบันทึกที่กรองแล้วตามระดับความรุนแรงหรือเนื้อหาของข้อความสำหรับบริการเฉพาะโดยใช้ get_service_logs

  • ติดตามประสิทธิภาพฐานข้อมูล — ค้นหาฐานข้อมูล คำสั่ง查询ที่ช้า และรูปแบบของคำสั่ง查询ด้วย get_databases และเครื่องมือที่เกี่ยวข้อง

  • รันคำสั่ง PromQL — ดำเนินการคำสั่งแบบช่วงเวลาหรือแบบทันทีกับเมตริกใดๆ โดยใช้ prometheus_range_query หรือ prometheus_instant_query

  • เชื่อมโยงการเปลี่ยนแปลงกับเหตุการณ์ — ดึงข้อมูลเหตุการณ์การปรับใช้และการเปลี่ยนแปลงการกำหนดค่าเพื่อทำความเข้าใจสิ่งที่เปลี่ยนแปลงพฤติกรรมการผลิตผ่าน get_change_events

  • จัดการแดชบอร์ดที่กำหนดเอง — แสดงรายการ สร้าง อัปเดต หรือตรวจสอบแดชบอร์ดโดยโปรแกรมด้วย list_dashboards และ create_dashboard

เอกสาร

เซิร์ฟเวอร์ MCP ของ Last9

last9 mcp demo

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

เซิร์ฟเวอร์ MCP ของ Last9 เชื่อมต่อ Claude, Cursor, Windsurf และผู้ช่วย AI ที่รองรับ MCP อื่นๆ เข้ากับข้อมูลการสังเกตการณ์ในระบบผลิตจริงของคุณโดยตรง ไม่ว่าจะเป็นล็อก เมตริก เทรซ ข้อยกเว้น คำสั่งฐานข้อมูล การแจ้งเตือน และการปรับใช้ เอเจนต์จะหยุดการเดาและเริ่มอ่านสัญญาณจริง


เริ่มต้นใน 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

การตั้งค่า > MCP > เพิ่มเซิร์ฟเวอร์ MCP ใหม่:

{
  "mcpServers": {
    "last9": {
      "type": "http",
      "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

คลิก เชื่อมต่อ, ทำ OAuth ให้เสร็จสิ้น

VS Code

ต้องใช้ v1.99+ เปิด Command Palette → MCP: เพิ่มเซิร์ฟเวอร์, วาง URL, ยืนยันตัวตน

หรือโดยตรงใน settings.json:

{
  "mcp": {
    "servers": {
      "last9": {
        "type": "http",
        "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
      }
    }
  }
}

Windsurf

การตั้งค่า > Cascade > เปิด MCP Marketplace > ไอคอนเฟือง (mcp_config.json):

{
  "mcpServers": {
    "last9": {
      "serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

Claude Web/Desktop

การตั้งค่า > ตัวเชื่อมต่อ > เพิ่มตัวเชื่อมต่อที่กำหนดเอง ตั้งชื่อว่า last9, วาง URL, ยืนยันตัวตน

ต้องมีสิทธิ์เข้าถึงระดับผู้ดูแลระบบสำหรับองค์กร Claude ของคุณ


โฮสต์ด้วยตนเอง (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

รับโทเค็นรีเฟรช

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

  1. ไปที่ การเข้าถึง API
  2. คลิก สร้างโทเค็น ด้วยสิทธิ์การเขียน
  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/Desktopการตั้งค่า > นักพัฒนา > แก้ไขการกำหนดค่า (claude_desktop_config.json)
Cursorการตั้งค่า > การตั้งค่า Cursor > MCP > เพิ่มเซิร์ฟเวอร์ MCP ทั่วโลกใหม่
Windsurfการตั้งค่า > 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(จำเป็น)โทเค็นรีเฟรชจาก การเข้าถึง API
LAST9_DATASOURCEค่าเริ่มต้นของ orgชื่อ datasource/cluster — มีประโยชน์เมื่อคุณมีคลัสเตอร์ Levitate หลายตัว
LAST9_API_HOSTapp.last9.ioแทนที่โฮสต์ API
LAST9_TOOLSETSเครื่องมือทั้งหมดชุดเครื่องมือที่เปิดเผยโดยคั่นด้วยเครื่องหมายจุลภาค (logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all). ชื่ออื่น: LAST9_MCP_TOOLSETS
LAST9_MAX_GET_LOGS_ENTRIES5000รายการสูงสุดสำหรับคำขอ get_logs แบบแบ่งส่วน
LAST9_USE_LOG_SEARCH_APIfalseตั้งค่า true เพื่อตอบ get_logs และ get_service_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 — แถว (service, env) ของฝูงบินที่จัดอันดับ: interval request_count, throughput_rpm, จำนวน HTTP 4xx/5xx และจำนวนข้อผิดพลาด gRPC
  • get_service_environments — สภาพแวดล้อมที่มีสำหรับบริการของคุณ เรียกใช้ก่อน — เครื่องมือ APM อื่นๆ ต้องใช้ env จากที่นี่
  • get_service_performance_details — รายละเอียดทั้งหมด: throughput, อัตราข้อผิดพลาด, p50/p90/p95/avg/max, apdex, ความพร้อมใช้งาน
  • get_service_operations_summary — การดำเนินการที่จัดกลุ่มตามปลายทาง HTTP, การเรียก DB, การส่งข้อความ, ไคลเอนต์ HTTP
  • get_service_dependency_graph — แผนที่การพึ่งพาพร้อม throughput, ความหน่วง และอัตราข้อผิดพลาดสำหรับ upstream/downstream/infra
  • get_apm_service_deviations — เปรียบเทียบหน้าต่างปัจจุบันกับพื้นฐานระยะเวลาเท่ากัน: การถดถอย/การปรับปรุง, การกระทบยอด Apdex และผลลัพธ์สุดท้าย (ฝูงบินหรือบริการเดียว)
  • get_exceptions — ข้อยกเว้นฝั่งเซิร์ฟเวอร์พร้อมตัวกรองบริการและสแปน

การสังเกตฐานข้อมูล

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

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

รองรับ PostgreSQL, MySQL, MongoDB, Redis, Aerospike และสิ่งอื่นๆ ที่ OTel เทรซด้วยแอตทริบิวต์ db_system — รวมถึงฐานข้อมูลที่ค้นพบจากเมตริกโครงสร้างพื้นฐาน เช่น CloudWatch ซึ่งแถวมีค่า activity แทนเมตริกเทรซ

Prometheus / PromQL

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

ชี้ไปที่ datasource/cluster อื่นที่ไม่ใช่ค่าเริ่มต้นโดยตั้งค่า 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 — เทรซตาม ID เทรซที่แน่นอนหรือชื่อบริการ ใช้เมื่อคุณมี ID เทรซ — เร็วกว่า
  • get_trace_attributes — แคตตาล็อกทั่วโลกของแอตทริบิวต์ในสคีมาเทรซ
  • get_trace_attributes_for_pipeline — แอตทริบิวต์ที่มีจริงสำหรับไปป์ไลน์ที่กำลังดำเนินการ (การค้นพบตามขอบเขต) แต่ละรายการมี filter_field ที่แน่นอน
  • get_trace_attribute_values — ค่าที่แตกต่างสำหรับแอตทริบิวต์เทรซ เลือกขอบเขตตามไปป์ไลน์ได้
  • get_trace_attribute_deviations — จัดอันดับค่าแอตทริบิวต์ที่แตกต่างระหว่างกลุ่มสแปนสองกลุ่มที่จำกัด (ช้า vs เร็ว, ข้อผิดพลาด vs ไม่มีข้อผิดพลาด หรือสองหน้าต่างเวลา) ความสัมพันธ์ ไม่ใช่สาเหตุ
  • get_trace_waterfall — เทรซที่แน่นอนหนึ่งรายการเป็นน้ำตกพ่อแม่/ลูกพร้อมเวลาตัวเองแบบ union ช่วง, สแปนที่ช้าที่สุด และคำเตือนกราฟ

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

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

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

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

การโปรไฟล์ต่อเนื่อง

ต้องเปิดใช้งานการโปรไฟล์ต่อเนื่องสำหรับ org ค้นพบบริการก่อนด้วย get_profile_services, จากนั้นดึง flamegraph หรือฟังก์ชันที่จัดอันดับ

  • get_profile_services — บริการที่มีข้อมูลการโปรไฟล์ในหน้าต่าง (จัดทำดัชนีก่อนค้นหา)
  • get_flamegraph — ต้นไม้ flamegraph แบบซ้อนสำหรับหนึ่งบริการ (ค่าเริ่มต้น cpu; ยังมี alloc, wall)
  • get_top_functions — การจัดอันดับตัวอย่างตนเองของฟังก์ชันที่ร้อนแรงที่สุดสำหรับหนึ่งบริการ
  • get_profile_summary — การคัดแยกภาษาธรรมชาติสั้นๆ ของโปรไฟล์สำหรับหนึ่งบริการ

แดชบอร์ด Grafana

เครื่องมือแบบอ่านอย่างเดียวกับอินสแตนซ์ Grafana ของ org (ผ่านพร็อกซี Grafana ของ Last9) ฟิลด์ข้อมูลประจำตัวจะไม่ถูกส่งคืนให้โมเดล เปิดใช้งานด้วย LAST9_TOOLSETS=grafana (หรือปล่อยชุดเครื่องมือไม่ตั้งค่าเพื่อเครื่องมือทั้งหมด)

  • grafana_search_dashboards — ค้นหาแดชบอร์ดด้วยข้อความย่อยของชื่อ (แบ่งหน้า; truncated: true เมื่อถึงขีดจำกัด)
  • grafana_get_dashboard — สรุปแดชบอร์ดโดย uid (แผง, ตัวแปร, เป้าหมาย PromQL); full_json=true สำหรับ Grafana JSON ดิบ
  • grafana_list_folders — โครงสร้างโฟลเดอร์
  • grafana_list_folder_dashboards — แดชบอร์ดในโฟลเดอร์เดียว (แบ่งหน้า)
  • grafana_list_datasources — รายการแหล่งข้อมูลโดยไม่มีข้อมูลรับรอง

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

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

โปรไฟล์บริการ

  • get_service_profile — ลักษณะ telemetry ของบริการจริงก่อนที่คุณจะสอบถาม: สัญญาณใดที่มีอยู่, ภาษาและรันไทม์, สภาพแวดล้อมการปรับใช้, รูปร่างของล็อก และคำแนะนำในการแก้ไขการรับส่งข้อมูลเมื่อมีผล อนุญาตให้เอเจนต์ข้ามเครื่องมือ trace เมื่อบริการไม่มี trace และแยกความรุนแรงจากเนื้อหาล็อกเมื่อ SeverityText ว่างเปล่าแทนที่จะกรองและไม่พบอะไรเลย

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

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

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

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

ผลลัพธ์ขนาดใหญ่แบบแบ่งส่วน 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

ตัวจัดการ Streamable HTTP ทำงานในโหมด stateless ดังนั้นคำขอใดๆ จะได้รับการบริการอย่างอิสระ การจับมือ initialize และส่วนหัว Mcp-Session-Id เป็นทางเลือก — ไคลเอ็นต์ที่ส่งยังทำงานได้ (ส่วนหัวถูกรับและละเว้น) และไคลเอ็นต์สามารถข้ามไปที่ tools/list / tools/call ได้โดยตรง เครื่องมือทุกตัวเป็นคำสั่งค้นหาแบบ request/response อิสระ เซิร์ฟเวอร์ไม่ส่งการแจ้งเตือนจากเซิร์ฟเวอร์ไปยังไคลเอ็นต์ ดังนั้น 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 (สตริง, ไม่บังคับ): PromQL regex ค่าเริ่มต้นคือ .* การจับคู่แบบตรงต้องใช้จุดยึด (เช่น ^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 (สตริง, ไม่บังคับ): ละเว้นสำหรับขอบเขต fleet; ระบุสำหรับบริการเดียวและความสัมพันธ์การดำเนินการ
  • 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 หน้าต่างต้องไม่เกิน 7 วัน
  • 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 (ทศนิยม, ไม่บังคับ): ระยะเวลาคำสั่งขั้นต่ำในหน่วย 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 pipeline
  • 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

ใช้สำหรับการค้นหากว้างและการรวม สำหรับการค้นหา 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 (string, ไม่บังคับ): ระยะเวลาย้อนหลังเริ่มต้น: 72 ชั่วโมง
  • service_name (string, ไม่บังคับ): ระยะเวลาย้อนหลังเริ่มต้น: 60 นาที
  • lookback_minutes (integer, ไม่บังคับ)
  • start_time_iso / end_time_iso (string, ไม่บังคับ)
  • limit (integer, ไม่บังคับ): ค่าเริ่มต้น: 10
  • env (string, ไม่บังคับ)

get_trace_attributes

  • lookback_minutes (integer, ไม่บังคับ): ค่าเริ่มต้น: 15
  • start_time_iso / end_time_iso (string, ไม่บังคับ)
  • region (string, ไม่บังคับ)

get_trace_attributes_for_pipeline

  • pipeline (array, จำเป็น): ขั้นตอนการกรองก่อนหน้าเพื่อกำหนดขอบเขตการค้นพบ เช่น [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}]
  • lookback_minutes (integer, ไม่บังคับ): ค่าเริ่มต้น: 15
  • start_time_iso / end_time_iso (string, ไม่บังคับ)
  • region (string, ไม่บังคับ)

get_trace_attribute_values

  • tag_name (string, จำเป็น): ชื่อแอตทริบิวต์จาก get_trace_attributes (เช่น resource_department หรือ attributes['http.method'])
  • pipeline (array, ไม่บังคับ): ขั้นตอนการกรองก่อนหน้าเพื่อกำหนดขอบเขตค่า; ละเว้นสำหรับค่าทั่วโลก
  • lookback_minutes (integer, ไม่บังคับ): ค่าเริ่มต้น: 15
  • start_time_iso / end_time_iso (string, ไม่บังคับ): ขอบเขตเวลา RFC3339 ในอดีต; มีลำดับความสำคัญเหนือกว่า lookback_minutes
  • region (string, ไม่บังคับ)

get_trace_attribute_deviations

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

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

get_trace_waterfall

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

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

get_change_events

  • start_time_iso / end_time_iso (string, ไม่บังคับ)
  • lookback_minutes (integer, ไม่บังคับ): ค่าเริ่มต้น: 60
  • service_name (string, ไม่บังคับ)
  • env (string, ไม่บังคับ)
  • event_name (string, ไม่บังคับ): เรียกโดยไม่มีค่านี้ก่อนเพื่อรับ available_event_names

get_alert_groups

คลังกลุ่มการแจ้งเตือน Compass ที่กำหนดค่าไว้สำหรับการตรวจสอบ changeboard / ความครอบคลุมของป้ายกำกับ รวมถึงกลุ่มที่มีกฎเป็นศูนย์และกลุ่มที่ไม่มีการแจ้งเตือน ไม่ส่งคืน PromQL

  • alert_group_name / alert_group_type / data_source_name (string, ไม่บังคับ): การจับคู่สตริงย่อยแบบไม่คำนึงถึงตัวพิมพ์เล็กใหญ่
  • team / tier (string, ไม่บังคับ): การจับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กใหญ่ที่แน่นอนบนเมตาดาต้าที่กำหนดค่าไว้
  • label_key + label_value (string, ไม่บังคับ): ต้องตั้งค่าด้วยกัน การจับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กใหญ่ที่แน่นอนบนคู่ metadata.labels หนึ่งคู่ — ทั้งคีย์และค่า

ส่งคืน JSON {"count":N,"groups":[...]} แบบกระชับพร้อมด้วย id, name, type, entity_class, team, tier, metadata.labels และจำนวนกฎ team / labels ที่ว่างเปล่าหมายถึงไม่ได้ตั้งค่า

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 รายการพร้อมคะแนนความคล้ายคลึง ใช้ก่อนการเรียกเครื่องมือใดๆ ที่ไม่แน่ใจในชื่อเอนทิตี หากการเรียกก่อนหน้านี้ส่งคืนผลลัพธ์ว่าง ให้ลองใช้ก่อนลองใหม่

get_service_profile

  • service_name (string, จำเป็น): บริการที่ต้องการสร้างโปรไฟล์เทเลเมทรี
  • datasource (string, ไม่บังคับ): ชื่อแหล่งข้อมูล ละเว้นสำหรับค่าเริ่มต้น

ส่งคืนสรุปการตรวจสอบสั้นๆ ตามด้วยโปรไฟล์เต็มเป็น JSON ดิบ: การมีสัญญาณ (logs/traces/metrics เป็น present, absent, หรือ unknown), ภาษาและรันไทม์, สภาพแวดล้อมการปรับใช้, ระดับ signal_shape ของล็อก (log_format, severity_set, level_field) และคำแนะนำการแก้ไขการรับข้อมูลเมื่อมี มาจากต้นทางและแคชด้วย TTL ประมาณ 15 นาที

เรียกก่อนการตรวจสอบที่จำกัดเฉพาะบริการใดๆ เพื่อให้การเลือกเครื่องมือตรงกับเทเลเมทรีจริงของบริการ — ข้ามเครื่องมือ trace เมื่อ traces เป็น absent และเมื่อ severity_set เป็น none หรือ partial ให้แยกวิเคราะห์ความรุนแรงจาก level_field ในเนื้อหาล็อกแทนการใช้ severity_filters metrics เป็น unknown เสมอ และ dependencies ไม่ถูกเติมใน v1 เมื่อ logs และ traces เป็น absent ทั้งคู่ ให้ยืนยันชื่อด้วย did_you_mean ก่อนสรุปว่าบริการไม่ได้รับการตรวจสอบ

list_dashboards

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

get_dashboard

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

validate_dashboard

อ่านอย่างเดียว ไม่สร้างหรืออัปเดตแดชบอร์ด รับอย่างใดอย่างหนึ่งของ dashboard_id หรือ dashboard_definition

  • dashboard_id (string, ไม่บังคับ): UUID ของแดชบอร์ดที่บันทึกไว้เพื่อตรวจสอบ
  • dashboard_definition (object, ไม่บังคับ): เนื้อหาแดชบอร์ดที่ยังไม่ได้บันทึกแบบอินไลน์ (การทดลองรันจริง)
  • start_time_iso / end_time_iso (string, ไม่บังคับ): หน้าต่างการตรวจสอบ (RFC3339) ต้อง ≤ 24 ชั่วโมง
  • region (string, ไม่บังคับ): ภูมิภาคสำหรับการดำเนินการคิวรีแผง

ส่งคืน dashboard_validation/v1: การจำแนก lint + execute รายแผง (data / no_data / invalid / error) ผลลัพธ์ว่างในวันแรกจำแนกเป็น valid_no_data โดยไม่มีโพรบวินิจฉัย

create_dashboard

เฉพาะใหม่เท่านั้น หลังจากการเรียกนี้ส่งคืน dashboard.id ให้ปรับปรุงด้วย update_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 (เนื้อหาเดียวกับการสร้าง)

  • id (string, จำเป็น): UUID ของแดชบอร์ดที่จะอัปเดต
  • dashboard (object, จำเป็น): เนื้อหาแดชบอร์ดแทนที่ทั้งหมด (รูปแบบเดียวกับการสร้าง)
  • 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 ของสแนปช็อตที่จะลบ

get_profile_services

  • lookback_minutes / start_time_iso / end_time_iso (ไม่บังคับ): หน้าต่าง; ควรใช้ระยะเวลาย้อนหลังหรือขอบเขต ISO ที่ชัดเจน (ค่าเริ่มต้น 60 นาที)
  • region (string, ไม่บังคับ): การแทนที่ภูมิภาค

ส่งคืนบริการที่มีข้อมูลโปรไฟล์ในหน้าต่าง เรียกก่อน get_flamegraph / get_top_functions / get_profile_summary

get_flamegraph

  • service (string, จำเป็น): ชื่อบริการจาก get_profile_services
  • profile_type (string, ไม่บังคับ): cpu (ค่าเริ่มต้น), alloc, หรือ wall ปักหมุดประเภทเมื่อเปรียบเทียบหน้าต่าง
  • env / cluster / namespace / runtime (string, ไม่บังคับ): ตัวกรองขอบเขต
  • limit (number, ไม่บังคับ): แถวสแตกที่รวมสูงสุด (ค่าเริ่มต้น 1000, สูงสุด 10000)
  • lookback_minutes / start_time_iso / end_time_iso / region (ไม่บังคับ)

ส่งคืนโครงสร้างต้นไม้ flamegraph แบบซ้อน (name / value / self / children) truncated: true หมายถึงถึงขีดจำกัดแถวของ API

get_top_functions

ตัวกรองเดียวกันกับ get_flamegraph ส่งคืนการจัดอันดับตัวอย่างตนเองของฟังก์ชันที่ร้อนแรงที่สุด อาจถูกตัดทอน; ตรวจสอบ truncated

get_profile_summary

ตัวกรองเดียวกันกับ get_flamegraph ส่งคืนการคัดแยกภาษาธรรมชาติสั้นๆ ของโปรไฟล์สำหรับบริการ

grafana_search_dashboards

  • query (string, ไม่บังคับ): สตริงย่อยของชื่อ รายการว่างแสดงกว้างๆ (ขึ้นอยู่กับขีดจำกัด 5,000 แถว)

ส่งคืน {"dashboards":[…], "truncated":bool} พร้อมด้วย uid, title, uri, url, type, tags ใช้ uid กับ grafana_get_dashboard

grafana_get_dashboard

  • uid (string, จำเป็น): uid ของแดชบอร์ด Grafana
  • full_json (boolean, ไม่บังคับ): เมื่อเป็น true ให้ส่งคืน JSON Grafana ดิบแทนสรุปที่กรองแล้ว Default summary: version, tags, templating variables, and each panel's type/datasource/gridPos/promQL targets. Unknown plugin panel types appear in unsupportedPanelTypes.

grafana_list_folders

ไม่มีพารามิเตอร์ คืนค่าโครงสร้างโฟลเดอร์

grafana_list_folder_dashboards

  • folder_uid (string, required): Grafana folder uid.

คืนค่า {"dashboards":[…], "truncated":bool} สำหรับแดชบอร์ดในโฟลเดอร์นั้น (แบ่งหน้าได้สูงสุด 5,000 รายการ)

grafana_list_datasources

ไม่มีพารามิเตอร์ คืนค่าการแสดงผลที่ปลอดภัยของ datasources (ไม่มีฟิลด์ข้อมูลรับรอง)


การทดสอบ

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


MseeP.ai Security Assessment Badge