Provides monitoring for PostgreSQL databases, including checks for liveness, transactions per second (QPS), cache hit ratio, and active connections.
Enables monitoring and querying of Prometheus metrics, including system resources, disk usage, network stats, and custom PromQL execution across different environments.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP PrometheusShow me the average CPU usage for CMS AP #1 in prod over the last 24 hours"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Prometheus + Loki ๐
Prometheus + Loki ๊ธฐ๋ฐ ๋ชจ๋ํฐ๋ง์ฉ MCP ์๋ฒ์
๋๋ค.
์ํธ๋ฆฌํฌ์ธํธ๋ main.py์
๋๋ค.
Quick Start ๐
cd d:\MCPTools
uv sync
uv run python mcp_prometheus/main.pyํ๋ก์ ํธ ๊ตฌ์กฐ ๐งฉ
mcp_prometheus/
main.py
core/
config.py
runtime.py
server.py
time_utils.py
domain/
checks.py
infra/
loki_client.py
prom_client.py
tools/
catalog.py
alerts_runner.py
checks_runner.py
loki_query.py
promql.py
utils/
query_utils.py
summarize.pyTools ์์ฝ ๐ ๏ธ
Tool | ๋ชฉ์ | ๋น๊ณ |
| ๋ฑ๋ก๋ ์ฒดํฌ ๋ชฉ๋ก ์กฐํ |
|
| ํ๊ฒฝ๋ณ Prometheus URL ์กฐํ |
|
| ์ต๊ทผ up ๊ธฐ์ค ์๋ฒ ๋ชฉ๋ก ์กฐํ |
|
| ํ๋ก์ธ์ค ๊ทธ๋ฃน ๋ชฉ๋ก ์กฐํ |
|
| ํ๊ฒฝ๋ณ Loki URL ์กฐํ |
|
| ์ต๊ทผ ๋ก๊ทธ ๊ธฐ์ค host ํ๋ณด ์กฐํ | ๊ธฐ๋ณธ ์ต๊ทผ 1์๊ฐ |
| ์ต๊ทผ ๋ก๊ทธ ๊ธฐ์ค app ํ๋ณด ์กฐํ | ๊ธฐ๋ณธ ์ต๊ทผ 1์๊ฐ |
| ๊ตฌ์กฐํ๋ Loki ๋ก๊ทธ ์กฐํ |
|
| Prometheus ํ์ฑ Alert ์กฐํ |
|
| ๋จ์ผ ์ฒดํฌ ์คํ | ๊ธฐ๋ณธ ๊ถ์ฅ |
| ์ ์ฒด ์ฒดํฌ ๋ณ๋ ฌ ์คํ |
|
| ์ฌ์ฉ์ PromQL ์ง์ ์คํ |
|
Loki Tool ์ ๋ ฅ ๊ฐ์ด๋ ๐ชต
ํ๊ฒฝ ๊ตฌ๋ถ
loki_environment: ์ด๋ค Loki ์๋ฒ๋ก ๋ถ์์ง ์ ํ (prod,dev_test)log_env: Loki ๋ก๊ทธ ๋ผ๋ฒจenv๊ฐ (prod,DEV,TEST)
์ด ๋์ ๊ฐ์ ์๋ฏธ๊ฐ ์๋๋๋ค.
์๋ฅผ ๋ค์ด dev_test Loki ์๋ฒ ์์ DEV์ TEST ๋ก๊ทธ๊ฐ ํจ๊ป ์์ ์ ์์ผ๋ฏ๋ก, find_logs ํธ์ถ ์ log_env๋ ๋ช
์์ ์ผ๋ก ๋ฃ์ด์ผ ํฉ๋๋ค.
Discovery Tool
list_loki_hostslist_loki_apps
๊ณตํต ๊ท์น:
๊ธฐ๋ณธ ๊ธฐ๊ฐ์ ์ต๊ทผ 1์๊ฐ
์ ๋ ์๊ฐ ์กฐํ ์
start_time_utc_iso,end_time_utc_iso์ฌ์ฉ๊ฒฐ๊ณผ๋ ์ค๋ณต ์ ๊ฑฐ๋ ํ๋ณด ๋ชฉ๋ก ๋ฐํ
find_logs
ํ์:
loki_environmentlog_envhostapp
์ ํ:
๊ธฐ๊ฐ:
hours,minutes,days์ ๋ ์๊ฐ:
start_time_utc_iso,end_time_utc_iso์ข ๋ฃ ์คํ์ :
end_offset_minutes,end_offset_hours,end_offset_daysํํฐ:
contains,level๊ฐ์ ์ ํ:
limit
์๋ต:
์์ฑ๋ LogQL
UTC ๋ฒ์
line_countlogs[](timestamp,timestamp_jakarta,labels,line)
run_check ์
๋ ฅ ๊ฐ์ด๋ ๐งญ
ํ์
check_id
๊ธฐ๊ฐ
์๋:
hours,minutes,days์ ๋:
start_time_utc_iso,end_time_utc_iso์ข ๋ฃ ์คํ์ :
end_offset_minutes,end_offset_hours,end_offset_days
ํ๊ฒ ํํฐ
server_nameinstance(์:host-or-ip:9100)
ํํฐ ๊ท์น:
server_name์instance๋ฅผ ํจ๊ป ์ฃผ๋ฉด AND ์ ์ฉํ๋๋ง ์ฃผ๋ฉด ํด๋น ๋ผ๋ฒจ๋ง ์ ์ฉ
run_promql ๊ฐ๋๋ ์ผ ๐
approved=False: ์คํํ์ง ์๊ณ ํ์ธ ๋ฉ์์ง ๋ฐํapproved=True: ์คํ
๋ชจ๋:
instant=True->/api/v1/queryinstant=False->/api/v1/query_range
์ฌ์ฉ ์์ ๐
1) ํน์ ์๋ฒ CPU ํ๊ท (์ต๊ทผ 24์๊ฐ)
{
"check_id": "cpu_avg_pct",
"hours": 24,
"instance": "10.23.12.11:9100",
"environment": "prod"
}2) ํน์ ์๋ฒ ๋์คํฌ ์ฌ์ฉ๋ฅ (mountpoint๋ณ)
{
"check_id": "disk_used_pct_by_mount",
"hours": 24,
"server_name": "CMS AP #1",
"environment": "prod"
}3) ์ฌ์ฉ์ PromQL ์คํ (instant)
{
"promql": "up",
"approved": true,
"instant": true,
"environment": "prod"
}4) Loki host ํ๋ณด ์กฐํ
{
"loki_environment": "dev_test",
"log_env": "DEV",
"app": "finast",
"hours": 1
}5) Loki ๋ก๊ทธ ์กฐํ
{
"loki_environment": "prod",
"log_env": "prod",
"host": "cms-ap-01",
"app": "cms",
"hours": 1,
"contains": "timeout",
"limit": 200
}CHECKS Catalog โ
Source:
domain/checks.py(CHECKS)
System / Resource
cpu_avg_pct: CPU average usage (%) by instance/server_namecpu_peak_pct: window peak CPU usage (%) over selected rangemem_used_pct: memory used ratio (%)mem_swap_used_pct: swap used ratio (%)load15_avg: 15-minute load averagecpu_iowait_pct: CPU iowait ratio (%)
Disk / Filesystem
disk_used_pct_by_mount: filesystem used (%) by mountpoint/device (0-100 scale)disk_used_top5_pct: top 5 filesystem usage (%)disk_inodes_used_pct: inode usage (%)fs_readonly: readonly filesystem indicator (1=readonly)disk_io_busy_pct: disk I/O busy ratio (%)
Availability
up: target liveness (1=up, 0=down)
Network / TCP
net_in_bytes: inbound throughput (bytes/sec)net_out_bytes: outbound throughput (bytes/sec)net_errs_per_sec: RX+TX network errors per secondtcp_retrans_per_sec: TCP retransmit segments per secondtcp_established: established TCP connectionstcp_time_wait: TIME_WAIT TCP socketstcp_inuse: in-use TCP socketstcp_orphan: orphan TCP sockets
Process Monitoring
proc_cpu_pct: process group CPU usage (%)proc_mem_bytes: process group memory usage (bytes)proc_count: process group process count
PostgreSQL
pg_up: PostgreSQL exporter up state (1=up, 0=down)pg_qps: PostgreSQL transactions/sec (commit + rollback)pg_cache_hit_pct: PostgreSQL buffer cache hit ratio (%)pg_active_conn: active PostgreSQL connections
ํ๊ฒฝ ๋ณ์ ์์ฝ โ๏ธ
PROM_ENV_URLS={"prod":"http://...:9090","dev_test":"http://...:9090","dr":"http://...:9090"}
PROM_URL=http://...:9090
PROM_BEARER_TOKEN=
PROM_TIMEOUT_SEC=15
LOKI_ENV_URLS={"prod":"http://...:3100","dev_test":"http://...:3100"}
LOKI_URL=http://...:3100
LOKI_BEARER_TOKEN=
LOKI_TIMEOUT_SEC=15
ALERT_WARN_PCT=85
ALERT_CRIT_PCT=95
ALERT_SUSTAIN_MINUTES=5
PROM_MAX_SAMPLES_PER_SERIES=5000
PROM_MAX_PARALLEL_CHECKS=6ํ๊ฒฝ ์ ํ ์ฐ์ ์์:
environmentenv_hintPROM_URLfallback
Loki ํ๊ฒฝ ์ ํ ์ฐ์ ์์:
loki_environmentLOKI_URLfallback
์ด์ ํ ๐ก
๋ฆฌํฌํธ ์ถ๋ ฅ ์
%๋จ์๋ฅผ ๋ช ํํ ํ๊ธฐํ์ธ์.๋จ์ผ ์๋ฒ ์ ๊ฒ์
instance๋๋server_nameํํฐ๋ฅผ ์ฌ์ฉํ์ธ์.disk_used_pct_by_mount๊ฐ์ 0~100 ์ค์ผ์ผ์ ๋๋ค. (0.8=0.8%)Loki ์กฐํ ์ ์๋
list_loki_hosts๋๋list_loki_apps๋ก ํ๋ณด๊ฐ์ ๋จผ์ ํ์ธํ๋ ํธ์ด ์์ ํฉ๋๋ค.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.