資安

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

前言

SLS是一站式的雲原生可觀測分析平臺,用戶可以將Log, Metric, Trace數據接入到SLS;根據業務的需要,用戶可能將數據存儲在不同的賬戶、地域、Project下,在對數據進行監控分析時,如果只能對特定Project或者特定區域進行監控,往往會有一定的侷限性,SLS智能告警可以提供跨Project,甚至跨地域,跨賬號的監控,然後對告警進行統一降噪管理,通知管理等;實現對SLS資源的全局監控。

本文將介紹如何使用SLS智能告警來進行全局監控,介紹全局監控需要的查詢的三種授權方式,並通過一個跨賬號監控的例子來介紹如果進行全局監控。

全局監控概述

image.png

在SLS中可以將不同雲產品的日誌存儲在SLS中,在不同的主賬號下都可以有這些雲產品的日誌,除了雲產品的日誌,每個主賬號下也會有個字的系統,中間件,服務的日誌;對於一個企業來說,可能會因為業務的需要,使用不同的主賬號來管理企業在阿里雲的日誌資源。SLS智能告警提供了一種對不同主賬號下日誌資源的全局監控機制,允許對不同賬號,不同區域下的Project進行統一監控,不需要將數據同步到某一個特定的賬號或者區域下面。

舉例來說,比如某企業有主賬號A和主賬號B分別接入了各類雲產品日誌和業務日誌,對這些日誌的監控告警運維是專門的運維團隊進行負責,比如有一個主賬號C,每天監測被審計賬號A、B的每日訪問日誌量正常,這時候就需要用到了跨賬號、跨Project的查詢;對查詢的數據統一建立告警規則,統一進行告警的降噪管理,通知管理和事務管理。

使用SLS智能告警進行全局監控,會涉及到對不同賬號不同區域的資源的授權,比如上述例子中的主賬號C需要有賬號A、B的授權才可以對其資源進行監控查詢,以下將對告警權限和授權方式進行介紹。

告警規則權限

SLS智能告警的權限包括兩部分

  • 告警規則的管理權限
  • 監控目標的查詢權限

在SLS智能告警-訪問控制與授權一文中,我們主要介紹了創建告警規則的管理權限,對於監控目標的查詢權限直接使用了創建告警規則實體(RAM用戶或者主賬戶)本身被賦予的權限。監控規則實體的權限在使用上會有一定的限制,只能對當前Project下的不同Logstore進行查詢。如果需要進行跨Project,跨賬號的查詢需要使用告警查詢的授權方式。

告警查詢授權方式

告警查詢的授權方式主要包括三類:

image.png

  • 默認:是指訪問控制與授權文中使用的默認查詢權限,只能查看當前告警規則所在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下的資源進行監控,可以使用這種授權方式。

image.png

內置角色

內置角色是授權方式中的第二個選擇,內置角色是指SLS默認定義的系統角色,名稱為AliyunSLSAlertMonitorRole,角色中定義了跨Project訪問所需要的權限和受信實體阿里雲SLS服務,角色ARN格式為acs:ram::主賬號UID:role/aliyunslsalertmonitorrole


內置角色默認允許跨區域監控當前賬號下Project,比如賬號A可以對成都區域的Project1的Logstore1和呼和浩特區域的Project3下的Logstore1同時進行監控。

image.png


在配置告警規則時,點擊查詢統計,在彈出的查詢統計框中,可以選擇授權方式,這裡選擇內置角色。

如圖所示,如果之前沒有授權過內置角色,會出現點擊授權的按鈕,點擊前往授權,會跳轉到雲資源訪問授權頁面;當前登錄賬號需要是主賬號或者具有RAM寫權限的子賬號,可以點擊同意授權按鈕,授權完成後,再返回上一次一個面,點擊完成授權,即可看到角色ARN已經自動填充好,並且區域列表會展開,可以選擇當前賬號下其他區域的Project及Logstore,通過輸入查詢分析語句即可完成對當前賬號的跨區域,跨Project監控。

image.png

image.png

image.png

注意

如果使用內置角色需要對跨賬號的資源進行監控,需要修改找到在RAM控制檯找到內置角色,然後修改其信任策略;

例如主賬號A需要監控主賬號B下的Project,需要主賬號B或者主賬號B下具有RAM操作權限的子賬號在界面執行上述前往授權的操作,然後賬號B登錄RAM控制檯-RAM角色管理,找到AliyunSLSAlertMonitorRole,然後修改其信任策略,在Service中增加主賬號A的UID@log.aliyuncs.com

image.png

image.png

自定義角色

自定義角色是在查詢統計中可以選擇的第三種授權方式,該授權方式允許用戶自己定義一個角色,並對角色進行精細的權限管理和信任策略管理,其中權限管理可以設置不同的權限粒度,比如只有限制某個區域的Project可以被監控,其他區域的不能監控;信任策略允許用戶的資源可以被哪些賬戶進行監控。

自定義角色可以最大限度的對資源進行全局監控,比如賬號A和賬號B,用於日誌資源如下圖,賬號C需要同時對賬號A下的成都-Project1下的Logstore1和賬號B下的上海-Project6下的Logstore2進行監控;那麼賬號A和賬號B可以創建自定義角色,權限策略分別設置成都Project下Logstore的查詢權限和上海Project下Logstore的查詢權限,信任策略設置為信任賬號C;然後賬號C就可以使用兩個創建好的角色來配置告警規則中的查詢統計,並對兩個賬號下的資源進行監控告警。

image.png

跨賬號監控告警配置示例

這裡我們將提供了一個跨賬號監控配置告警的示例,主要使用到了用戶自定義角色的授權方式。

示例背景:我們在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,點擊查詢/分析,然後另存為告警-新版告警;
  • 點擊查詢統計後面的添加按鈕,增加一條查詢統計

image.png

  • 在彈出的查詢統計中,授權方式選擇自定義角色,角色ARN填寫在賬號B中創建的角色allow-a-monitor-role的ARN;區域選擇呼和哈特,項目選擇p2,日誌庫選擇nginx-access-log,輸入查詢語句status >= 500 | SELECT count(1) as p2_nginx_err_cnt,點擊預覽

image.png

  • 確認後,在告警規則配置頁面,集合操作選擇笛卡爾積,觸發條件填寫p1_nginx_err_cnt + p2_nginx_err_cnt > 10

image.png

  • 其餘配置保持默認,告警策略選擇極簡模式,填寫相應的渠道,等待告警的觸發。如果數據中有滿足告警條件,會觸發告警,併發送通知到相應的渠道。說明賬號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角色概覽【鏈接

進一步參考

image

Leave a Reply

Your email address will not be published. Required fields are marked *