前言
SLS是一站式的云原生可观测分析平台,用户可以将Log, Metric, Trace数据接入到SLS;根据业务的需要,用户可能将数据存储在不同的账户、地域、Project下,在对数据进行监控分析时,如果只能对特定Project或者特定区域进行监控,往往会有一定的局限性,SLS智能告警可以提供跨Project,甚至跨地域,跨账号的监控,然后对告警进行统一降噪管理,通知管理等;实现对SLS资源的全局监控。
本文将介绍如何使用SLS智能告警来进行全局监控,介绍全局监控需要的查询的三种授权方式,并通过一个跨账号监控的例子来介绍如果进行全局监控。
全局监控概述
在SLS中可以将不同云产品的日志存储在SLS中,在不同的主账号下都可以有这些云产品的日志,除了云产品的日志,每个主账号下也会有个字的系统,中间件,服务的日志;对于一个企业来说,可能会因为业务的需要,使用不同的主账号来管理企业在阿里云的日志资源。SLS智能告警提供了一种对不同主账号下日志资源的全局监控机制,允许对不同账号,不同区域下的Project进行统一监控,不需要将数据同步到某一个特定的账号或者区域下面。
举例来说,比如某企业有主账号A和主账号B分别接入了各类云产品日志和业务日志,对这些日志的监控告警运维是专门的运维团队进行负责,比如有一个主账号C,每天监测被审计账号A、B的每日访问日志量正常,这时候就需要用到了跨账号、跨Project的查询;对查询的数据统一建立告警规则,统一进行告警的降噪管理,通知管理和事务管理。
使用SLS智能告警进行全局监控,会涉及到对不同账号不同区域的资源的授权,比如上述例子中的主账号C需要有账号A、B的授权才可以对其资源进行监控查询,以下将对告警权限和授权方式进行介绍。
告警规则权限
SLS智能告警的权限包括两部分
- 告警规则的管理权限
- 监控目标的查询权限
在SLS智能告警-访问控制与授权一文中,我们主要介绍了创建告警规则的管理权限,对于监控目标的查询权限直接使用了创建告警规则实体(RAM用户或者主账户)本身被赋予的权限。监控规则实体的权限在使用上会有一定的限制,只能对当前Project下的不同Logstore进行查询。如果需要进行跨Project,跨账号的查询需要使用告警查询的授权方式。
告警查询授权方式
告警查询的授权方式主要包括三类:
查询统计
关联报表
高级配置
类型:
日志库
授权方式:
默认
默认
区域:
内置角色
项目:
自定义角色
日志库:
请输入名称
15分钟(相对)
查询区间:
- 默认:是指访问控制与授权文中使用的默认查询权限,只能查看当前告警规则所在Project下的资源。
- 内置角色:使用SLS内置的角色AliyunSLSAlertMonitorRole进行查询,可以进行跨Project的查询,只有点击授权即可,操作简单。
- 自定义角色:对于查询可以使用更精细的控制,支持跨账号,跨区域,跨Project的查询。
在介绍三种授权方式之前,先来看下阿里云RAM角色,RAM角色(RAM role)与RAM用户一样,都是RAM身份类型的一种。RAM角色是一种虚拟用户,没有确定的身份认证密钥,需要被一个受信的实体用户扮演才能正常使用。在告警中,告警查询用到的角色受信实体是阿里云SLS服务,也就是用户创建一个角色,配置相关的查询权限,允许SLS来扮演相关角色,SLS也就具有了角色中配置的查询权限,既可以对监控目标进行查询。
默认
默认授权方式表示可以对当前项目下的不同Logstore进行查询,即支持跨Logstore的监控;如图,某主账号A下拥有成都和呼和浩特两个区域的日志资源,在Project1下面创建告警规则时,可以对Logstore1和Logstore2进行监控,但是不能对Project2或者Project3下的Logstore进行监控;
默认授权方式也是最常见的创建告警规则中使用的方式,如果只需要对当前Project下的资源进行监控,可以使用这种授权方式。
内置角色
内置角色是授权方式中的第二个选择,内置角色是指SLS默认定义的系统角色,名称为AliyunSLSAlertMonitorRole,角色中定义了跨Project访问所需要的权限和受信实体阿里云SLS服务,角色ARN格式为acs:ram::主账号UID:role/aliyunslsalertmonitorrole
内置角色默认允许跨区域监控当前账号下Project,比如账号A可以对成都区域的Project1的Logstore1和呼和浩特区域的Project3下的Logstore1同时进行监控。
账号A
呼和浩特
成都
Project2
Project3
Project1
Logstore1
Logstore2
Logstore1
Logstore2
Logstore1
在配置告警规则时,点击查询统计,在弹出的查询统计框中,可以选择授权方式,这里选择内置角色。
如图所示,如果之前没有授权过内置角色,会出现点击授权的按钮,点击前往授权,会跳转到云资源访问授权页面;当前登录账号需要是主账号或者具有RAM写权限的子账号,可以点击同意授权按钮,授权完成后,再返回上一次一个面,点击完成授权,即可看到角色ARN已经自动填充好,并且区域列表会展开,可以选择当前账号下其他区域的Project及Logstore,通过输入查询分析语句即可完成对当前账号的跨区域,跨Project监控。
云资源访问授权
如背修致角色蚁服请前住RM控都台角色管理中没,要注的是铺的可能致caduamu无法取到必要的眼.
Log请求获取访问您云资源的权限.
下方是系统创建的可Log使用的角色,授权后,Log拥有对您云资源相应的访问权限.
AliyunSLSAIertMonitorRole
展开详情
同意授权
取消
查询统计
高级配置
关联报表
日志库
类型:
授权方式:
内置角色
角色ARN:
acs:ram:
role/aliyunslsalertmonitoole
华南2(河源)
区域:
华北5(呼和浩特)
项目:
华北6(乌兰察布)
华东1(杭州)
日志库:
华东2(上海)
查询区间:?
华东5(南京-本地地域)
华南1(深圳)
取消
预览
查询:
华南2(河源)
华南3(广州)
确认
取消
注意
如果使用内置角色需要对跨账号的资源进行监控,需要修改找到在RAM控制台找到内置角色,然后修改其信任策略;
例如主账号A需要监控主账号B下的Project,需要主账号B或者主账号B下具有RAM操作权限的子账号在界面执行上述前往授权的操作,然后账号B登录RAM控制台-RAM角色管理,找到AliyunSLSAlertMonitorRole,然后修改其信任策略,在Service中增加主账号A的UID@log.aliyuncs.com。
RAM访问控制
RAM角色管理
RAM访问控制
RAM角色管理
概览
人员管理
什么是RAM角色?
RAM角色机制是向您信任的实体(例如:RAM用户,某个应
用户组
您云账户下的一个RAM用过户(可能是代表一个移动Apm
其他云账户中的RAM用过户(需要进行跨账户的资源访问
用户
ECS实例上运行的应用程序代码(需要对云资源执行操
某些阿里云服务(需要对您账户中的资源进行操作才能
设置
企业的身份提供商IdP,可以用于角色SSO.
SSO管理
RAM角色颁发短时有效的访问令牌(STS令牌),使其成为
特别说明:
权限管理
RAM角色不同于传统的教科书式角色(其含义是指一组权限
授权
创建RAM角色
8
slsalert
权限策略管理
RAM角色名称
RAM角色管理
AliyunSLSAIertMonitorRole
OAuth应用管理
自定义角色
自定义角色是在查询统计中可以选择的第三种授权方式,该授权方式允许用户自己定义一个角色,并对角色进行精细的权限管理和信任策略管理,其中权限管理可以设置不同的权限粒度,比如只有限制某个区域的Project可以被监控,其他区域的不能监控;信任策略允许用户的资源可以被哪些账户进行监控。
自定义角色可以最大限度的对资源进行全局监控,比如账号A和账号B,用于日志资源如下图,账号C需要同时对账号A下的成都-Project1下的Logstore1和账号B下的上海-Project6下的Logstore2进行监控;那么账号A和账号B可以创建自定义角色,权限策略分别设置成都Project下Logstore的查询权限和上海Project下Logstore的查询权限,信任策略设置为信任账号C;然后账号C就可以使用两个创建好的角色来配置告警规则中的查询统计,并对两个账号下的资源进行监控告警。
账号A
呼和浩特
成都
Project3
Project2
Project1
账号B
Logstore1
Logstore2
Logstore1
Logstorel
Logstore2
上海
杭州
Project5
Project6
Project7
Logstore1
Logstore2
Logstore1
Logstore1
Logstore2
跨账号监控告警配置示例
这里我们将提供了一个跨账号监控配置告警的示例,主要使用到了用户自定义角色的授权方式。
示例背景:我们在SLS智能告警-访问控制与授权一文中介绍了如何使用RAM账号创建告警规则,这里为了例子的简洁性,突出跨账号及自定义角色的定义,这里都使用主账号来完成。
假设账号A在成都有项目p1和nginx访问日志nginx-access-log,账号B在呼和浩特有项目p2和nginx访问日志nginx-access-log,需求是账号A需要同时监控项目p1下的nginx 500错误数和p2下的nginx 500错误数,在15分钟内两者错误数加起来大于10就告警。
账号B创建自定义角色
- 登录RAM控制台,在权限管理-权限策略管理中,创建自定义权限策略,假设为p2-monitor-policy,策略内容参考如下,其中Statement中第二条限制了对p2项目的查询分析日志,不允许对其他项目进行监控。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:ListProject" ], "Resource": [ "acs:log:*:*:*" ] }, { "Effect": "Allow", "Action": [ "log:ListLogStores", "log:GetLogStoreLogs", "log:GetIndex" ], "Resource": [ "acs:log:*:*:project/p2/*" ] } ] }
- 在RAM角色管理中,创建RAM角色,类型选择阿里云服务,下一步中角色类型选择普通服务角色,角色名称为allow-a-monitor-role,选择受信服务为日志服务,点击完成。
- 添加权限,授权应用范围选择整个云账号,选择权限选择自定义策略,找到之前创建好的p2-monitor-policy,点击选中,点击确定。
账号A配置告警规则
- 登录SLS控制台,在p1项目下找到nginx-access-log,点击查询分析图标,输入查询分析语句status >= 500 | SELECT count(1) as p1_nginx_err_cnt,点击查询/分析,然后另存为告警-新版告警;
- 点击查询统计后面的添加按钮,增加一条查询统计
- 在弹出的查询统计中,授权方式选择自定义角色,角色ARN填写在账号B中创建的角色allow-a-monitor-role的ARN;区域选择呼和哈特,项目选择p2,日志库选择nginx-access-log,输入查询语句status >= 500 | SELECT count(1) as p2_nginx_err_cnt,点击预览。
查询统计
关联报表
高级配置
类型:
日志库
授权方式:
自定义角色
角色ARN:
xrole/aliyuns/salertmonitorole
acs:ram.:1
区域:
华北5(呼和浩特)
项目:
demo
日志库:
nginx-access-log
查询区间:
(相对)
15分钟
取消
预览
查询:
status>-500ISELECTcount1)asp2
sp-nginx_err-cnt
- 确认后,在告警规则配置页面,集合操作选择笛卡尔积,触发条件填写p1_nginx_err_cnt + p2_nginx_err_cnt > 10
- 其余配置保持默认,告警策略选择极简模式,填写相应的渠道,等待告警的触发。如果数据中有满足告警条件,会触发告警,并发送通知到相应的渠道。说明账号A可以通过自定义角色的授权方式,实现了对账号B的日志资源的监控。
注意
如果是账号A下的RAM账号a需要监控账号B下的资源,需要对a赋予passrole的权限,在本例中,账号B的创建的自定义角色ARN假设是acs:ram::11*****:role/allow-a-monitor-role;
需要账号A登录RAM控制台,对RAM账号a进行增加权限如下:
{ "Statement": [ { "Action": "ram:PassRole", "Effect": "Allow", "Resource": "acs:ram::11*****:role/allow-a-monitor-role" } ], "Version": "1"}
总结
本文主要介绍了如何使用SLS智能告警来实现全局监控告警,对于跨账号、跨区域、跨Project的监控目标,通过使用不同的授权方式,可以实现不同粒度资源的监控。文中主要介绍了默认授权方式,内置角色授权方式和自定义角色授权方式,其中自定义角色授权方式最为灵活,配置也最为复杂。用户可以根据自身的需求来选择不同的授权方式和监控粒度。
参考
进一步参考
- SLS(日志服务)云原生观测分析平台:https://www.aliyun.com/product/sls
- SLS新版告警文档首页:https://help.aliyun.com/document_detail/207609.html
- 欢迎扫群加入阿里云-日志服务(SLS)技术交流(集团同学请直接搜索群号11702236加入), 获得第一手资料与支持
- 后续系列直播与培训视频会同步到B站,敬请留意
最后,如果您还想了解更多智能运维前沿资讯,欢迎您报名参加【数智创新行·智能运维专场】。
6月25日|上海·西岸国际人工智能中心
数智创新行上海站·智能运维专场
阿里云将带来云原生智能运维解决方案,满足海量事件有效感知、高效响应,可观测数据统一分析、故障定位,以及基于AI的异常检测等需求,助力企业构建自己的运维平台,成为开发、运维人员高效可靠的助手。
扫描海报二维码或点击下方链接报名, 期待您一起开启智能运维新时代!
https://www.aliyun.com/page-source//developer/special/osssalon