通过可观测监控 Prometheus 版提供的自定义鉴权方式,您可以对多个不同阿里云账号下的Prometheus实例进行数据的聚合,实现对跨账号下的Prometheus实例指标数据的统一监控、统一Grafana展示和统一告警管理。
背景信息
企业可能会设立多个阿里云账号(主账号),这给运维团队带来了维护的复杂性。阿里云的可观测监控 Prometheus 版提供了全局聚合实例功能,能将不同账号下的监控数据集中管理。通过这一能力,可以帮助您实现对多账号的统一查询和告警管理,方便您对多个账号进行统一监控运维。
前提条件
已存在阿里云账号A(主账号)和阿里云账号B(主账号),并且已开通账号A和账号B的可观测监控 Prometheus 版。具体操作,请参见计费说明。
账号A和账号B的监控数据都已经接入到对应阿里云账号的Prometheus实例中。具体操作,请参见通过接入中心接入数据。
使用说明
本文将以两个阿里云账号(账号A和账号B)为例,介绍如何通过Prometheus全局聚合实例功能将账号B的监控数据集成到账号A,实现在账号A中对两个账号的监控数据进行一站式查询和告警管理。
步骤一:创建全局聚合实例
可观测监控 Prometheus 版跨账号聚合能力支持两种方式:
方式一:基于资源管理 - 资源目录的方式聚合
已通过资源目录搭建了企业的多账号体系结构。资源目录更多信息,请参见资源目录概述。
通过以下任意一种方式设置可信服务的委派管理员角色。
方式一
- 使用管理账号登录资源管理控制台。
- 在左侧导航栏,选择 。
- 在可信服务页面,单击目标可信服务操作列的管理。
在委派管理员账号区域,单击添加,将创建的Prometheus全局聚合实例的云账号设置为委派管理员。
说明本示例的账号为阿里云账号A。
- 单击确定。添加成功后,使用该委派管理员账号访问对应可信服务的多账号管理模块,即可进行资源目录组织范围内的管理操作。
方式二
使用资源目录管理员账号或拥有管理员权限的RAM角色调用OpenAPI,为想要创建跨账号全局聚合实例的成员设置可信服务的委派管理员角色,按照下表说明配置参数:
参数
说明
服务地址
中国内地:选择华东2(上海)。
其他地域:选择新加坡。
AccountId
填写需要创建跨账号全局聚合实例的成员用户ID。
ServicePrincipal
填写prometheus.aliyuncs.com。
单击发起调用。
聚合数据。
使用阿里云账号A登录Prometheus控制台
在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。
单击新建Prometheus实例,在新建实例页面,按照下表提示完成配置参数,然后单击立即创建。
参数
说明
实例类型
选择全局聚合实例。
实例名称
自定义全局聚合实例名称。
所属资源组
选择所属的资源组。
标签
标签由区分大小写的键值对组成,您最多可以设置20个标签。
访问Endpoint
Endpoint是请求的访问点、告警的配置地域。建议您选择实例数量最多的地域作为访问点,若您选择其他地域可能会影响访问速度和系统稳定性。
选择要聚合的实例
选择其他账号(资源目录),选择资源目录成员账号,添加目标Prometheus实例。
说明选择其他账号(资源目录)后,可观测监控 Prometheus 版会将资源目录中的可信服务启用状态设置为已启用。
您可以选择不同地域(Region)下的实例名称以实现跨地域的实例聚合,不过在您选择实例之前需要在访问Endpoint区域指定访问的Endpoint。
说明您可以单击已创建的全局聚合实例右侧操作列的编辑,编辑已创建的全局聚合实例信息。请勿随意变更Endpoint信息,否则将导致在原Endpoint下配置的告警规则失效,因此不建议您随意变更Endpoint。
方式二:基于RAM角色自定义鉴权进行聚合
使用阿里云账号B创建角色。
使用阿里云账号B登录RAM控制台。
在左侧导航栏,选择 。
在角色页面,单击创建角色。
在创建角色页面,选择可信实体类型为阿里云账号,然后单击下一步。
在配置角色步骤,设置角色名称为
AliyunPrometheusQueryRole
,然后选择信任的账号为其他云账号,并输入阿里云账号A的信息,然后单击完成。单击已创建的角色,然后单击信任策略页签,单击编辑信任策略,在弹出的面板修改信任策略,为阿里云账号A授信。
说明这里为数组形式,即您可以为多个账号同时授信。
为
AliyunPrometheusQueryRole
角色授予AliyunRAMReadOnlyAccess
和AliyunARMSReadOnlyAccess
权限。在左侧导航栏选择身份管理 > 角色,然后单击目标角色操作列的新增授权。
在新增授权面板的权限策略区域,在搜索框中输入
AliyunRAMReadOnlyAccess
和AliyunARMSReadOnlyAccess
权限,将其选中并添加在右侧区域,然后单击确认新增授权。
(可选)为阿里云账号A创建RAM用户。
说明如果您的聚合账号为阿里云账号A,您需要为阿里云账号A创建RAM用户来聚合阿里云账号B,因此需要执行该步骤。
如果您的聚合账号已经是RAM用户,则可以直接连接聚合阿里云账号B,因此无需再次创建RAM用户,可以跳过该步骤。
使用阿里云账号A登录RAM控制台。
在左侧导航栏,选择 。
在用户页面,单击创建用户。
在创建用户页面的用户账号信息区域,设置用户基本信息。
登录名称:可包含英文字母、数字、半角句号(.)、短划线(-)和下划线(_),最多64个字符。
显示名称:最多包含128个字符或汉字。
标签:单击,然后输入标签键和标签值。为RAM用户绑定标签,便于后续基于标签的用户管理。
说明单击添加用户,可以批量创建多个RAM用户。
在访问方式区域,选择访问方式,然后设置对应参数。
为了账号安全,建议您只选择以下访问方式中的一种,将人员用户和应用程序用户分离,避免混用。
控制台访问
如果RAM用户代表人员,建议启用控制台访问,使用用户名和登录密码访问阿里云。您需要设置以下参数:
控制台登录密码:选择自动生成密码或者自定义密码。自定义登录密码时,密码必须满足密码复杂度规则。更多信息,请参见设置RAM用户密码强度。
密码重置策略:选择RAM用户在下次登录时是否需要重置密码。
多因素认证(MFA)策略:选择是否为当前RAM用户启用MFA。启用MFA后,主账号还需要为RAM用户绑定MFA设备或RAM用户自行绑定MFA设备。更多信息,请参见为RAM用户绑定MFA设备。
OpenAPI调用访问
如果RAM用户代表应用程序,建议启用OpenAPI调用访问,使用访问密钥(AccessKey)访问阿里云。启用后,系统会自动为RAM用户生成一个AccessKey ID和AccessKey Secret。更多信息,请参见创建AccessKey。
重要RAM用户的AccessKey Secret只在创建时显示,不支持查看,请妥善保管。
单击确定。
根据界面提示,完成安全验证。
阿里云账号A的RAM用户授权。
单击目标RAM用户名称,然后单击权限管理页签。
单击新增授权,在弹出的面板的权限策略区域通过在搜索框输入
AliyunSTSAssumeRoleAccess
和AliyunARMSFullAccess
权限,将其选中并添加在右侧区域,然后单击确认新增授权。
聚合Prometheus实例数据。
使用阿里云账号A的RAM用户登录Prometheus控制台。
在左侧导航栏,单击实例管理。
单击目标全局聚合实例操作列的编辑,然后在STEP3区域选择要聚合的实例为其他账号(自定义鉴权)。
在阿里云账号右侧搜索框中搜索阿里云账号B,单击确认,系统会过滤出阿里云账号B下的所有Prometheus实例,您可以选中对应的Prometheus实例进行聚合,然后单击编辑聚合实例。
说明只有进行过授权的RAM用户可以编辑保存自定义授权的跨账号监控实例,阿里云账号暂无相关权限。
步骤二:查询跨账号的全局聚合实例数据
通过阿里云账号A的RAM用户下的全局聚合实例聚合阿里云账号B的Prometheus实例后,您可以通过预置的Grafana大盘查看聚合后的Prometheus实例的性能指标数据。
在实例列表页面,单击目标Prometheus实例名称,然后在左侧导航栏单击大盘列表。
步骤三:为跨账号的全局聚合实例创建告警规则
在实例列表页面,单击目标Prometheus实例名称,然后在左侧导航栏单击告警规则。
在Prometheus告警规则页面,单击创建Prometheus告警规则,按照界面提示信息配置告警规则的基本信息。具体操作,请参见Prometheus告警规则。
说明在创建Prometheus告警规则页面的数据预览区域,全局聚合实例提供了unique_cluster_id(实例的唯一标识)和unique_cluster_name(实例名称),以便您在追踪告警对象时,能快速定位到对应触发告警阈值的实例。
相关操作
编辑全局聚合实例
在实例列表页面,您可以单击已聚合的全局聚合实例右侧操作列的编辑,编辑聚合的全局聚合实例信息。若您重新修改了Endpoint信息 ,会导致在原Endpoint下配置的告警规则失效,因此不建议您随意变更Endpoint。
卸载全局聚合实例
若您暂不需要监控全局聚合实例,您可以卸载相关插件。
在实例列表页面,单击目标Prometheus实例操作列的卸载,然后在弹出的对话框中单击确认,即可卸载成功。卸载完成后,实例列表页面不再显示该Prometheus实例。
常见问题
Prometheus全局聚合实例需要额外收费吗?
全局聚合实例目前处于公测阶段,暂不收费。
Prometheus全局聚合实例是将被聚合实例数据汇总到一个实例吗?
被聚合实例不会汇总写入到全局聚合实例,全局聚合实例只是在查询时将查询下发到被聚合实例。