Cloudprober 与 Grafana:构建主动监控仪表盘的分步教程
Cloudprober 与 Grafana构建主动监控仪表盘的分步教程【免费下载链接】cloudproberAn active monitoring software to detect failures before your customers do.项目地址: https://gitcode.com/gh_mirrors/clo/cloudprober想在你网站宕机、API 超时、依赖服务不可用之前就发现故障吗Cloudprober 正是一款优秀的主动监控Active Monitoring开源工具它由 Go 语言编写、单二进制即可运行通过模拟真实请求持续探测你的系统健康状态。而将 Cloudprober 与 Grafana 结合就能把探测数据变成直观、可交互的监控仪表盘。本文提供一份完整的分步教程带你从零搭建一套属于你自己的主动监控可视化方案全程无需写大量代码。一、为什么需要主动监控Cloudprober 能做什么被动监控只能等故障发生后再报警而主动监控也叫合成监控会主动发起 HTTP、PING、DNS、TCP 等请求在用户察觉之前就暴露问题。Cloudprober 的核心优势在于 内置 HTTP、PING、TCP、DNS、gRPC、UDP 等多种探测类型 支持目标自动发现Kubernetes、GCP、文件等 开箱即用地对接 Prometheus、Grafana、DataDog、CloudWatch 等监控系统 支持 Slack、PagerDuty、邮件等多种告警渠道图为 Cloudprober 的核心监控流程从多维度探测网站、内部服务、合作伙伴连通性到输出仪表盘、SLO 与告警。Cloudprober 的官方文档位于 docs/content/docs/overview/getting-started.md完整配置说明在 docs/content/docs/config/guide.md本文核心步骤均基于这些资料提炼。二、准备工作安装 Cloudprober、Prometheus 与 Grafana搭建这套主动监控仪表盘需要三个组件分工如下组件作用Cloudprober主动探测并暴露指标默认端口 9313Prometheus定时抓取并存储指标Grafana可视化展示构建监控仪表盘安装 Cloudprober官方推荐一行脚本curl -fsSL https://cloudprober.org/install.sh | sh安装后验证版本cloudprober --version如果希望获取源码深入学习可以克隆仓库git clone https://gitcode.com/gh_mirrors/clo/cloudproberPrometheus 与 Grafana 推荐使用 Docker 一键启动这里不再赘述保持默认配置即可。三、第一步编写 Cloudprober 探测配置Cloudprober 使用简洁的 textproto也支持 YAML格式描述探测任务。下面创建一个每 5 秒探测一次目标网站的 HTTP 探测配置probe { name: cloudprober_website type: HTTP targets { host_names: your-website.com } http_probe { protocol: HTTPS } interval: 5s timeout: 1s }将该配置保存为cloudprober.cfg启动cloudprober --config_file /tmp/cloudprober.cfg启动后Cloudprober 会自动暴露两个关键端点http://localhost:9313/metricsPrometheus 格式指标http://localhost:9313/status内置探测状态页四、第二步通过 Prometheus Surfacer 导出指标Cloudprober 将输出到某个监控系统的组件称为Surfacer。默认情况下Prometheus 与 File 两种 Surfacer 会自动启用无需额外配置。若想自定义指标前缀可以显式声明参考 examples/surfacers/default_surfacers.cfgsurfacer { type: PROMETHEUS prometheus_surfacer { metrics_prefix: cloudprober_ } }所有探测至少会输出三个核心计数器total总探测次数、success成功次数、latency延迟。Surfacer 的完整说明见 docs/content/docs/surfacers/overview.md实现源码位于 internal/surfacers/prometheus/prometheus.go。五、第三步配置 Prometheus 抓取 Cloudprober 指标在 Prometheus 配置文件中添加抓取任务指向 Cloudprober 的 metrics 端点scrape_configs: - job_name: cloudprober scrape_interval: 15s static_configs: - targets: [localhost:9313]重启 Prometheus 后访问其查询页面输入total{probecloudprober_website}即可看到指标数据源源不断写入。六、第四步在 Grafana 中添加 Prometheus 数据源打开 Grafana进入Configuration → Data Sources点击Add data source选择Prometheus在 URL 中填入 Prometheus 地址如http://localhost:9090点击Save Test提示成功即完成连接至此Cloudprober 的探测数据已经进入了 Grafana 的可视化管道。七、第五步构建 Cloudprober 监控仪表盘接下来创建核心面板。Grafana 面板通常由查询表达式PromQL驱动以下两个公式是 Cloudprober 监控的黄金搭档可用率success_ratio rate(success[5m]) / rate(total[5m]) 平均延迟avg_latency rate(latency[5m]) / rate(success[5m])1. 可用率面板选择Time series图表查询表达式填入sum(rate(success[5m])) / sum(rate(total[5m])) * 100将单位设置为percent你就能看到网站可用率随时间变化的曲线。这是监控仪表盘上最重要的一块面板。2. 延迟面板sum(rate(latency[5m])) / sum(rate(success[5m]))将单位设置为msCloudprober 的延迟指标以纳秒为单位可在面板中做换算。3. 探测状态汇总使用 Grafana 的Stat面板可以快速展示当前是否有故障配合颜色阈值如 99.9% 以上为绿色实现一眼掌握全局。八、进阶技巧延迟分布与百分位仪表盘单看平均延迟容易掩盖尾部延迟问题。Cloudprober 支持将指标配置为分布distribution从而在 Grafana 中绘制 50%、95%、99% 等百分位曲线。配置方式参考 docs/content/docs/how-to/percentiles/index.md外部探测的聚合配置示例见 examples/external/cloudprober_aggregate.cfg。图为基于 Cloudprober Prometheus Grafana 构建的 Redis 探测仪表盘包含 Get/Set 延迟百分位与错误率曲线。此外如果你需要排查某次探测的具体失败原因Cloudprober 内置的 Artifacts Viewer浏览器探测可以按时间回放任务记录九、补充让仪表盘会报警仪表盘负责展示告警则负责通知。你可以在 Grafana 中基于success_ratio设置告警规则例如连续 5 分钟可用率低于 99% 时触发通知。也可以直接使用 Cloudprober 内置的告警能力在探测配置中声明告警条件并推送至 Slack、PagerDuty 等渠道完整配置见 docs/content/docs/how-to/alerting/index.mdprobe { ... alert { name: website_down condition { failures: 2 } notify { slack { webhook_url: https://hooks.slack.com/services/XXX/YYY/ZZZ } } } }十、小结三步走监控无忧回顾这条 Cloudprober 主动监控仪表盘搭建路径其实只有三步探测Cloudprober 主动发起请求输出total、success、latency指标存储Prometheus 通过 Surfacer 抓取并存储时序数据可视化Grafana 用 PromQL 构建可用率、延迟、百分位面板并叠加告警整套方案轻量、免费、可扩展既能监控你的个人站点也能支撑微服务集群的可用性观测。现在就动手配置你的第一个 HTTP 探测把主动权握在自己手里吧【免费下载链接】cloudproberAn active monitoring software to detect failures before your customers do.项目地址: https://gitcode.com/gh_mirrors/clo/cloudprober创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考