当前位置: 首页 > news >正文

将 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),仅供参考

http://www.cnnetsun.cn/news/4137977.html

相关文章:

  • 用 Vanity 定义 A/B 测试:手把手写出实验定义与转化追踪的完整教程
  • 5分钟快速上手 Blazored.FluentValidation:Blazor 表单校验入门教程
  • Vanity 测试技巧:用 chooses 方法编写可复现的 A/B 测试用例
  • WarcraftHelper 教程:让魔兽 3 跑满 300 帧
  • 验证器藏在哪里?深入解析 Blazored.FluentValidation 的 DI 注册与程序集扫描机制
  • djangochannelsrestframework ObserverModelInstanceMixin:订阅单个模型实例变化的完整教程
  • gradle-docker 安装与配置全攻略:buildscript 依赖引入到插件扩展项详解
  • 线性规划实战:从数学建模到Python求解的完整指南
  • Stripe支付集成实战:从API原理到生产环境最佳实践
  • 如何为 BMW-YOLOv4-Training-Automation 准备数据集:YOLO 标注格式完整指南(附示例数据集解析)
  • Seraphine:英雄联盟战绩查询与自动 BP 工具
  • IDM下载加速不失效:开源脚本冻结试用期的完整实战指南
  • RVC语音变声完整指南:用10分钟语音数据训练专属AI音色的全流程实战
  • 【单片机毕设案例分享】基于 STM32 的人体心率血氧体温采集终端系统开发 基于 STM32 的便携式智能健康预警监测器设计(013204)
  • 从“振兴杯”云计算运维赛看企业级云平台实战技能体系构建
  • 经典游戏兼容性修复指南:dxwrapper 为老游戏搭起通往 Windows 11 的桥
  • Shotlooter完全指南:这款开源截图敏感数据嗅探工具如何一步步暴露你的隐私
  • 从光盘到镜像:WinCDEmu免费开源虚拟光驱的5步上手指南
  • 典型相关分析(CCA)实战:从原理到Python实现,揭示多维变量组深层关联
  • 微信防撤回终极指南:RevokeMsgPatcher 一键补丁,撤回的消息从此赖着不走
  • 在 React/Vue 项目中集成 d3-delaunay:工程化实践与 API 速查手册
  • 如何用 cookie_crimes 导出 Cookies 配合 EditThisCookie 一键登录网站
  • Coding-Flashcards 快速上手:5分钟导入1000+张Anki闪卡,开启高效编程学习
  • Kiwix CoreKiwix框架揭秘:libkiwix与libzim核心库深度解析
  • 如何快速无损把 ncm 转成 mp3:免费工具 ncmdumpGUI 三步上手指南
  • AI加速发现:从文献挖掘到代码生成的实践指南与工具链
  • 从LangChain到MCP与LangGraph:构建可运维AI Agent的工程实践
  • AI现场交付工程师:打通模型到场景的最后一公里
  • PCA主成分分析实战指南:降维原理、代码实现与数模避坑
  • DeepSeek Harness:构建可扩展AI智能体系统的四大核心模块解析