Nightingale 集成阿里云云监控:基于 Categraf aliyun 插件拉取 ECS/RDS/Redis 等云产品指标与告警 📅 发布时间:2026/9/15 21:58:26 👁 浏览次数: Nightingale 集成阿里云云监控基于 Categraf aliyun 插件拉取 ECS/RDS/Redis 等云产品指标与告警【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingale导读本文介绍如何在 Nightingale 生态中接入阿里云云监控CloudMonitor数据借助 Categraf 内置的 aliyun 采集插件通过阿里云 OpenAPI 拉取云监控中 ECS、RDS、Redis、SLB、WAF 等云产品的指标写入 Nightingale 统一存储并配合仓库中配套的监控大盘与告警规则实现云上资源 自建监控的一体化可观测。读完本文你将掌握阿里云 AccessKey 授权的最小权限配置、cloud.toml全量参数含义与调优方法以及如何用 PromQL 对采集到的指标进行查询与告警。一、集成原理与整体方案本集成方案由三个环节组成Categraf 采集端使用 Categraf 中的 aliyun 插件位于 Categraf 项目的inputs/aliyun目录以固定周期调用阿里云云监控 OpenAPI拉取各产品线的指标数据Nightingale 服务端Categraf 采集到的指标通过 Prometheus 协议写入 Nightingale形成统一的时序数据底座可视化与告警仓库在 integrations/AliYun 目录下提供了配套的监控大盘dashboards/、告警规则alerts/和中英文翻译i18n/en_US.json导入 Nightingale 后即可直接使用。从源码结构看Nightingale 将阿里云作为一个完整的集成Integration来管理指标、大盘、告警、国际化文案四类资源齐备说明该方案的目标是让用户以接近开箱即用的方式获得阿里云云产品的监控能力。二、前置条件与授权配置要让 aliyun 插件能调用云监控 API必须先完成凭证与权限准备获取 AccessKey在阿里云用户中心创建 AccessKey得到access_key_id与access_key_secretRAM 用户授权若使用 RAM 子账号所属阿里云账号需要先将权限策略授予该 RAM 用户。最小化授权建议直接授予云监控只读权限AliyunCloudMonitorReadOnlyAccess——采集场景只需要读取指标无需任何写权限创建 AccessKey 并填入配置为已授权的用户创建 AccessKey将密钥填入采集配置。权限建议遵循最小权限原则仅授予AliyunCloudMonitorReadOnlyAccess避免使用具备过高权限的账号密钥降低泄露风险。三、Categraf 配置文件详解采集配置位于 Categraf 的conf/input.aliyun/cloud.toml。仓库 integrations/AliYun/collect/aliyun/cloud.toml 提供了带注释的完整模板完整可运行的配置如下# categraf 采集周期阿里云指标的粒度一般是 60 秒建议不要设置少于 60 秒 interval 120 [[instances]] # 阿里云资源所处的 region region cn-beijing # 云监控 OpenAPI 的 endpoint endpoint metrics.cn-hangzhou.aliyuncs.com # 填入你的 access_key_id access_key_id # 填入你的 access_key_secret access_key_secret # 可能无法获取当前最新指标此值表示监控指标的截止时间距离当前时间多久 delay 50m # 阿里云指标的最小粒度60s 是推荐值再小了部分指标不支持 period 60s # 指标所属的 namespace为空表示采集所有命名空间的指标 namespaces [acs_ecs_dashboard] # 过滤某个 namespace 下的一个或多个指标 [[instances.metric_filters]] namespace metric_names [cpu_cores, vm.TcpCount, cpu_idle] # 阿里云查询指标接口的 QPS 上限是 50这里默认设置为一半 ratelimit 25 # 查询指定 namespace 指标后namespace/metric_name 等 meta 信息会缓存起来catch_ttl 是指标的缓存时间 catch_ttl 1h # 每次请求阿里云 endpoint 的超时时间 timeout 5s3.1 采集周期与时间参数参数默认示例说明interval120采集周期。阿里云指标粒度通常为 60 秒因此不建议低于 60 秒否则同一数据点会被重复拉取delay50m指标截止时间距离当前时间的偏移量。阿里云指标写入存在延迟刚产生的最新数据点可能查询不到配置一个合理偏移可保证取到完整数据period60s请求指标的最小聚合粒度。60s是推荐值部分指标不支持更小粒度此外Categraf 模板中还提供了interval_times参数如interval_times4其含义为每 N 个采集周期执行一次该实例的采集——当单个instances想降低频率例如对某些低频变化的指标时可用它做倍率降频与interval配合实现差异化采集节奏。3.2 连接与鉴权参数参数说明region阿里云资源所在区域如cn-beijingendpoint云监控 OpenAPI 接入地址metrics.cn-hangzhou.aliyuncs.com是通用接入点也支持按区域选择就近接入点access_key_id/access_key_secret访问密钥见上文授权步骤timeout每次请求阿里云 endpoint 的超时时间默认5s网络抖动时可适当调大3.3 命名空间与指标过滤阿里云云监控以namespace命名空间组织不同产品线的指标例如acs_ecs_dashboardECS 云服务器acs_rds_dashboardRDS 云数据库acs_kvstoreRedis云数据库 Tair/Redis等。namespaces配置决定采集哪些产品线为空表示采集全部命名空间明确列出则只采集指定产品线能显著减少 API 调用量与存储量。在metric_filters中可以对指标做二次过滤[[instances.metric_filters]] namespace metric_names [cpu_cores, vm.TcpCount, cpu_idle]namespace限定过滤范围为空表示作用于上述所有 namespacemetric_names要采集的指标名列表。指标名的填写规则阿里云指标参考页面中的Metric Id填入metric_names页面中包含中文的 Metric Name 对应的是 OpenAPI 中的Description字段不要填错。例如 ECS 的cpu_idle、cpu_cores都是典型的 Metric Id。3.4 限流与缓存参数参数说明ratelimit请求限速。阿里云指标查询接口 QPS 上限为50默认配置取一半25以留出余量避免触发接口限流catch_ttl指标 meta 信息namespace/metric_name 等的缓存 TTL默认1h。开启缓存可避免每次采集都重复拉取指标元数据减少 API 调用四、采集指标在 Nightingale 中的命名与查询aliyun 插件采集到的指标会以 Prometheus 格式写入 Nightingale指标名形如aliyun_namespace_metricName。仓库大盘中的 PromQL 可以印证这一点例如 dashboards/ecs.json 中sum(aliyun_acs_ecs_dashboard_cpu_utilization_average{ident~$ident}) by (ident,instance_id) sum(aliyun_acs_ecs_dashboard_memory_usedutilization_average{ident~$ident}) by (ident,instance_id) sum(aliyun_acs_ecs_dashboard_intranet_in_average{ident~$ident}) by (ident,instance_id)dashboards/cdn.json 中则使用aliyun_acs_cdn_bps_isp_value{instance_id$instance_id} aliyun_acs_cdn_internet_out_average{instance_id$instance_id}因此采集上来后指标的标签通常包含instance_id云产品实例 ID、regionId等维度查询时可用ident、instance_id、regionId等标签做筛选与聚合。五、配套监控大盘与告警规则集成目录 integrations/AliYun/dashboards 提供了超过 40 个产品的 JSON 大盘覆盖 ECS、RDS、Redis、SLB、WAF、CDN、MongoDB、PolarDB、NAT、OSS、ALB、Kafka、MSE 等可直接导入 Nightingale 使用。以 dashboards/mysql.json 为例其查询直接面向阿里云指标AliyunRds_CpuUsage{instanceName$instance} AliyunRds_MySQL_SlowQueries{instanceName$instance} AliyunRds_ConnectionUsage{instanceName$instance}5.1 告警规则示例alerts/ 目录下提供了按产品组织的告警规则 JSON。以 alerts/AliYun-RDS.json 中的 CPU 告警为例{ cate: prometheus, name: 阿里云 RDS 数据库 MySQL/CPU使用率告警, prod: metric, prom_for_duration: 180, rule_config: { queries: [ { prom_ql: AliyunRds_CpuUsage{engine\MySQL\} 80, severity: 2, unit: none } ], version: v1 }, prom_eval_interval: 15, notify_recovered: 1, notify_repeat_step: 60, cron_pattern: every 60s }从中可以看到 Nightingale 告警规则的关键字段与阿里云指标的结合方式prom_ql直接对采集上来的指标做阈值判断如AliyunRds_CpuUsage{engineMySQL} 80engine标签用于区分数据库引擎severity告警级别1 为最高2 次之例如运行状态异常类用severity: 1资源使用率类用severity: 2prom_for_duration持续满足条件多久后触发告警如 180 秒用于过滤瞬时抖动prom_eval_interval规则评估间隔15 秒notify_recovered恢复后是否通知1 表示通知notify_repeat_step重复告警的通知间隔60 分钟annotations.action内置的排障动作建议随告警一并推送帮助值班同学快速定位。Redis 告警则通过label_replace处理不同实例架构的指标命名差异例如 alerts/AliYun-Redis.jsonlabel_replace({__name__~AliyunKvstore_(Standard|Sharding|ShardingProxy|Splitrw|SplitrwProxy)CpuUsage},redisType,$1,measure,(.)CpuUsage) 80该查询一次性覆盖标准版、集群版、读写分离版等不同架构的 CPU 指标并归一化出redisType标签用于区分实例类型。5.2 国际化支持i18n/en_US.json 提供了数百条大盘面板、告警名称的中英文翻译映射导入英文环境后面板标题如CPU 使用率→CPU Usage与告警名称会自动本地化。六、效果一览以下截图展示了集成后的典型效果。ECS 大盘聚合展示了云服务器实例的 CPU、内存、负载、磁盘与内外网流量RDS 大盘则针对数据库实例展示资源使用率与慢查询等关键指标仓库 integrations/AliYun/markdown 下还提供 Redis、SLB、WAF 等产品的效果截图导入对应大盘后即可看到。七、使用建议与注意事项周期与粒度匹配interval不要低于 60 秒period保持 60s 推荐值避免重复拉取与接口不支持小粒度的问题控制 API 调用量尽量在namespaces中明确列出所需产品线并用metric_filters收敛指标集合ratelimit保持 25 左右给接口 QPS 上限50留出余量catch_ttl缓存可进一步减少元数据请求权限最小化仅授予AliyunCloudMonitorReadOnlyAccess不要将高权限密钥放入采集配置数据延迟由于云监控数据存在写入延迟delay应设置合理的回看偏移如 50m确保每次采集都能取到完整数据点导入与使用将dashboards/下对应产品的大盘 JSON 与alerts/下的告警规则导入 Nightingale即可复用本方案沉淀的查询与阈值经验按需调整阈值即可上线。相关资源采集配置模板integrations/AliYun/collect/aliyun/cloud.toml监控大盘integrations/AliYun/dashboards告警规则integrations/AliYun/alerts国际化文案integrations/AliYun/i18n/en_US.json原始集成文档integrations/AliYun/markdown/README.en_US.md【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingale创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考