云原生可观测性指标监控监控大盘告警【免费下载链接】kube-prometheusUse Prometheus to monitor Kubernetes and applications running on Kubernetes项目地址https://gitcode.com/gh_mirrors/ku/kube-prometheus点击查看免费下载本指南基于 kube-prometheus 仓库中的 weave-net-support.md 及其配套 addon 源码讲解如何在集群中为 Weave NetKubernetes 的 CNI 网络插件搭建完整的可观测性方案。你将掌握如何用 jsonnet 一次性生成 Weave Net 的 Service、ServiceMonitor、Prometheus 告警规则和 Grafana 仪表盘如何按自身集群环境调整告警阈值如WeaveNetFastDPFlowsLow与WeaveNetIPAMUnreachable以及如何用 kubectl 将产物应用到集群。为什么需要监控 Weave NetWeave Net 是一个简单易用的 CNI 网络插件负责 Kubernetes 集群内的 Pod 间通信、跨节点网络路由与 IP 地址分配IPAM。CNI 层一旦出现问题往往表现为 Pod 网络不通、服务发现失败、节点间流量异常等难排查、影响面广的故障。因此对 CNI 提供方本身进行指标采集与告警是 Kubernetes 网络排障体系里至关重要的一环。Weave Net 原生对外暴露 Prometheus 格式的指标默认端口6782路径/metrics覆盖 FastDP 流转发、IPAM 分配状态、P2P 连接状态、连接终止速率等关键网络健康信号。kube-prometheus 在仓库中提供了完整的 Weave Net 监控 addon你无需手工编写 Service、ServiceMonitor、告警规则与仪表盘 JSON只需通过 jsonnet 组合即可生成全部清单文件。通过 kube-prometheus 你能获得哪些 Weave Net 监控组件在 weave-net.libsonnet 中addon 一次性定义了以下五类对象Serviceweave-net暴露 Weave Net 指标端口6782供 ServiceMonitor 抓取。这是一个clusterIP: None的无头 Service选择器为name: weave-net标签app.kubernetes.io/name: weave-net命名空间为kube-system。ServiceMonitorweave-net以15s间隔抓取/metrics路径通过namespaceSelector.matchNames: [kube-system]限定只从 kube-system 命名空间发现端点再通过selector.matchLabels精确匹配 weave-net 的 Service。PrometheusRuleweave-net-rules内置 11 条针对 Weave Net 关键指标的告警规则默认严重级别均为critical聚合后由 Alertmanager 统一处理。Grafana Dashboardpod 级weave-net.json提供按 Weave Net Pod 维度的细粒度监控面板。Grafana Dashboard集群级weave-net-cluster.json提供整个 Weave Net 集群层面的汇总视图。两个 Grafana 仪表盘通过mixin.grafanaDashboards注入到 kube-prometheus 的 Grafana 配置中因此会随 grafana-dashboardDefinitions.yaml 一起部署无需单独导入。底层抓取链路解析从 weave-net.libsonnet 的源码可以看到完整的指标采集链Weave Net Podkube-system端口 6782 └─► Service weave-netclusterIP: NonetargetPort 6782 └─► ServiceMonitor weave-netinterval 15spath /metrics └─► PrometheusjobLabel: app.kubernetes.io/name其中jobLabel: app.kubernetes.io/name表示 Prometheus 会把app.kubernetes.io/nameweave-net标签作为 job 标签这样告警表达式中的jobweave-net过滤即可生效。生成 Weave Net 监控清单jsonnet 完整示例在 examples/weave-net-example.jsonnet 中提供了可直接复制的完整 jsonnet 文件其核心思路是在kube-prometheus/main.libsonnet基础上叠加addons/weave-net/weave-net.libsonnet通过values::把公共命名空间设置为monitoring通过kubernetesControlPlane::prometheusRuleWeaveNet重写weave-net规则组中部分告警的表达式阈值定制见下一节。local kp (import kube-prometheus/main.libsonnet) (import kube-prometheus/addons/weave-net/weave-net.libsonnet) { values:: { common: { namespace: monitoring, }, }, kubernetesControlPlane: { prometheusRuleWeaveNet: { spec: { groups: std.map( function(group) if group.name weave-net then group { rules: std.map( function(rule) if rule.alert WeaveNetFastDPFlowsLow then rule { expr: sum(weave_flows) 20000, } else if rule.alert WeaveNetIPAMUnreachable then rule { expr: weave_ipam_unreachable_percentage 25, } else rule , group.rules ), } else group, super.groups ), }, }, }, }; { [00namespace- name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } { [0prometheus-operator- name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } { [node-exporter- name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } { [kube-state-metrics- name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } { [prometheus- name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } { [prometheus-adapter- name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } { [grafana- name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }这段 jsonnet 使用了两个 jsonnet 标准库函数std.map与std.objectFieldsstd.objectFields(kp.xxx)遍历各组件的字段如serviceWeaveNet、serviceMonitorWeaveNet、prometheusRuleWeaveNet配合[00namespace- name]生成带排序前缀的 YAML 文件std.map(fn, arr)对规则组列表逐项映射仅当group.name weave-net时才进入规则重写逻辑其余规则组原样保留。按需定制告警阈值环境相关原文档特别强调部分告警配置与环境强相关必须按集群实际情况调整阈值。例如文档作者所在环境的 FastDP 流数量从未低于15000但若你的集群该基线值约为20000就需要把WeaveNetFastDPFlowsLow的表达式改为sum(weave_flows) 20000避免误报。上述 jsonnet 正是用rule { expr: ... }覆盖目标告警的表达式实现不改动整条规则、只改阈值的精细化定制。需要重点关注、可能需要修改阈值的两条告警为WeaveNetFastDPFlowsLowFastDP 流转发数低于阈值WeaveNetIPAMUnreachable不可达 peer 所持有的 IP 地址占比超过阈值。内置的 11 条 Weave Net 告警规则详解addon 将全部告警定义在独立的 alerts.libsonnet 中并在prometheusRuleWeaveNet里以groups: [{ name: weave-net, rules: (import ./alerts.libsonnet) }]的形式挂载。11 条规则覆盖了 IPAM、FastDP 数据面、P2P 控制面三大维度告警名称表达式触发条件for含义WeaveNetIPAMSplitBrainmax(weave_ipam_unreachable_percentage) - min(...) 03m各节点 IP 不可达比例不一致提示存在网络脑裂WeaveNetIPAMUnreachableweave_ipam_unreachable_percentage 2510m不可达 IP 占比超过阈值WeaveNetIPAMPendingAllocatessum(weave_ipam_pending_allocates) 03m存在积压未完成的 IP 分配WeaveNetIPAMPendingClaimssum(weave_ipam_pending_claims) 03m存在积压未完成的 IP 认领WeaveNetFastDPFlowsLowsum(weave_flows) 150003mFastDP 流转发数低于基线需环境定制WeaveNetFastDPFlowsOffsum(weave_flows bool 0) 03mFastDP 流转发完全停止WeaveNetHighConnectionTerminationRaterate(weave_connection_terminations_total[5m]) 0.15m连接终止速率过高WeaveNetConnectionsConnectingsum(weave_connections{stateconnecting}) 03m存在处于 connecting 状态的连接WeaveNetConnectionsRetyingsum(weave_connections{stateretrying}) 03m存在重试中的连接WeaveNetConnectionsPendingsum(weave_connections{statepending}) 03m存在 pending 状态的连接WeaveNetConnectionsFailedsum(weave_connections{statefailed}) 03m存在连接失败所有规则均带severity: critical标签与可执行的 summary/description 注解方便 Alertmanager 路由分组和值班人员直接理解处置动作。两套 Grafana 仪表盘Pod 级与集群级addon 内置的两个仪表盘分别对应原文档推荐的per-pod 级与cluster 级监控视角Pod 级仪表盘weave-net.json源自 Grafana 社区的 WeaveNet 仪表盘面板围绕单个 Weave Net Pod 展开包括 Fast DP Flows、IPAM Pending Allocates/Claims、Max IPs、Terminations、P2P Established/Connecting/Pending/Failed/Retrying 等状态面板并含 IPAM 分区Unreachable Percentage、Unreachable Count、Pending与 Connections 分区适合定位具体某个 Pod 的异常。集群级仪表盘weave-net-cluster.json以集群整体视角汇总指标例如sum(weave_flows)、sum(weave_flows bool 0)、sum(increase(weave_connection_terminations_total[1m]))并通过label_replace(...)将instance标签重写为node或node_ip实现按节点归类展示见 grafana-weave-net-cluster.json 中大量label_replace表达式方便判断故障集中在哪个节点。两份 JSON 源码中datasource: $datasource表明它们依赖 kube-prometheus 注入的 Prometheus 数据源模板变量description字段也明确注明其指标基于 Weave Net 官方暴露的 Prometheus 指标构建。部署步骤kubectl 应用生成的清单将上面的 jsonnet 用jsonnet或jsonnet -m manifests渲染出 YAML 后原文档给出的部署命令如下kubectl create -f prometheus-serviceWeaveNet.yaml kubectl create -f prometheus-serviceMonitorWeaveNet.yaml kubectl apply -f prometheus-rules.yaml kubectl apply -f grafana-dashboardDefinitions.yaml kubectl apply -f grafana-deployment.yaml各文件职责说明prometheus-serviceWeaveNet.yaml创建指向 Weave Net 指标端口的无头 Serviceprometheus-serviceMonitorWeaveNet.yaml创建 ServiceMonitor使 Prometheus 开始以 15s 周期抓取 Weave Net 指标prometheus-rules.yaml写入weave-net规则组的 11 条告警规则grafana-dashboardDefinitions.yaml与grafana-deployment.yaml将两个仪表盘注入 Grafana 配置并触发 Grafana 重新加载。提示实际渲染出的文件名以 jsonnet 输出时的 key 为准例如00namespace-...、0prometheus-operator-...、grafana-dashboardDefinitions.yaml等。若使用 jsonnet-bundler 管理依赖可参考仓库根目录的 jsonnetfile.json 与 jsonnetfile.lock.json 锁定 kube-prometheus 版本完整构建流程也可参考 Makefile 与 docs/customizing.md。与 kube-prometheus 其他文档的关系如果你正使用 Weave Net 作为 CNI并遇到网络相关告警或排障需求可一并参考troubleshooting.md其中第 13 行明确指引If you are using Weave Net, see Weave Net supportdocs/customizations/platform-specific.md 与 examples/platform.jsonnet了解 kops 等平台下 Weave Net 与 kube-prometheus 的整合方式。小结通过 kube-prometheus 的 weave-net addon你可以在不编写一行手抓取配置的前提下获得覆盖 Service、ServiceMonitor、PrometheusRule 与两套 Grafana 仪表盘的完整 Weave Net 监控栈。唯一需要主动投入的是根据集群实际流量特征校准WeaveNetFastDPFlowsLow与WeaveNetIPAMUnreachable等环境相关阈值——这也正是 jsonnet 可编程化配置带来的最大优势阈值随配置走、可版本化、可审计。赞分享云原生可观测性指标监控监控大盘告警【免费下载链接】kube-prometheusUse Prometheus to monitor Kubernetes and applications running on Kubernetes项目地址https://gitcode.com/gh_mirrors/ku/kube-prometheus点击查看免费下载相关推荐Satellizer监控告警Prometheus指标与Grafana仪表盘Satellizer监控告警Prometheus指标与Grafana仪表盘 Satellizer作为Token based AngularJS Authent前端应用安全Apache Pulsar 集群监控部署指南Prometheus 指标采集、Grafana 仪表盘与告警规则Apache Pulsar 集群监控部署指南Prometheus 指标采集、Grafana 仪表盘与告警规则 本文基于 Apache Pulsar 2.2.1消息队列后端流处理Loop 窗口管理从入门到快捷键定制一次讲透Loop 窗口管理从入门到快捷键定制一次讲透 macOS 桌面上同时开着十几个窗口时最磨人的往往不是写代码而是拖窗口想摆成一半屏得拖到边缘再目测、来回云原生可观测性指标监控监控大盘告警上一篇awesome-blender 完全攻略新手一次拿齐免费插件、纹理和教程下一篇Turbo框架完整指南10个常见问题解答从安装到部署创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考