Envoy Gateway 代理指标监控实践指南

Envoy Gateway 代理指标监控实践指南

gateway Manages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway gateway 项目地址: https://gitcode.com/gh_mirrors/gate/gateway

前言

在现代云原生架构中,服务网格和 API 网关的监控能力至关重要。Envoy Gateway 作为基于 Envoy 构建的 Kubernetes 原生网关解决方案,提供了强大的可观测性功能。本文将深入介绍如何配置和使用 Envoy Gateway 的代理指标监控功能。

核心概念解析

在开始实践之前,我们需要理解几个关键概念:

  1. 控制平面指标:Envoy Gateway 自身运行状态的监控数据
  2. 数据平面指标:底层 Envoy 代理实例的性能和行为数据
  3. 指标采集方式
    • Prometheus:经典的拉取式监控系统
    • OpenTelemetry:新一代的指标采集和传输标准

准备工作

确保已满足以下前提条件:

  1. Kubernetes 集群正常运行
  2. Envoy Gateway 已部署并运行
  3. 监控组件(Prometheus 或 OpenTelemetry Collector)已安装

Prometheus 指标采集实践

基础查询方法

通过端口转发访问 Prometheus 服务:

PROMETHEUS_PORT=$(kubectl get service prometheus -n monitoring -o jsonpath='{.spec.ports[0].port}')
kubectl port-forward service/prometheus -n monitoring 19001:$PROMETHEUS_PORT

执行 PromQL 查询示例:

curl -s 'http://localhost:19001/api/v1/query?query=topk(1,envoy_cluster_upstream_cx_connect_ms_sum)' | jq .

直接访问 Envoy 指标端点

获取 Envoy Pod 并设置端口转发:

ENVOY_POD_NAME=$(kubectl get pod -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg -o jsonpath='{.items[0].metadata.name}')
kubectl port-forward pod/$ENVOY_POD_NAME -n envoy-gateway-system 19001:19001

查看特定路由的指标:

curl localhost:19001/stats/prometheus | grep "default/backend/rule/0"

高级配置:禁用 Prometheus 指标

当使用 OpenTelemetry 作为主要指标采集方式时,可以通过 EnvoyProxy CRD 禁用 Prometheus 指标:

apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
  name: prometheus
  namespace: envoy-gateway-system
spec:
  telemetry:
    metrics:
      prometheus:
        disable: true

OpenTelemetry 指标采集实践

基础配置

将指标导出到 OpenTelemetry Collector:

apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
  name: otel-sink
  namespace: envoy-gateway-system
spec:
  telemetry:
    metrics:
      sinks:
        - type: OpenTelemetry
          openTelemetry:
            host: otel-collector.monitoring.svc.cluster.local
            port: 4317

调试模式(仅用于开发)

临时启用 debug exporter 查看指标:

helm upgrade eg-addons oci://docker.io/envoyproxy/gateway-addons-helm --version {{< helm-version >}} -n monitoring --reuse-values --set opentelemetry-collector.config.service.pipelines.metrics.exporters='{debug,prometheus}'

查看 Collector 日志:

OTEL_POD_NAME=$(kubectl get pod -n monitoring --selector=app.kubernetes.io/name=opentelemetry-collector -o jsonpath='{.items[0].metadata.name}')
kubectl logs -n monitoring -f $OTEL_POD_NAME --tail=100

关键指标解析

Envoy Gateway 提供丰富的指标数据,以下是一些关键指标:

  1. 连接指标

    • envoy_cluster_upstream_cx_total:上游连接总数
    • envoy_cluster_upstream_cx_active:活跃连接数
  2. 请求指标

    • envoy_http_downstream_rq_total:下游请求总数
    • envoy_http_downstream_rq_xx:按状态码分类的请求数
  3. 延迟指标

    • envoy_cluster_upstream_rq_time:请求处理时间
    • envoy_cluster_upstream_cx_connect_ms:连接建立时间

生产环境建议

  1. 指标采样:对于高流量环境,考虑配置指标采样率
  2. 标签控制:合理控制指标标签数量,避免基数爆炸
  3. 长期存储:将指标数据导出到时序数据库进行长期存储和分析
  4. 告警规则:基于关键指标设置合理的告警阈值

总结

Envoy Gateway 提供了灵活强大的指标监控能力,支持通过 Prometheus 和 OpenTelemetry 两种主流方式采集和导出指标。在实际生产环境中,建议根据具体需求选择合适的监控方案,并配合 Grafana 等可视化工具构建完整的可观测性体系。

gateway Manages Envoy Proxy as a Standalone or Kubernetes-based Application Gateway gateway 项目地址: https://gitcode.com/gh_mirrors/gate/gateway

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高慈鹃Faye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值