Last9
आधिकारिकअपने स्थानीय वातावरण में रीयल-टाइम प्रोडक्शन संदर्भ—लॉग, मीट्रिक्स और ट्रेस—को सहजता से लाएं ताकि कोड को तेजी से ऑटो-फिक्स किया जा सके।
Last9 MCP के साथ आप क्या कर सकते हैं?
-
सेवा स्वास्थ्य की जांच करें —
get_service_summaryके माध्यम से अनुरोध संख्या, थ्रूपुट और त्रुटि दरों का रैंक किया गया फ्लीट सारांश प्राप्त करें। -
कच्चे सेवा लॉग खींचें —
get_service_logsका उपयोग करके किसी विशिष्ट सेवा के लिए गंभीरता या बॉडी सामग्री द्वारा फ़िल्टर की गई लॉग पंक्तियाँ प्राप्त करें। -
डेटाबेस प्रदर्शन का पता लगाएं —
get_databasesऔर संबंधित टूल के साथ डेटाबेस, धीमी क्वेरी और क्वेरी पैटर्न खोजें। -
PromQL क्वेरी चलाएं —
prometheus_range_queryयाprometheus_instant_queryका उपयोग करके किसी भी मीट्रिक पर रेंज या इंस्टेंट क्वेरी निष्पादित करें। -
परिवर्तनों को घटनाओं से सहसंबंधित करें —
get_change_eventsके माध्यम से उत्पादन व्यवहार को बदलने वाली डिप्लॉयमेंट और कॉन्फ़िगरेशन परिवर्तन घटनाएँ प्राप्त करें। -
कस्टम डैशबोर्ड प्रबंधित करें —
list_dashboardsऔरcreate_dashboardके साथ प्रोग्रामेटिक रूप से डैशबोर्ड सूचीबद्ध करें, बनाएं, अपडेट करें या मान्य करें।
दस्तावेज़
Last9 MCP सर्वर

