天天看点

SLS智能告警-全局监控告警

前言

SLS是一站式的云原生可观测分析平台,用户可以将Log, Metric, Trace数据接入到SLS;根据业务的需要,用户可能将数据存储在不同的账户、地域、Project下,在对数据进行监控分析时,如果只能对特定Project或者特定区域进行监控,往往会有一定的局限性,SLS智能告警可以提供跨Project,甚至跨地域,跨账号的监控,然后对告警进行统一降噪管理,通知管理等;实现对SLS资源的全局监控。

本文将介绍如何使用SLS智能告警来进行全局监控,介绍全局监控需要的查询的三种授权方式,并通过一个跨账号监控的例子来介绍如果进行全局监控。

全局监控概述

SLS智能告警-全局监控告警

在SLS中可以将不同云产品的日志存储在SLS中,在不同的主账号下都可以有这些云产品的日志,除了云产品的日志,每个主账号下也会有个字的系统,中间件,服务的日志;对于一个企业来说,可能会因为业务的需要,使用不同的主账号来管理企业在阿里云的日志资源。SLS智能告警提供了一种对不同主账号下日志资源的全局监控机制,允许对不同账号,不同区域下的Project进行统一监控,不需要将数据同步到某一个特定的账号或者区域下面。

举例来说,比如某企业有主账号A和主账号B分别接入了各类云产品日志和业务日志,对这些日志的监控告警运维是专门的运维团队进行负责,比如有一个主账号C,每天监测被审计账号A、B的每日访问日志量正常,这时候就需要用到了跨账号、跨Project的查询;对查询的数据统一建立告警规则,统一进行告警的降噪管理,通知管理和事务管理。

使用SLS智能告警进行全局监控,会涉及到对不同账号不同区域的资源的授权,比如上述例子中的主账号C需要有账号A、B的授权才可以对其资源进行监控查询,以下将对告警权限和授权方式进行介绍。

告警规则权限

SLS智能告警的权限包括两部分

  • 告警规则的管理权限
  • 监控目标的查询权限

在SLS智能告警-访问控制与授权一文中,我们主要介绍了创建告警规则的管理权限,对于监控目标的查询权限直接使用了创建告警规则实体(RAM用户或者主账户)本身被赋予的权限。监控规则实体的权限在使用上会有一定的限制,只能对当前Project下的不同Logstore进行查询。如果需要进行跨Project,跨账号的查询需要使用告警查询的授权方式。

告警查询授权方式

告警查询的授权方式主要包括三类:

SLS智能告警-全局监控告警
  • 默认:是指访问控制与授权文中使用的默认查询权限,只能查看当前告警规则所在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智能告警-全局监控告警

内置角色

内置角色是授权方式中的第二个选择,内置角色是指SLS默认定义的系统角色,名称为AliyunSLSAlertMonitorRole,角色中定义了跨Project访问所需要的权限和受信实体阿里云SLS服务,角色ARN格式为acs:ram::主账号UID:role/aliyunslsalertmonitorrole

内置角色默认允许跨区域监控当前账号下Project,比如账号A可以对成都区域的Project1的Logstore1和呼和浩特区域的Project3下的Logstore1同时进行监控。

SLS智能告警-全局监控告警

在配置告警规则时,点击查询统计,在弹出的查询统计框中,可以选择授权方式,这里选择内置角色。

如图所示,如果之前没有授权过内置角色,会出现点击授权的按钮,点击前往授权,会跳转到云资源访问授权页面;当前登录账号需要是主账号或者具有RAM写权限的子账号,可以点击同意授权按钮,授权完成后,再返回上一次一个面,点击完成授权,即可看到角色ARN已经自动填充好,并且区域列表会展开,可以选择当前账号下其他区域的Project及Logstore,通过输入查询分析语句即可完成对当前账号的跨区域,跨Project监控。

SLS智能告警-全局监控告警
SLS智能告警-全局监控告警
SLS智能告警-全局监控告警

注意

如果使用内置角色需要对跨账号的资源进行监控,需要修改找到在RAM控制台找到内置角色,然后修改其信任策略;

例如主账号A需要监控主账号B下的Project,需要主账号B或者主账号B下具有RAM操作权限的子账号在界面执行上述前往授权的操作,然后账号B登录RAM控制台-RAM角色管理,找到AliyunSLSAlertMonitorRole,然后修改其信任策略,在Service中增加主账号A的[email protected]

SLS智能告警-全局监控告警
SLS智能告警-全局监控告警

自定义角色

自定义角色是在查询统计中可以选择的第三种授权方式,该授权方式允许用户自己定义一个角色,并对角色进行精细的权限管理和信任策略管理,其中权限管理可以设置不同的权限粒度,比如只有限制某个区域的Project可以被监控,其他区域的不能监控;信任策略允许用户的资源可以被哪些账户进行监控。

自定义角色可以最大限度的对资源进行全局监控,比如账号A和账号B,用于日志资源如下图,账号C需要同时对账号A下的成都-Project1下的Logstore1和账号B下的上海-Project6下的Logstore2进行监控;那么账号A和账号B可以创建自定义角色,权限策略分别设置成都Project下Logstore的查询权限和上海Project下Logstore的查询权限,信任策略设置为信任账号C;然后账号C就可以使用两个创建好的角色来配置告警规则中的查询统计,并对两个账号下的资源进行监控告警。

SLS智能告警-全局监控告警

跨账号监控告警配置示例

这里我们将提供了一个跨账号监控配置告警的示例,主要使用到了用户自定义角色的授权方式。

示例背景:我们在

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,点击查询/分析,然后另存为告警-新版告警;
  • 点击查询统计后面的添加按钮,增加一条查询统计
SLS智能告警-全局监控告警
  • 在弹出的查询统计中,授权方式选择自定义角色,角色ARN填写在账号B中创建的角色allow-a-monitor-role的ARN;区域选择呼和哈特,项目选择p2,日志库选择nginx-access-log,输入查询语句status >= 500 | SELECT count(1) as p2_nginx_err_cnt,点击预览。
SLS智能告警-全局监控告警
  • 确认后,在告警规则配置页面,集合操作选择笛卡尔积,触发条件填写p1_nginx_err_cnt + p2_nginx_err_cnt > 10
SLS智能告警-全局监控告警
  • 其余配置保持默认,告警策略选择极简模式,填写相应的渠道,等待告警的触发。如果数据中有满足告警条件,会触发告警,并发送通知到相应的渠道。说明账号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的监控目标,通过使用不同的授权方式,可以实现不同粒度资源的监控。文中主要介绍了默认授权方式,内置角色授权方式和自定义角色授权方式,其中自定义角色授权方式最为灵活,配置也最为复杂。用户可以根据自身的需求来选择不同的授权方式和监控粒度。

参考

  • 日志告警介绍【 链接
  • 授予RAM用户告警操作权限【
  • 配置访问控制【
  • RAM角色概览【

进一步参考

SLS智能告警-全局监控告警

最后,如果您还想了解更多智能运维前沿资讯,欢迎您报名参加【数智创新行·智能运维专场】。

6月25日|上海·西岸国际人工智能中心

数智创新行上海站·智能运维专场

阿里云将带来云原生智能运维解决方案,满足海量事件有效感知、高效响应,可观测数据统一分析、故障定位,以及基于AI的异常检测等需求,助力企业构建自己的运维平台,成为开发、运维人员高效可靠的助手。

扫描海报二维码或点击下方链接报名, 期待您一起开启智能运维新时代!

https://www.aliyun.com/page-source//developer/special/osssalon
SLS智能告警-全局监控告警

继续阅读