Prometheus和Loki查询服务

一个用于查询Prometheus指标和Loki日志的服务,支持OIDC认证和Kubernetes部署。

  • by agarwalvivek29
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 agarwalvivek29/opentelemetry-mcp

使用说明

Otel mcp

MCP服务器,用于通过OIDC身份验证查询Prometheus指标和Loki日志。

特性

  • 查询Prometheus指标(PromQL)
  • 查询Loki日志(LogQL)
  • 用于K8s部署的HTTP API
  • 服务发现(指标、标签、日志流)

快速开始

地方发展

# 1. Install
git clone <your-repo-url>
cd otel-mcp
uv sync

# 2. Configure .env
cp .env.example .env
# Edit .env with your Prometheus/Loki URLs

# 3. Run (stdio mode for local MCP)
uv run python -m src.server

生产(Kubernetes+Authentik)

看 K8S_部署.md 获取完整部署指南。

# Build and deploy
docker build -t your-registry/otel-mcp:latest .
kubectl apply -f k8s/

# Access at https://otel-mcp.your-domain.com

可用工具

普罗米修斯(5个工具)

  • query_prometheus -执行PromQL即时查询
  • query_prometheus_range -查询时间范围内的指标
  • list_metrics -列出可用指标
  • list_label_values -获取标签值(发现服务)
  • list_labels -列出所有标签名称

洛基(4工具)

  • query_loki -执行LogQL查询
  • search_logs -使用过滤器进行简单的日志搜索
  • list_log_labels -列出日志流标签
  • list_log_label_values -获取日志标签值

用法

生产:带有Authentik OAuth代理的K8s

在Authentik后面部署HTTP服务器进行身份验证。

看 K8S_部署.md 完成设置。

# Build and deploy
docker build -t registry/otel-mcp:latest .
kubectl apply -f k8s/

# Use the API
curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://otel-mcp.your-domain.com/tools

curl -X POST https://otel-mcp.your-domain.com/call \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tool": "query_prometheus", "arguments": {"query": "up"}}'

本地:MCP标准(开发)

适用于Claude Desktop等本地MCP客户端。

# Run stdio server
uv run python -m src.server

# Claude Desktop config
{
  "mcpServers": {
    "otel-mcp": {
      "command": "uv",
      "args": ["--directory", "/path/to/otel-mcp", "run", "python", "-m", "src.server"],
      "env": {
        "PROMETHEUS_URL": "http://localhost:9090",
        "LOKI_URL": "http://localhost:3100"
      }
    }
  }
}

配置选项

变量 默认值 描述
PROMETHEUS_URL http://localhost:9090 普罗米修斯端点
LOKI_URL http://localhost:3100 洛基终点
MCP_AUTH_ENABLED false 启用OIDC身份验证
MCP_OIDC_ISSUER OIDC提供商URL
MCP_OIDC_CLIENT_ID OAuth2客户端ID
MCP_OIDC_AUDIENCE - 代币受众(可选)
LOG_LEVEL INFO 日志记录级别
QUERY_TIMEOUT 30 查询超时(秒)

后端身份验证

Prometheus/Loki支持基本身份验证和承载令牌:

# Basic Auth
PROMETHEUS_AUTH_TYPE=basic
PROMETHEUS_USERNAME=admin
PROMETHEUS_PASSWORD=secret

# Bearer Token
LOKI_AUTH_TYPE=bearer
LOKI_BEARER_TOKEN=your-token

查询示例

# List services
{"tool": "list_label_values", "arguments": {"label": "job"}}

# Query CPU usage
{"tool": "query_prometheus", "arguments": {"query": "rate(cpu_usage[5m])"}}

# Search error logs
{"tool": "search_logs", "arguments": {"search_text": "error", "start": "1h"}}

许可证

麻省理工学院