news 2026/8/21 16:23:51

将 Cloudprober 指标接入 AWS CloudWatch 与 Google Cloud Monitoring

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
将 Cloudprober 指标接入 AWS CloudWatch 与 Google Cloud Monitoring

将 Cloudprober 指标接入 AWS CloudWatch 与 Google Cloud Monitoring

【免费下载链接】cloudproberAn active monitoring software to detect failures before your customers do.项目地址: https://gitcode.com/gh_mirrors/clo/cloudprober

Cloudprober 是一款开源的主动监控(active monitoring)工具,能在真实用户发现问题之前,主动探测你的网站、API 与内部服务,提前发现故障。而它最强大的能力之一,就是通过内置的surfacer(指标导出器)机制,把采集到的监控指标一键导出到AWS CloudWatchGoogle Cloud Monitoring(原 Stackdriver)等主流监控平台。本文将用最简单的方式,带你完成 Cloudprober 指标接入两大云监控平台的全过程。

什么是 Cloudprober 的 Surfacer(指标导出机制)

Cloudprober 的核心优势在于"一套探测、多处输出":它支持 Prometheus、OpenTelemetry、AWS CloudWatch、Google Cloud Monitoring、Google Pub/Sub、Postgres 等十余种输出方式,而且可以同时启用多个,互不干扰。这个负责导出的内置机制就叫 surfacer,你只需在配置文件中添加一段surfacer配置块,即可把指标实时推送过去。整体架构可参考上方的 Cloudprober 架构图:左侧是各类主动探测目标,右侧则是 Dashboards、SLOs、告警等下游消费方。

如果你不配置任何 surfacer,Cloudprober 会默认启用 Prometheus 与文件两种导出方式,方便本地调试。

一、把 Cloudprober 指标接入 AWS CloudWatch

1. 快速配置步骤

在 Cloudprober 配置文件中加入以下内容,即可启用 CloudWatch 导出:

surfacer { type: CLOUDWATCH }

就这么简单!默认情况下,指标会发布到名为cloudprober的 CloudWatch 命名空间(namespace)下,指标维度(Dimensions)会自动携带探针名称、目标地址、协议类型等标签,方便你在 CloudWatch 控制台按维度筛选。相关实现可参考源码模块 internal/surfacers/cloudwatch/cloudwatch.go。

2. AWS 认证与 IAM 权限配置

CloudWatch surfacer 基于 AWS Go SDK,支持默认凭证链,按以下顺序自动寻找凭证:

  1. 环境变量;
  2. 共享凭证文件(~/.aws/credentials);
  3. ECS 任务 IAM 角色;
  4. EC2 实例 IAM 角色。

为了让 Cloudprober 有权限写入指标,你需要为对应角色配置如下 IAM 策略(注意命名空间要与下方配置一致):

{ "Version": "2012-10-17", "Statement": [ { "Condition": { "StringEqualsIgnoreCase": { "cloudwatch:namespace": "cloudprober" } }, "Action": ["cloudwatch:PutMetricData"], "Resource": ["*"], "Effect": "Allow", "Sid": "PutMetrics" } ] }

3. 指定 AWS 区域

Cloudprober 确定写入区域的优先级为:配置中的 region 字段 → EC2 元数据 →AWS_REGION环境变量 →AWS_DEFAULT_REGION环境变量。推荐直接在配置里写死,避免歧义:

surfacer { type: CLOUDWATCH cloudwatch_surfacer { namespace: "/cloudprober/website/probes" region: "us-east-1" resolution: 60 } }

4. 更细粒度的 CloudWatch 配置项

CloudWatch surfacer 的完整配置项定义在 internal/surfacers/cloudwatch/proto/config.proto 中,常用参数如下:

配置项默认值说明
namespacecloudproberCloudWatch 指标命名空间
resolution60指标存储分辨率(秒),低于 60 会产生高分辨率计费
region自动检测目标 AWS 区域
metrics_batch_size1000单次批量写入的指标数上限(API 上限 1000)
batch_timer_sec30缓冲区最长保留时间,满批或超时即写入

5. 用 CloudWatch Metric Maths 计算差值

Cloudprober 导出的指标是累积值(counter),而 CloudWatch 大多展示快照值。要还原每个时间段的增量,可以借助 CloudWatch Metric Maths 的RATEPERIOD函数:

RATE(m1) * PERIOD(m1)

其中m1是 Cloudprober 指标的数学表达式 ID,例如namespace: cloudprobermetric name: latencyprobe: 探针名。这样你就能在 CloudWatch 上得到与 Prometheusrate()等价的增量曲线。

二、把 Cloudprober 指标接入 Google Cloud Monitoring

1. 快速配置步骤

Google Cloud Monitoring(前身 Stackdriver)的接入同样简单,只需一行配置:

surfacer { type: STACKDRIVER }

