AI可观测性平台

基于OpenTelemetry和Honeycomb MCP服务器构建的AI驱动的分布式系统可观测性平台,用于实时监控、调试和优化性能问题。

  • by cloudvignesh
  • 云端部署
  • 1 星标
  • 更新于
在 GitHub 查看 cloudvignesh/ai-observability

使用说明

AI可观测性

该项目展示了一个使用开放遥测和HoneyComb MCP服务器的基于人工智能的可观察性项目。

项目详情

为了说明开放遥测和蜂窝MCP服务器的功能,我们使用了开放遥测社区开发人员开发的开源项目。演示项目由用不同编程语言编写的微服务组成,这些微服务通过gRPC和HTTP相互通信;以及使用Locust伪造用户流量的负载生成器。 请访问 演示架构 从官方文件。

项目背景

在当今的技术环境中,中断和性能问题,如请求缓慢、API错误和随机内部500错误,可能会导致重大中断,通常会导致Twitter等平台上的广泛恐慌。对于分布式系统来说尤其如此,调试成为一项艰巨而复杂的任务。由于需要在有限的时间内分析大量的仪表板、指标和日志,确定故障的根本原因可能会让人感到不知所措。

该项目旨在通过构建一个完整的可观察性环境来简化调试过程,从而解决这一痛点。使用 Kubernetes, 开放遥测, 蜂窝,以及 蜂窝MCP服务器,我们将建立一个解决方案,不仅可以让您有效地监控分布式系统,还可以让您快速发现问题。

该项目的一个关键特征是集成了 AI助手 这可以帮助您调试性能问题。通过简单地询问为什么服务速度慢,人工智能将从Honeycomb中提取相关的遥测数据,并实时提供见解,从而大大减少故障排除和解决问题所需的时间。

该系统旨在简化观察、调试和维护现代分布式应用程序的过程,为工程师和DevOps团队节省时间并减少挫折感。让我们潜入水中!

我们将从这个项目中构建什么?

本指南将引导您完成完整的可观察性工作流程:

  • 在Azure中设置Azure Kubernetes服务(AKS)
  • 部署OpenTetry演示应用程序
  • 设置HoneyComb帐户
  • 路由所有遥测HoneyComb
  • 在VS代码中集成HoneyComb MCP
  • 使用OAuth进行身份验证
  • 最后,使用自然语言调试我们的系统

最后,您将在AKS集群中运行一个完整的AI驱动的可观察性堆栈

数据流概述

技术指南

步骤1:设置Kubernetes集群

要在Azure中创建kubernetes集群,请按照以下步骤操作 readme.md 它清楚地解释了如何设置集群的分步说明。

步骤2:创建HoneyComb帐户

  • 首选 https://ui.honeycomb.io
  • 注册(谷歌或电子邮件)
  • 创造环境
  • 转到设置和API键
  • 复制您的团队API密钥

我们将使用的数据集名称: Otel演示

步骤3:安装OTEL Helm Chart

添加OTEL Helm仓库

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm repo update

创建命名空间

kubectl create namespace otel-demo

步骤4:创建values.yaml

使用以下命令创建一个名为values.yaml的文件:

opentelemetry-collector:
  enabled: true

  config:
    receivers:
      otlp:
        protocols:
          http: {}
          grpc: {}

    processors:
      batch: {}

    exporters:
      otlphttp/honeycomb:
        endpoint: https://api.honeycomb.io
        headers:
          x-honeycomb-team: "<YOUR_API_KEY>"
          x-honeycomb-dataset: "otel-demo"

    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [otlphttp/honeycomb]

        metrics:
          receivers: [otlp]
          processors: [batch]
          exporters: [otlphttp/honeycomb]

        logs:
          receivers: [otlp]
          processors: [batch]
          exporters: [otlphttp/honeycomb]

将<YOUR_API_KEY>替换为蜂窝钥匙。

步骤5:使用helm部署OTEL演示应用程序

安装演示+收集器

helm upgrade --install otel-demo open-telemetry/opentelemetry-demo \
  -n otel-demo -f values.yaml

验证Pod

kubectl get pods -n otel-demo

