Kubernetes可观测性工具

一个用于探索Kubernetes指标、日志、追踪和服务图数据的轻量级服务器工具,支持通过Prometheus、Jaeger和Neo4j进行数据查询和分析。

  • by martinimarcello00
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 martinimarcello00/k8s-observability-mcp

使用说明

☸️ Kubernetes 可观测性 MCP(管理控制平面)

小型MCP服务器,让您能够通过简单工具探索Kubernetes指标、日志、追踪和服务图数据。

  • 🐍 Python 3.13
  • 📈 Prometheus(普罗米修斯)
  • 🔎 雅各(Jaeger,品牌名也常译作“雅克”)
  • 🕸️ Neo4j(一种图数据库)
  • ☸️ Kubernetes API

特点/功能

  • 📊 获取Pod/Service指标(即时和范围)
  • 📜 阅读带有重要行过滤的pod/service日志
  • 🔗 Neo4j的服务图(使用/依赖关系)
  • 🧭 集群概览(Pods 和 Services)
  • 🧵 从 Jaeger 中提取追踪摘要和详细信息

要求

  • 🐍 Python 3.13+
  • 📦 诗歌
  • ☸️ 访问您的集群(本机上的 kubeconfig 文件)
  • 📈 Prometheus URL(译文:📈 Prometheus 的网址)
  • 🔎 Jaeger URL(译文:🔎 Jaeger 网址)
  • 🕸️ Neo4j 的URI(统一资源标识符)、用户名、密码

设置

  • 安装(诗歌)
poetry install
  • 配置环境
cp .env.example .env
# edit .env with your values

跑

poetry run python mcp_server.py

然后连接到您的MCP客户端以使用这些工具。

工具

🔍 翻译为中文是:放大镜(用于查看细节或寻找某物) Kubernetes 资源检查

  • get_pods_from_service(service)

    • 返回属于特定服务的所有Pod
    • 显示Pod名称和当前状态(运行中、待处理等)
  • get_cluster_pods_and_services()

    • 全面的集群概览
    • 列出所有带有计数的Pod和Service

📊(表格) 指标与可观测性

  • get_metrics(resource_name, resource_type)

    • 获取Pod或服务的即时Prometheus指标
    • 参数:
      • resource_nameKubernetes 资源的确切名称
      • resource_type“pod”或“service”(两者选其一)
    • 返回CPU、内存、网络、线程和容器的规格
  • get_metrics_range(resource_name, resource_type, time_range_minutes)

    • 从Prometheus获取指定时间范围内的历史指标
    • 参数:
      • resource_nameKubernetes 资源的确切名称
      • resource_type“pod”或“service”均可
      • time_range_minutes分钟级历史回顾(最少1分钟)
  • get_logs(resource_name, resource_type, tail=100, important=True)

    • 检索Pod/Service日志,并可选择性地进行关键字过滤
    • 参数:
      • resource_nameKubernetes 资源的确切名称
      • resource_type“pod”或“service”
      • tail要检索的最近日志行数(默认:100)
      • important如果为真,则过滤掉包含 ERROR、WARN、CRITICAL 关键字的内容(默认:为真)

🔗(链接符号,无实际翻译内容,可保持原样或根据上下文替换为具体链接描述) 服务依赖关系与图表

  • get_services_used_by(service)

    • 返回由给定服务调用的下游服务
    • 显示服务依赖链(谁调用谁)
  • get_dependencies(service)

    • 检索服务的基础设施依赖项
    • 包括数据库、缓存、消息队列等。

🧵 线(或“线轴”) 分布式追踪

  • get_traces(service_name, only_errors=False)

    • 从Jaeger中检索特定服务的追踪信息
    • 参数:
      • service_name用于检索追踪的服务名称
      • only_errors如果为真,则仅返回包含错误的追踪(默认:假)
    • 返回值:traceID(追踪ID)、latency_ms(延迟时间,毫秒)、has_error(是否有错误)、service sequence(服务序列)
  • get_trace(trace_id)

    • 通过ID检索特定追踪的详细信息
    • 参数:
      • trace_id用于检索的唯一追踪ID
    • 包括所有带有时间戳、持续时间、标签和错误信息的跨度

注释

  • 使用你的默认 kubeconfig。在 .env 文件中设置 TARGET_NAMESPACE 以限定查询范围。

  • 🕸️ 服务图文档:参见 service-graph/README.md 关于如何构建Neo4j服务图(Jaeger调用图+静态使用图)、如何加载它以及结果图。