आपका AI एजेंट नहीं जानता कि प्रोडक्शन में क्या खराब है। यह इसे ठीक करता है।
Last9 MCP सर्वर Claude, Cursor, Windsurf, और किसी भी अन्य MCP-सक्षम AI सहायक को सीधे आपके प्रोडक्शन ऑब्ज़र्वेबिलिटी डेटा — लॉग्स, मेट्रिक्स, ट्रेसेस, एक्सेप्शन, डेटाबेस क्वेरी, अलर्ट्स, और डिप्लॉयमेंट्स से जोड़ता है। एजेंट अनुमान लगाना बंद कर देता है और वास्तविक सिग्नल पढ़ना शुरू कर देता है।
30 सेकंड में शुरू करें (होस्टेड)
इंस्टॉल करने के लिए कोई बाइनरी नहीं। प्रबंधित करने के लिए कोई टोकन नहीं। एक URL, ब्राउज़र में OAuth, हो गया।
अपना org slug अपने Last9 URL में खोजें: 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 संगठन के लिए एडमिन एक्सेस आवश्यक है।
सेल्फ-होस्टेड (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 |
रिफ्रेश टोकन प्राप्त करें
केवल एडमिन टोकन बना सकते हैं।
- API Access पर जाएं
- Write अनुमतियों के साथ Generate Token पर क्लिक करें
- इसे कॉपी करें
क्लाइंट कॉन्फ़िगरेशन
Homebrew:
{
"mcpServers": {
"last9": {
"command": "/opt/homebrew/bin/last9-mcp",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
NPM:
{
"mcpServers": {
"last9": {
"command": "npx",
"args": ["-y", "@last9/mcp-server@latest"],
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
इसे कहां पेस्ट करें:
| क्लाइंट | स्थान |
|---|---|
| Claude Web/Desktop | Settings > Developer > Edit Config (claude_desktop_config.json) |
| Cursor | Settings > Cursor Settings > MCP > Add New Global MCP Server |
| Windsurf | Settings > Cascade > MCP Marketplace > गियर आइकन (mcp_config.json) |
| VS Code | settings.json में { "mcp": { "servers": { ... } } } में लपेटें — विवरण |
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>"
}
}
}
}
Windows पर NPM मार्ग आसान है — कोई पथ प्रबंधन नहीं।
पर्यावरण चर
| चर | डिफ़ॉल्ट | विवरण |
|---|---|---|
LAST9_REFRESH_TOKEN | (आवश्यक) | API Access से रिफ्रेश टोकन |
LAST9_DATASOURCE | org डिफ़ॉल्ट | डेटासोर्स/क्लस्टर नाम — उपयोगी जब आपके पास कई Levitate क्लस्टर हों |
LAST9_API_HOST | app.last9.io | API होस्ट को ओवरराइड करें |
LAST9_TOOLSETS | सभी टूल | एक्सपोज़ करने के लिए अल्पविराम-पृथक टूलसेट (logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all)। उपनाम: LAST9_MCP_TOOLSETS |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | चंक्ड get_logs अनुरोधों के लिए अधिकतम प्रविष्टियाँ |
LAST9_USE_LOG_SEARCH_API | false | क्लाइंट-साइड चंकिंग के बजाय एक सर्वर-साइड खोज कॉल के साथ get_logs और get_service_logs का उत्तर देने के लिए true सेट करें |
LAST9_DEBUG_CHUNKING | false | get_logs, get_service_logs, get_traces के लिए चंक-प्लानिंग विवरण लॉग करने के लिए true सेट करें |
LAST9_DISABLE_TELEMETRY | true | आंतरिक OTel ट्रेसिंग सक्षम करने के लिए false सेट करें |
OTEL_SDK_DISABLED | — | मानक OTel env var। LAST9_DISABLE_TELEMETRY को ओवरराइड करता है |
OTEL_EXPORTER_OTLP_ENDPOINT | — | OTLP कलेक्टर एंडपॉइंट (केवल जब टेलीमेट्री सक्षम हो) |
OTEL_EXPORTER_OTLP_HEADERS | — | OTLP प्रमाणीकरण हेडर (केवल जब टेलीमेट्री सक्षम हो) |
यह क्या कर सकता है
सेवा स्वास्थ्य
get_service_summary— रैंक्ड फ्लीट(service, env)पंक्तियाँ: अंतराल 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, विलंबता, और त्रुटि दरों के साथ निर्भरता मानचित्रget_apm_service_deviations— वर्तमान विंडो की तुलना समान अवधि के बेसलाइन से करें: रिग्रेशन/सुधार, Apdex समाधान, और टर्मिनल परिणाम (फ्लीट या एकल सेवा)get_exceptions— सेवा और स्पैन फ़िल्टर के साथ सर्वर-साइड एक्सेप्शन
डेटाबेस ऑब्ज़र्वेबिलिटी
चार टूल जो सीधे आपके डेटाबेस प्रदर्शन पर जाते हैं, OpenTelemetry ट्रेस स्पैन से प्राप्त होते हैं और, जहां ट्रेसेस अनुपस्थित हैं, CloudWatch जैसे इंफ्रास्ट्रक्चर मेट्रिक्स से। यदि आप पहले से OTel का उपयोग कर रहे हैं तो कोई अतिरिक्त इंस्ट्रुमेंटेशन आवश्यक नहीं है।
get_databases— अपने इंफ्रास्ट्रक्चर में सभी डेटाबेस खोजें: DB प्रकार, होस्ट, throughput (क्वेरी/मिनट), p95 विलंबता, त्रुटि दर, आश्रित सेवाओं की संख्या। CloudWatch जैसे इंफ्रास्ट्रक्चर मेट्रिक्स से भी डेटाबेस खोजता है, बिना ट्रेस इंस्ट्रुमेंटेशन के — उन पंक्तियों में ट्रेस मेट्रिक्स के बजाय गतिविधि मान होता हैget_database_slow_queries— वास्तविक सबसे धीमी क्वेरी निष्पादन, अवधि के अनुसार क्रमबद्ध, पूर्ण ट्रेसेस में ड्रिल करने के लिए ट्रेस आईडी के साथget_database_queries— क्वेरी पैटर्न और एग्रीगेट्स: क्वेरी कितनी बार चलती है, औसत/p95 अवधि, त्रुटि दरget_database_server_metrics— DB होस्ट से सर्वर-साइड मेट्रिक्स (CPU, कनेक्शन, बफर हिट दरें — आपके DB सिस्टम पर निर्भर करता है)
PostgreSQL, MySQL, MongoDB, Redis, Aerospike, और db_system विशेषता के साथ OTel ट्रेस करने वाली किसी भी अन्य चीज़ का समर्थन करता है — साथ ही CloudWatch जैसे इंफ्रास्ट्रक्चर मेट्रिक्स से खोजे गए डेटाबेस, जिनकी पंक्तियों में ट्रेस मेट्रिक्स के बजाय गतिविधि मान होता है।
Prometheus / PromQL
prometheus_range_query— किसी भी मेट्रिक पर PromQL रेंज क्वेरीprometheus_instant_query— इंस्टेंट क्वेरी;avg_over_time,sum_over_timeजैसे रोलअप फ़ंक्शन का उपयोग करेंprometheus_label_values— दिए गए सीरीज़ के लिए लेबल मानprometheus_labels— सीरीज़ के लिए उपलब्ध सभी लेबल
LAST9_DATASOURCE सेट करके इन्हें डिफ़ॉल्ट से भिन्न डेटासोर्स/क्लस्टर पर इंगित करें।
लॉग्स
get_logs— पूर्ण JSON पाइपलाइन लॉग क्वेरी (एग्रीगेशन, फ़िल्टर, फ़ील्ड निष्कर्षण)get_service_logs— सेवा के लिए कच्ची लॉग पंक्तियाँ, गंभीरता और बॉडी सामग्री द्वारा फ़िल्टर करने योग्यget_log_attributes— समय विंडो के लिए लॉग स्कीमा में विशेषताओं की वैश्विक सूचीget_log_attributes_for_pipeline— प्रगति पर पाइपलाइन के लिए वास्तव में मौजूद लॉग फ़ील्ड (स्कोप्ड डिस्कवरी), प्रत्येक अपने सटीकfilter_fieldके साथget_drop_rules— Last9 कंट्रोल प्लेन से लॉग ड्रॉप नियमadd_drop_rule— स्रोत पर लॉग वॉल्यूम कम करने के लिए नया ड्रॉप नियम बनाएं
ट्रेसेस
get_traces— व्यापक खोजों और एग्रीगेशन के लिए JSON पाइपलाइन ट्रेस क्वेरीget_service_traces— सटीक ट्रेस आईडी या सेवा नाम से ट्रेसेस। जब आपके पास ट्रेस आईडी हो तो इसका उपयोग करें — यह तेज़ हैget_trace_attributes— ट्रेस स्कीमा में विशेषताओं की वैश्विक सूचीget_trace_attributes_for_pipeline— प्रगति पर पाइपलाइन के लिए वास्तव में मौजूद विशेषताएँ (स्कोप्ड डिस्कवरी), प्रत्येक अपने सटीकfilter_fieldके साथget_trace_attribute_values— ट्रेस विशेषता के लिए अलग मान, वैकल्पिक रूप से पाइपलाइन तक स्कोप्डget_trace_attribute_deviations— दो बाउंडेड स्पैन कोहोर्ट (धीमा बनाम तेज़, त्रुटि बनाम गैर-त्रुटि, या दो समय विंडो) के बीच भिन्न विशेषता मानों को रैंक करता है। सहसंबंध, कारण नहींget_trace_waterfall— एक सटीक ट्रेस पैरेंट/चाइल्ड वॉटरफॉल के रूप में अंतराल-संघ स्व-समय, सबसे धीमे स्पैन, और ग्राफ़ चेतावनियों के साथ
परिवर्तन घटनाएँ और अलर्ट्स
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 में सभी कस्टम डैशबोर्ड: आईडी, नाम, और मेटाडेटाget_dashboard— आईडी द्वारा पूर्ण डैशबोर्ड परिभाषा, पैनल और क्वेरी सहितvalidate_dashboard— सहेजे गए डैशबोर्ड आईडी या इनलाइनdashboard_definitionके लिए ≤24h विंडो पर केवल-पढ़ने योग्य lint + execute + classify। कभी भी डैशबोर्ड नहीं बनाता या अपडेट नहीं करताcreate_dashboard— एक बार नेट-नया कस्टम डैशबोर्ड बनाएं (पैनल, क्वेरी, मेटाडेटा)। आईडी लौटाए जाने के बाद,update_dashboardके साथ परिष्कृत करें।update_dashboard— आईडी द्वारा मौजूदा डैशबोर्ड परिष्कृत करें (पूर्ण प्रतिस्थापन; केवल-पढ़ने योग्य सिस्टम डैशबोर्ड त्रुटि लौटाते हैं)delete_dashboard— आईडी द्वारा कस्टम डैशबोर्ड हटाएंlist_dashboard_snapshots— डैशबोर्ड के लिए फ्रोज़न पॉइंट-इन-टाइम स्नैपशॉट (केवल मेटाडेटा)get_dashboard_snapshot— RCA / साझा करने योग्य दृश्यों के लिए पैनल डेटा सहित पूर्ण फ्रोज़न स्नैपशॉटdelete_dashboard_snapshot— आईडी द्वारा फ्रोज़न स्नैपशॉट हटाएं
सतत प्रोफाइलिंग
org के लिए सतत प्रोफाइलिंग सक्षम होना आवश्यक है। पहले get_profile_services के साथ सेवाएं खोजें, फिर फ्लेमग्राफ या रैंक किए गए फ़ंक्शन खींचें।
get_profile_services— विंडो में प्रोफाइलिंग डेटा रखने वाली सेवाएं (क्वेरी करने से पहले इंडेक्स)get_flamegraph— एक सेवा के लिए नेस्टेड फ्लेमग्राफ ट्री (cpuडिफ़ॉल्ट;alloc,wallभी)get_top_functions— एक सेवा के लिए सबसे हॉट फ़ंक्शन की सेल्फ-सैंपल रैंकिंगget_profile_summary— एक सेवा के लिए प्रोफ़ाइल का संक्षिप्त प्राकृतिक-भाषा ट्राइएज
Grafana डैशबोर्ड
org के Grafana इंस्टेंस के खिलाफ केवल-पढ़ने योग्य टूल (Last9 के Grafana प्रॉक्सी के माध्यम से)। क्रेडेंशियल फ़ील्ड कभी भी मॉडल को नहीं लौटाए जाते। LAST9_TOOLSETS=grafana के साथ सक्षम करें (या सभी टूल के लिए टूलसेट अनसेट छोड़ दें)।
grafana_search_dashboards— डैशबोर्ड को शीर्षक सबस्ट्रिंग द्वारा खोजें (पृष्ठांकित; सीमा पूरी होने परtruncated: true)grafana_get_dashboard— डैशबोर्ड सारांश uid द्वारा (पैनल, वेरिएबल, PromQL लक्ष्य); कच्चे Grafana JSON के लिएfull_json=truegrafana_list_folders— फ़ोल्डर ट्रीgrafana_list_folder_dashboards— एक फ़ोल्डर में डैशबोर्ड (पृष्ठांकित)grafana_list_datasources— क्रेडेंशियल के बिना डेटासोर्स इन्वेंट्री
फ़ज़ी नाम समाधान
did_you_mean— जब एजेंट को किसी इकाई के नाम के बारे में पक्का नहीं होता, तो यह आपकी कैटलॉग से सबसे नज़दीकी मिलान लौटाता है (सेवाएँ, वातावरण, होस्ट, डेटाबेस, K8s डिप्लॉयमेंट/नेमस्पेस, जॉब्स)। समानता स्कोर के साथ अधिकतम 3 सुझाव। जब नाम लुकअप खाली लौटता है, तो सर्वर अधिकांश टूल से पहले स्वचालित रूप से इसे कॉल करता है।
सेवा प्रोफ़ाइल
get_service_profile— किसी सेवा का टेलीमेट्री वास्तव में कैसा दिखता है, उसे क्वेरी करने से पहले: कौन से सिग्नल मौजूद हैं, भाषा और रनटाइम, डिप्लॉयमेंट वातावरण, उसके लॉग का आकार, और जहाँ लागू हो वहाँ एक अनुशंसित इन्जेस्ट फिक्स। एजेंट को ट्रेस टूल छोड़ने देता है जब किसी सेवा में ट्रेस नहीं होते, औरSeverityTextखाली होने पर लॉग बॉडी से गंभीरता पार्स करने देता है, बजाय उस पर फ़िल्टर करके कुछ न पाने के।
यह कैसे काम करता है
हर प्रतिक्रिया पर डीप लिंक। हर टूल एक deep_link फ़ील्ड लौटाता है — उस सटीक क्वेरी और समय सीमा के लिए Last9 डैशबोर्ड में एक सीधा URL। एजेंट आपको लिंक दे सकता है; आप उस पर क्लिक करते हैं; आप वहाँ पहुँच जाते हैं।
टूलसेट। डिफ़ॉल्ट रूप से सर्वर हर टूल को उजागर करता है। केवल जाँच (लॉग/ट्रेस/मेट्रिक्स/प्रोफाइल) की आवश्यकता वाले स्वचालन होस्ट 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 (और ट्रेस समकक्ष) के साथ org-विशिष्ट फ़ील्ड खोजें — वे विवरणों में इंजेक्ट नहीं होते।
चंक्ड बड़े परिणाम। 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 हैंडलर स्टेटलेस मोड में चलता है, इसलिए कोई भी अनुरोध स्वतंत्र रूप से परोसा जाता है। एक 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(स्ट्रिंग, वैकल्पिक): 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(स्ट्रिंग, वैकल्पिक): फ्लीट स्कोप के लिए छोड़ें; एक सेवा और उसके ऑपरेशन सहसंबंधों के लिए प्रदान करें।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 पाइपलाइन क्वेरी।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(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 फ़िल्टर शर्तें।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, वैकल्पिक): केवल उस स्पैन के लिए विशेषताएँ, घटनाएँ और लिंक लौटाता है।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 अलर्ट-समूह इन्वेंट्री। शून्य नियमों वाले समूह और फायर नहीं करने वाले समूह शामिल हैं। PromQL नहीं लौटाता है।
alert_group_name/alert_group_type/data_source_name(string, वैकल्पिक): केस-असंवेदनशील सबस्ट्रिंग मिलान।team/tier(string, वैकल्पिक): कॉन्फ़िगर किए गए मेटाडेटा पर सटीक केस-असंवेदनशील मिलान।label_key+label_value(string, वैकल्पिक): एक साथ सेट होना चाहिए। एकmetadata.labelsजोड़ी पर सटीक केस-असंवेदनशील मिलान — कुंजी और मान दोनों।
{"count":N,"groups":[...]}, id, name, type, entity_class, team, tier, metadata.labels और नियम गणनाओं के साथ कॉम्पैक्ट JSON लौटाता है। खाली 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, वैकल्पिक): नियम नाम पर रेगेक्स फ़िल्टर।alert_group_name(string, वैकल्पिक): अलर्ट समूह नाम पर रेगेक्स फ़िल्टर।label_filters(string, वैकल्पिक): अल्पविराम-पृथकkey=valueलेबल फ़िल्टर।state(string, वैकल्पिक): स्थिति द्वारा फ़िल्टर करें (जैसेfiring)।
rule_id -> [{timestamp, is_firing}] का JSON मानचित्र लौटाता है। एक टाइमस्टैम्प जिस पर एक नियम अपस्ट्रीम प्रतिक्रिया से अनुपस्थित है, is_firing=0 के रूप में रिपोर्ट किया जाता है — इसका अर्थ है "फायरिंग के रूप में नहीं देखा गया", पुष्टि की गई सामान्य स्थिति नहीं।
get_notification_channels
कोई पैरामीटर नहीं। सभी कॉन्फ़िगर किए गए अधिसूचना चैनल लौटाता है (Slack, PagerDuty, ईमेल, वेबहुक, आदि)।
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), और एक अनुशंसित इन्जेस्ट फिक्स जहाँ लागू हो। अपस्ट्रीम से व्युत्पन्न और ~15 मिनट TTL के साथ कैश किया गया।
किसी भी सेवा-स्कोप्ड जांच से पहले इसे कॉल करें ताकि टूल चयन सेवा की वास्तविक टेलीमेट्री से मेल खाए — ट्रेस टूल छोड़ें जब traces absent है, और जब severity_set none या partial है तो लॉग बॉडी में level_field से गंभीरता पार्स करें, severity_filters का उपयोग करने के बजाय। metrics हमेशा unknown है और dependencies v1 में आबाद नहीं है। जब logs और traces दोनों absent हैं, तो सेवा अनमॉनिटर्ड निष्कर्ष निकालने से पहले did_you_mean के साथ नाम की पुष्टि करें।
list_dashboards
कोई पैरामीटर नहीं। संगठन में सभी कस्टम डैशबोर्ड id, name और मेटाडेटा के साथ JSON सरणी के रूप में लौटाता है।
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)। ≤ 24h होना चाहिए।region(string, वैकल्पिक): पैनल क्वेरी निष्पादन के लिए क्षेत्र।
dashboard_validation/v1 लौटाता है: प्रति-पैनल लिंट + निष्पादन वर्गीकरण (data / no_data / invalid / error)। दिन-1 खाली परिणाम डायग्नोज़ प्रोब के बिना 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 द्वारा पूर्ण प्रतिस्थापन (create के समान बॉडी)।
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।
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(वैकल्पिक)।
एक नेस्टेड फ्लेमग्राफ ट्री लौटाता है (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, आवश्यक): Grafana डैशबोर्ड uid।full_json(boolean, वैकल्पिक): सत्य होने पर, फ़िल्टर किए गए सारांश के बजाय कच्चा Grafana JSON लौटाएँ। डिफ़ॉल्ट सारांश: संस्करण, टैग, टेम्प्लेटिंग वेरिएबल्स, और प्रत्येक पैनल का प्रकार/डेटासोर्स/gridPos/promQL लक्ष्य। अज्ञात प्लगइन पैनल प्रकारunsupportedPanelTypesमें दिखाई देते हैं।
grafana_list_folders
कोई पैरामीटर नहीं। फ़ोल्डर ट्री लौटाता है।
grafana_list_folder_dashboards
folder_uid(स्ट्रिंग, आवश्यक): Grafana फ़ोल्डर uid।
उस फ़ोल्डर में डैशबोर्ड के लिए {"dashboards":[…], "truncated":bool} लौटाता है (5,000 तक पेजिनेटेड)।
grafana_list_datasources
कोई पैरामीटर नहीं। डेटासोर्स का एक सुरक्षित प्रोजेक्शन लौटाता है (कोई क्रेडेंशियल फ़ील्ड नहीं)।
परीक्षण
एकीकरण परीक्षण सेटअप और निर्देशों के लिए TESTING.md देखें।
