使用说明
Prometheus node_exporter + cAdvisor MCP Server
MCP server ini membaca dan menganalisa metric Prometheus, dengan fokus utama pada data node_exporter dan cAdvisor.
Endpoint publik yang diharapkan di Traefik:
https://YOUR_DOMAIN/mcp-node-exporter
Di backend container, endpoint MCP dijalankan pada /, lalu Traefik melakukan StripPrefix(/mcp-node-exporter).
Tools yang tersedia
-
prometheus_instant_queryMenjalankan instant query PromQL. -
prometheus_range_queryMenjalankan range query PromQL. -
prometheus_metric_metadataMengambil metadata metric seperti type, help, dan unit. -
prometheus_label_valuesMengambil daftar nilai untuk label tertentu, misalnyainstanceataujob. -
analyze_node_exporterMembuat ringkasan health node_exporter per instance, meliputi:- status scrape (
up) - CPU usage 5 menit
- penggunaan memory
- load average per core
- filesystem usage tertinggi
- status scrape (
-
analyze_cadvisorMembuat ringkasan kondisi tiap container dari cAdvisor, meliputi:- status scrape instance (
up) - CPU usage 5 menit per container
- memory working set dan persentase terhadap memory limit
- filesystem usage per container
- network receive/transmit rate per container
- status scrape instance (
Asumsi metric
Server ini mengasumsikan metric node_exporter dan cAdvisor tersedia di Prometheus.
Metric node_exporter yang dipakai:
upnode_cpu_seconds_totalnode_memory_MemAvailable_bytesnode_memory_MemTotal_bytesnode_load1node_filesystem_avail_bytesnode_filesystem_size_bytes
Metric cAdvisor yang dipakai:
container_cpu_usage_seconds_totalcontainer_memory_working_set_bytescontainer_spec_memory_limit_bytescontainer_fs_usage_bytescontainer_fs_limit_bytescontainer_network_receive_bytes_totalcontainer_network_transmit_bytes_total
Environment variable
Lihat .env.example.
Variabel penting:
PROMETHEUS_BASE_URL: URL Prometheus internal, misalnyahttp://prometheus:9090DEFAULT_NODE_EXPORTER_JOB: default labeljob, misalnyanode-exporterDEFAULT_CADVISOR_JOB: default labeljobuntuk cAdvisor, misalnyacadvisorMCP_ENDPOINT: endpoint MCP internal container, default/HEALTH_PATH: endpoint health, default/healthzALLOWED_ORIGINS: daftar origin yang diizinkan, dipisah koma. Kosong = semua origin lolos di layer app. Tetap gunakan proteksi di Traefik / jaringan.
Menjalankan dengan Docker
cp .env.example .env
# edit sesuai environment
docker compose up -d --build
Traefik pathPrefix
docker-compose.yml sudah menyiapkan label untuk:
- router:
PathPrefix(/mcp-node-exporter) - middleware:
StripPrefix(/mcp-node-exporter)
Dengan begitu:
- URL MCP dari sisi client:
/mcp-node-exporter - URL health dari sisi client:
/mcp-node-exporter/healthz
Contoh konfigurasi MCP client
Codex / client berbasis Streamable HTTP
[mcp_servers.prometheus_node_exporter]
url = "https://YOUR_DOMAIN/mcp-node-exporter"
Contoh penggunaan tool
1. Dapatkan daftar instance node exporter
Gunakan tool:
prometheus_label_values
Input:
{
"label": "instance",
"match": "up{job=\"node-exporter\"}"
}
2. Analisa satu node tertentu
Gunakan tool:
{
"job": "node-exporter",
"instance": "10.0.0.5:9100"
}
3. Instant query custom
{
"query": "100 * (1 - avg by(instance) (rate(node_cpu_seconds_total{job=\"node-exporter\", mode=\"idle\"}[5m])))"
}
4. Analisa kondisi semua container cAdvisor
Gunakan tool analyze_cadvisor:
{
"job": "cadvisor"
}
Untuk filter container tertentu (substring match):
{
"job": "cadvisor",
"container": "redis"
}
Catatan keamanan
MCP transport HTTP sebaiknya diamankan. Spesifikasi MCP menekankan validasi Origin, binding yang tepat, dan autentikasi untuk server remote. Streamable HTTP adalah transport yang direkomendasikan untuk server remote, dan server harus menyediakan satu endpoint HTTP yang mendukung POST dan GET. citeturn2search1turn3view1
Prometheus juga menyediakan HTTP API resmi untuk instant query, range query, metadata, dan label values; server ini memakai endpoint-endpoint tersebut. citeturn1view2