如果你运行在 GCP 上(VM 或 GKE Pod 具备 Cloud Monitoring 写入权限),这一句配置即可直接生效;否则需要额外指定 GCP 项目,并配置Google Application Default Credentials(应用默认凭证)。

2. 指标命名与监控前缀

默认情况下,指标会以custom.googleapis.com/cloudprober/<探针类型>/<探针名>为前缀导出。例如名为google_com的 HTTP 探针会生成:

custom.googleapis.com/cloudprober/http/google_com/total custom.googleapis.com/cloudprober/http/google_com/success custom.googleapis.com/cloudprober/http/google_com/latency

你还可以通过monitoring_url自定义前缀,或用metrics_prefix调整层级(NONE/PROBE/PTYPE_PROBE)。完整参数见 internal/surfacers/stackdriver/proto/config.proto,示例配置可参考 examples/surfacers/stackdriver_surfacer.cfg。

3. 用 MQL 计算失败率与平均延迟

由于导出的都是计数类指标,直接看图意义不大。Google Cloud Monitoring 提供了强大的MQL(Monitoring Query Language),可以轻松算出更有价值的指标。比如计算失败率:

fetch global || { metric 'custom.googleapis.com/cloudprober/http/google_com/failure' ; metric 'custom.googleapis.com/cloudprober/http/google_com/total' } || align delta(1m) || join || div

计算某个探针的平均延迟:

fetch global || { metric 'custom.googleapis.com/cloudprober/http/google_com/latency' ; metric 'custom.googleapis.com/cloudprober/http/google_com/success' } || align delta(1m) || join || div

以上查询既可用于 Metrics Explorer 绘图,也能直接用来创建告警规则。

三、同时接入多个监控系统

Surfacer 的另一个亮点是可以同时配置多个。例如下面的配置同时启用了 Prometheus 与 Google Cloud Monitoring,且只把特定探针的指标导出到云平台:

surfacer { type: PROMETHEUS } surfacer { type: STACKDRIVER ignore_metrics_with_label { key: "probe" value: "sysvars" } }

注意:一旦你显式声明了任一 surfacer,默认的 Prometheus 与文件导出就不会再自动生效,需要按需自行补齐。

四、进阶技巧:指标过滤与导出为 Gauge

  • 按标签过滤:通过allow_metrics_with_label/ignore_metrics_with_label控制导出范围,例如只导出ptype: http的指标,既能降低云监控费用,也让面板更干净。
  • 按名称过滤:用ignore_metrics_with_name: "validation_failure"屏蔽无用指标。
  • 导出为 Gauge:设置export_as_gauge: true后,指标以瞬时值而非累积值导出,计算平均延迟等场景会更直观(代价是丢失部分历史信息)。
  • 增加失败指标add_failure_metric: true会额外导出 failure 计数,目前除 FILE 和 PUBSUB 外默认开启。

更多 Surfacer 机制与过滤说明可查阅官方文档 docs/content/docs/surfacers/overview.md、docs/content/docs/surfacers/cloudwatch.md 与 docs/content/docs/surfacers/stackdriver.md。

结语

通过 Cloudprober 内置的 surfacer 机制,把主动监控指标接入AWS CloudWatchGoogle Cloud Monitoring只需寥寥数行配置,无需编写任何代码,即可把探测数据沉淀到云原生监控体系中,与既有告警、看板无缝衔接。再加上指标过滤、Gauge 导出、MQL / Metric Maths 等技巧,你完全可以把 Cloudprober 打造成多云环境下的统一主动监控底座。现在就动手把指标接入你的云监控平台,让故障暴露在真实用户之前吧!

【免费下载链接】cloudproberAn active monitoring software to detect failures before your customers do.项目地址: https://gitcode.com/gh_mirrors/clo/cloudprober

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 16:22:04

5分钟快速上手 Blazored.FluentValidation:Blazor 表单校验入门教程

5分钟快速上手 Blazored.FluentValidation&#xff1a;Blazor 表单校验入门教程 【免费下载链接】FluentValidation A library for using FluentValidation with Blazor 项目地址: https://gitcode.com/gh_mirrors/flue/FluentValidation Blazor 表单校验是 Web 开发中绕…

作者头像 李华
网站建设 2026/8/21 16:21:39

Vanity 测试技巧:用 chooses 方法编写可复现的 A/B 测试用例

Vanity 测试技巧&#xff1a;用 chooses 方法编写可复现的 A/B 测试用例 【免费下载链接】vanity Experiment Driven Development for Ruby 项目地址: https://gitcode.com/gh_mirrors/va/vanity Vanity 是一个面向 Ruby on Rails 的 A/B 测试框架&#xff0c;它让开发者…

作者头像 李华
网站建设 2026/8/21 16:20:58

WarcraftHelper 教程:让魔兽 3 跑满 300 帧

WarcraftHelper 教程&#xff1a;让魔兽 3 跑满 300 帧 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽3的60帧上限&#xff0c;是团战掉帧感的第…

作者头像 李华