buzz-push-gateway 如何启用 Prometheus 指标抓取与告警规则(PodMonitor 或 Datadog)?
buzz-push-gateway 如何启用 Prometheus 指标抓取与告警规则PodMonitor 或 Datadog【免费下载链接】buzzA hive mind communication platform项目地址: https://gitcode.com/GitHub_Trending/buzz14/buzz在 Kubernetes 上部署buzz-push-gateway后需要让监控系统抓到它的 Prometheus 指标并启用随仓库内置的告警规则。网关把指标放在私有健康端口BUZZ_PUSH_HEALTH_ADDR默认0.0.0.0:8081的GET /metrics上和/_liveness、/_readiness探针同一个端口永远不会暴露在公开的8080上。抓取是 opt-in 功能默认关闭默认 chart 渲染不包含PodMonitor/PrometheusRule8081也没有任何 pod ingress。本文基于 部署文档 和 chart 源码说明两条启用路径prometheus-operator 的 PodMonitor或 Datadog Autodiscovery以及渲染结果的验证方式。先弄清要抓取什么私有 8081 端口上的指标集启用前先确认监控源能否到达8081。网关导出的序列都是闭集标签、有界基数标签值只来自 APNs 结果类、固定准入结果、静态错误码和 readiness 原因不会把 endpoint、设备 token、relay 公钥或 request id 放进标签。指标包括见 部署文档 的 Metrics 一节Metric类型说明push_gateway_apns_send_attempts_totalcounter进入 APNs 发送缝的次数push_gateway_apns_deliveries_totalcounterAPNs 终态结果outcome取accepted|invalid_endpoint|retry|configuration_fault|permanent_request_faultpush_gateway_apns_delivery_secondshistogramAPNs 往返延迟秒push_gateway_admissions_totalcounter准入围栏结果result取admitted|rejected|unavailablepush_gateway_delivery_errors_totalcounter仅/v1/deliveries/apns热路径的退出类class为静态集push_gateway_reaper_failures_totalcounter保留清理 sweep 失败push_gateway_readiness_failures_totalcounterreadiness 探针失败cause取not_accepting|authority其中push_gateway_delivery_errors_total是刻意收窄的热路径信号不是整个 API 的总错误率。启用前的默认状态以下三个开关在 values.yaml 中全部为false即默认渲染不产生任何抓取资源podMonitor.enabled: false可选interval: 30s、scrapeTimeout: 10s、labels: {}prometheusRule.enabled: false可选apnsRetryRatioThreshold: 0.25、apnsRetryMinSamples: 20networkPolicy.monitoring.enabled: falsenamespaceSelector/podSelector默认空chart 的 NetworkPolicy 默认只放行8080ingressnetworkPolicy.monitoring.enabledtrue时会追加一条只允许 8081 且限定来源的 ingress 规则。模板 networkpolicy.yaml 会校验monitoring.enabledtrue但两个 selector 为空时直接fail——8081 抓取入口不允许无选择器的全量放行。路径一prometheus-operator 的 PodMonitor PrometheusRule适用于集群已安装 prometheus-operator存在monitoring.coreos.com/v1的PodMonitor、PrometheusRuleCRD。部署文档明确在没有这些 CRD 的集群上不要启用PodMonitor。需要设置的 valuespodMonitor: enabled: true prometheusRule: enabled: true networkPolicy: monitoring: enabled: true namespaceSelector: # 必须填写你的 Prometheus 所在 namespace 的标签 kubernetes.io/metadata.name: monitoring podSelector: # 必须填写 Prometheus pod 的标签 app.kubernetes.io/name: prometheus渲染出 PodMonitor 的模板见 podmonitor.yaml它抓取health端口的/metrics抓取间隔与超时来自podMonitor.interval/podMonitor.scrapeTimeout。仓库的渲染脚本 render.sh 给出了等价的命令行形式其中 selector 是该脚本用的示例值替换成你的监控组件实际标签即可helm template push deploy/charts/buzz-push-gateway \ --set podMonitor.enabledtrue \ --set prometheusRule.enabledtrue \ --set networkPolicy.monitoring.enabledtrue \ --set networkPolicy.monitoring.namespaceSelector.kubernetes\.io/metadata\.namemonitoring \ --set networkPolicy.monitoring.podSelector.app\.kubernetes\.io/nameprometheus注意两条硬约束模板会直接渲染失败而不是静默放行networkPolicy.monitoring.enabledtrue时namespaceSelector和podSelector必须都非空podMonitor.enabledtrue但没开networkPolicy.monitoring即没有 8081 ingress时必须失败——否则渲染出的 PodMonitor 指向一个不可达的抓取器。内置告警规则prometheusRule.enabledtrue会渲染 prometheusrule.yaml 中的 5 条规则Alert触发条件严重度文档给出的处置PushGatewayConfigurationFaultconfiguration_fault结果持续 10mcriticalAPNs 证书/topic/环境不健康检查BUZZ_PUSH_DOGFOOD_APNS_*配置此时 endpoint 不会被作废PushGatewayAdmissionUnavailableadmissionunavailable持续 5mcriticalPostgreSQL 权威存储不可达检查 DB 连通性与 pod 的postgresEgressCidrsNetworkPolicyPushGatewayReadinessAuthorityFailingreadinessauthority失败持续 5mwarning副本正在被移出 Service先修 DB 健康再让容量跌破 PodDisruptionBudgetPushGatewayReaperFailing30m 内 reaper 失败 ≥2 次每 5m 跑一次warning过期预订未被清理检查 DB 写可用性PushGatewayHighApnsRetryRate10m 窗口 retry 占比超过apnsRetryRatioThreshold默认0.25且样本数 ≥apnsRetryMinSamples默认20持续 15mwarningAPNs 限流或降级429/500/503投递延迟而非丢失两个可调项都有 schema 约束apnsRetryRatioThreshold是(0..1]的分数设为2这类大于 1 的值会在渲染时失败render.sh 中有对应的负例。路径二Datadog Autodiscovery无需 prometheus-operator CRDDatadog 路径不安装任何 CRD靠 pod annotation 的 Autodiscovery 发现同一个私有端点。仓库提供了只读渲染夹具 datadog-values.yaml其内容selector 是示例值注释要求替换为你集群中 Datadog Agent 实际的 namespace/pod 标签podAnnotations: ad.datadoghq.com/gateway.checks: | { openmetrics: { init_config: {}, instances: [{ openmetrics_endpoint: http://%%host%%:8081/metrics, service: buzz-push-gateway, namespace: block.buzz_push_gateway, metrics: [push_gateway_.*], histogram_buckets_as_distributions: true, send_distribution_buckets: true, send_monotonic_counter: true, collect_counters_with_distributions: true }] } } networkPolicy: monitoring: enabled: true namespaceSelector: kubernetes.io/metadata.name: datadog podSelector: app.kubernetes.io/name: datadog-agent即保持podMonitor.enabledfalse默认通过podAnnotations提供 OpenMetrics check并启用同一条窄选中的 8081 NetworkPolicy ingress。%%host%%是 Datadog Autodiscovery 的内置占位符由 Agent 替换为 pod IP不需要手工替换。需要说明的边界仓库内置的PrometheusRule告警只服务于 prometheus-operator 路径Datadog 路径在仓库中只提供抓取 checkDatadog 侧的 monitor/告警定义不在本文档范围内需在你的 Datadog 控制台中按上表指标另行配置。验证渲染结果仓库的 render.sh 把上述约束做成了自动化断言。该脚本只运行helm lint/helm template渲染到临时文件退出时清理不修改仓库、不部署集群可以放心执行deploy/charts/buzz-push-gateway/tests/render.sh它对渲染产物断言的关键点也可以作为你手工核对的清单默认渲染不含PodMonitor/PrometheusRuleNetworkPolicy ingress 只有8080监控开启的渲染PodMonitor的 endpoint 是port: health、path: /metricsPrometheusRule的 groups 非空名为push-buzz-push-gateway的 NetworkPolicy 中恰好一条8081 ingress 规则且其namespaceSelector与podSelector都非空Datadog 渲染不产生任何 scrape CRDDeployment 的ad.datadoghq.com/gateway.checksannotation 可被 JSON 解析endpoint 为http://%%host%%:8081/metrics、metrics 为[push_gateway_.*]同样恰好一条 selector 限定的 8081 ingress负例必须失败monitoring.enabledtrue配空 selector、podMonitor.enabledtrue但没有 8081 ingress、apnsRetryRatioThreshold2这三种渲染都应非零退出。边界与限制两种模式都只会追加一条限定来源的 8081 ingress 规则从不会是全量放行node/kubelet 发起的探针流量不受 NetworkPolicy 影响无需为探针加规则。8081保持私有chart 默认不为它提供任何 pod ingress指标也不会出现在公开8080上。若目标 CNI 要求 pod 来源的健康抓取才需要按部署文档的说法额外加入窄选中的监控源。生产环境部署时 chart 还有与监控无关的必填项已验证镜像 digest、dogfoodappAttestAppId、postgresEgressCidrs等见 values-production.yaml 的注释渲染守卫会拒绝缺失这些输入的配置。【免费下载链接】buzzA hive mind communication platform项目地址: https://gitcode.com/GitHub_Trending/buzz14/buzz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考