查看以下Pod是否正在运行:

  • 前端
  • 汽车服务
  • 负载发生器
  • Otel收集器

步骤6:为网关-API设置网关资源

注: 确保创建了所有必要的资源,如集群设置、负载均衡器设置、配置ALB控制器,如中所述 readme.md. 完成所有设置后,按照以下说明创建网关资源

RESOURCE_GROUP='<resource group name of the Application Gateway For Containers resource>'
RESOURCE_NAME='alb-web-app-test'

RESOURCE_ID=$(az network alb show --resource-group $RESOURCE_GROUP --name $RESOURCE_NAME --query id -o tsv)
FRONTEND_NAME='otel-demo'

kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: gateway-03
  namespace: otel-demo
  annotations:
    alb.networking.azure.io/alb-id: $RESOURCE_ID
spec:
  gatewayClassName: azure-alb-external
  listeners:
  - name: http
    port: 80
    protocol: HTTP
    allowedRoutes:
      namespaces:
        from: Same
  addresses:
  - type: alb.networking.azure.io/alb-frontend
    value: otel-demo
EOF

步骤7:设置HTTProute资源

配置HTTProute资源,将流量路由到负载均衡器的入站端点

kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: otel-demo-route
  namespace: otel-demo
spec:
  parentRefs:
  - name: gateway-03
  rules:
  - backendRefs:
    - name: frontend-proxy
      port: 8080
      weight: 1
EOF

步骤8:探索应用程序

打开浏览器并粘贴负载均衡器端点,以访问打开的遥测演示店面UI

行动: 探索应用程序:前往购物->在购物车中添加产品->下单。这样,指标和痕迹就会出现在蜂窝状仪表板上。

步骤9:检查蜂窝仪表板

  • 打开Honeycomb.io
  • 选择数据集: Otel演示
  • 验证:
    • 痕迹到达
    • 跨度瀑布
    • 延迟图
    • 服务地图
    • 错误率

如果您看到新的痕迹,您的收集器正在正确导出。

步骤9:在VS代码中设置HoneyComb MCP

  1. 打开VS代码设置 搜索:模型上下文协议

  2. 添加Honeycomb MCP服务器配置 添加您的VS Code的MCP服务器:

{
  "servers": {
    "honeycomb": {
      "url": "https://mcp.honeycomb.io/mcp",
      "type": "http"
    }
  },
  "inputs": []
}
  1. 重新启动VS代码
  2. OAuth登录 VS Code将弹出浏览器:
  • 登录Honeycomb
  • 点击 允许

现在VS Code Copilot Chat可以直接查询您的蜂窝数据。

步骤10:自然语言MCP问题:

在VS Code的Copilot聊天中使用这些:

演出

  1. 显示过去20分钟内最慢的端点。
  2. 列出前5个最慢的服务。
  3. 哪些端点的p95延迟>500ms?
  4. 是什么导致了最后一个小时的延迟飙升?
  5. 显示结账耗时超过500毫秒的痕迹。

错误

  1. 列出错误率最高的端点。
  2. 今天哪个服务产生的错误最多?
  3. 显示按服务分组的最近100个错误。

交通

  1. 在过去的一个小时里,哪个服务处理了最多的请求?
  2. 显示当前最繁忙的端点。
  3. 按请求量排名前10位的端点是什么?

调试

  1. 解释最近延迟飙升的原因。
  2. 总结过去30分钟的异常情况。
  3. 为什么今天结账很慢?
  4. 显示前端花费超过1秒的痕迹。

请参阅下面的屏幕截图,了解MCP服务和Copilot 将有助于对应用程序指标、跟踪和日志进行故障排除或调试。

Open Teletry演示应用程序提供的附加服务

一旦通过端口转发或负载均衡器暴露,就可以访问其他服务进行跟踪、监控和负载生成。

  • Jaeger用户界面http://localhost:8080/jaeger/ui/
  • 格拉法纳http://localhost:8080/grafana/
  • Load Generator用户界面http://localhost:8080/loadgen/
  • 功能标志UIhttp://localhost:8080/feature/

建造于 云维涅什