ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

如何给 Higress 接上监控:从指标采集到有效告警的实操指南

如何给 Higress 接上监控:从指标采集到有效告警的实操指南 如何给 Higress 接上监控从指标采集到有效告警的实操指南【免费下载链接】higress AI Gateway | AI Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/hi/higress线上故障总是这样网关开始返回 5xx你打开控制台却不知道该看哪里是网关自身的问题还是上游服务的问题只能靠猜。你真正想要的是一块能同时看流量、成功率、延迟的 Higress 监控面板。好消息是Higress 作为云原生网关Prometheus 指标能力是内置的差的就是一份采集配置和一块 Grafana 面板把它们接上网关的可观测性就基本到位了。先看清链路网关指标从哪来动手改配置之前值得花一分钟弄清楚数据从哪产出。网关 Pod 里跑的是 Envoy它监听 15020 端口端口名istio-prom上面有一个现成的/stats/prometheus端点。Higress 的 Helm 模板在开关打开后会自动生成一个 PodMonitor 资源相当于替你对 Prometheus 说了一句找到 Higress 网关的 Pod按这个端口和路径去定期抓指标。理解这条链路能省掉以后一半的排障时间数据不出来大概率卡在三个地方之一——开关没开、选择器没匹配上 Pod、或者端点本身访问不通。从开关到面板让数据落地的完整流程打开指标采集开关在 helm/core/values.yaml 里gateway.metrics.enabled默认是false所以什么都不配的时候 Prometheus 不会抓任何东西。需要改动的是下面三项gateway: metrics: enabled: true # 打开后才会生成 PodMonitor 资源 provider: monitoring.coreos.com # 面向 kube-prometheus-stack 环境 podMonitorSelector: release: kube-prome # 打在 PodMonitor 上的标签供监控栈识别podMonitorSelector管的是生成的 PodMonitor 带什么标签必须和你监控栈里的选择器对得上kube-prometheus-stack 默认就是release: kube-prome。provider则决定生成哪种 CRDmonitoring.coreos.com对应 PodMonitor如果你用的是 VictoriaMetrics可以填operator.victoriametrics.com模板会改出 VMPodScrape。让采集配置在集群里生效# 用修改后的 values 文件覆盖式升级使 PodMonitor 生成 helm upgrade higress ./helm/core -n higress-system -f values.yaml升级完成后kubectl get podmonitor -n higress-system应该能看到名为*-metrics的资源。它的关键内容由 helm/core/templates/podmonitor.yaml 这个模板渲染spec: jobLabel: app.kubernetes.io/name selector: matchLabels: app: higress-gateway # 由网关标签自动渲染别手改 podMetricsEndpoints: - port: istio-prom path: /stats/prometheus如果想控制采集节奏在gateway.metrics下补interval: 15s和scrapeTimeout: 5s即可留空则交给 Prometheus 的全局默认值。把 Grafana 面板接上仓库的中文 README 里对可观测性的说明是Grafana 和 Prometheus 用内置的或自建的都行。Prometheus 开始有数之后把 Higress 官方仪表盘模板导入 Grafana数据源选你的 Prometheus流量、成功率、延迟分布这些面板就都出来了开头那张动图就是面板跑起来之后的效果。进阶调优压低采集成本配出有效告警 压低采集成本全量指标的基数很高规模小的时候无所谓路由和集群一多Prometheus 的存储和内存就会开始吃力。可以分两层压global: liteMetrics: true # 轻量指标模式模板会给 Envoy 打上 LITE_METRICS proxy: proxyStatsMatcher: inclusionRegexps: - http.* # 只保留实际会看的指标默认 .* 是全放 - tcp.*liteMetrics管的是 Envoy 统计模式proxyStatsMatcher管的是哪些 stats 名称能进 Prometheus两者叠加后暴露量会明显下降。服务多的集群还可以顺手确认gateway.resources默认 2000m / 2048Mi给监控开销和业务容量之间留好边界。 配出有效告警告警的意义是半夜被叫醒看一眼就能开始定位。最值得先写的是 5xx 错误率groups: - name: higress.rules rules: - alert: HigressHighErrorRate expr: | # 5 分钟窗口内 5xx 占比超过 1%持续 3 分钟才触发 sum(rate(http_requests_total{status_code~5..}[5m])) / sum(rate(http_requests_total[5m])) 0.01 for: 3m labels: severity: critical面板侧建议固定盯四个视图请求流量http_requests_total、成功率非 5xx 占比、延迟分布http_request_duration_seconds_bucket、网关 Pod 的资源占用。排障时拿这四样和故障前的基线一比就能区分是网关问题还是上游问题。验证与排障数据没落地时从哪里查配完一切但 Prometheus 里看不到网关指标按链路顺序查三个点资源在不在kubectl get podmonitor -n higress-system没有就是开关没生效或升级没真正落下去。标签对不对拿 PodMonitor 的spec.selector.matchLabels和kubectl get pod -n higress-system --show-labels的输出逐字比对差一个字符就是静默不抓。端点通不通kubectl exec -it higress-gateway-pod -n higress-system -- curl -s localhost:15020/stats/prometheus | head能吐出指标文本才算链路打通返回 404 或连不上那是 Pod 自身的问题不在监控范畴。这三处之外剩下的才轮到监控栈自身服务发现、采集间隔去找。想继续往下走所有开关都在 helm/core/values.yaml采集模板在 helm/core/templates/podmonitor.yaml可观测性的完整说明见仓库根目录的 README_ZH.md。下一步可以试着把一块面板接进值班群让告警链路真正闭环。【免费下载链接】higress AI Gateway | AI Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/hi/higress创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表