日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

配置审计(Config)变配报警设置

發布時間:2024/8/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 配置审计(Config)变配报警设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介: 本文作者【紫極zj】,本篇將主要介紹通過配置審計的自定義規則等服務,對負載均衡進行預警行為的相關介紹。

前言

配置審計(Config)將您分散在各地域的資源整合為全局資源列表,可便捷地搜索全局資源,并通過規則對資源配置進行評估,過濾出不符合業務要求的資源變配操作。

?

本文為您介紹如何通過配置審計(Config)的自定義規則和日志服務(SLS)報警配合,對指定的負載均衡(SLB)變配進行報警,幫助企業快速感知變配內容并及時做出相應對策。

?

背景

云上賬號主要有阿里云主賬號、RAM子賬號、RAM角色,阿里云主賬號對所有資源都有完整的控制能力,一些被賦予高級權限的RAM子賬號、RAM角色等也同樣可以控制資源。如何在變更操作之前阻斷該行為,是服務控制策略(SCP)的范疇(該服務限制只能是企業認證賬戶,并且開通了資源目錄(Resource Directory)才可實施),本文暫不討論。如何在變配后快速感知到變化也非常重要。公司A的運維同學向我們提了一個問題:公司的核心業務部署在阿里云上,采用的架構是彈性計算ECS+負載均衡(SLB)+關系型數據庫RDS,每天都擔心核心服務異常變配導致業務中斷,希望變配后及時收到消息通知,想問問有沒有什么方案。

?

我們為他們推薦了配置審計(Config)結合日志服務(SLS)的報警。那這個產品組合是如何實現以上目標的呢?

?

流程圖

?

整個方案的流程圖如上所示。員工A修改了企業某核心業務負載均衡(SLB)的配置。資源變配數據會被配置審計(Config)感知并存儲,同時會觸發監聽該類資源變動的規則進行評估。規則引擎接收的入參包含了資源變動的 Diff 數據,如果該規則為自定義規則,規則引擎會執行配置好的函數計算(FC)的函數。函數過濾出目標資源的變更,并將變更數據寫入日志服務(SLS)中。日志服務通過配置告警策略,觸發告警并通知管理員。

?

另外兩條實線表示管理員可以前往配置審計(Config)查看資源時間線以及通過日志服務(SLS)查看資源具體的配置變更信息。

?

新建一個日志庫(logstore)

新建日志庫(logstore),用于存儲目標資源的變配數據,同時我們可以基于這個日志庫(logstore)配置告警策略;具體如何創建日志項目(project)及日志庫(logstore),這里我就不再贅述,您可參考日志服務的文檔進行操作。

?

本案例對應的日志項目為: aliyun-fc-cn-hangzhou-26064c43-65dc-5734-8175-3c0fdfc784df ?,日志庫為: specific-config-alert ?。

?

新建函數計算(FC)的函數

配置審計(Config)的自定義規則是基于函數計算(FC)實現的。函數所屬的地域是不受限制的。本案例選擇地域為華東1(杭州)

?

我是基于 alimebot-nodejs 模板創建的函數。

?

我們在 ConfigService 這個服務下面新建一個名為 specific-config-change-alert 的函數。

?

函數的內部的業務邏輯,我們進行如下設計:

  • 支持用戶額外指定一個參數 arn ,方便我們對某一個特定的資源進行報警;如果不指定 arn,則表示對該類型的資源變更都進行告警;
  • 調用日志服務(SLS)的SDK,將日志存入日志庫(logstore);
  • ?

    代碼邏輯如下

    const ALY = require('aliyun-sdk'); // 日志服務Nodejs SDKexports.handler = function (event, context, callback) {const sls = new ALY.SLS({"accessKeyId": context.credentials.accessKeyId, //阿里云訪問密鑰AccessKey ID。更多信息,請參見訪問密鑰。阿里云主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建并使用RAM賬號進行API訪問或日常運維。 "secretAccessKey": context.credentials.accessKeySecret, //阿里云訪問密鑰AccessKey Secret。 "securityToken": context.credentials.securityToken, //RAM角色額外輸入的securityTokenendpoint: 'http://cn-hangzhou.log.aliyuncs.com', //日志服務的域名。更多信息,請參見服務入口。此處以杭州為例,其它地域請根據實際情況填寫。apiVersion: '2015-06-01' //SDK版本號,固定值。});// -------------------------------// put logs// -------------------------------const projectName = "aliyun-fc-cn-hangzhou-26064c43-65dc-5734-8175-3c0fdfc784df"; //剛剛創建的日志項目const logStoreName = "specific-config-alert"; //剛剛創建的日志庫const parsed = JSON.parse(event); //將入參轉化為js對象 if (!parsed || !parsed.invokingEvent) { //配置審計調用時傳入的參包含: invokingEvent(變更數據), ruleParameters(函數規則額外傳入的用戶自定義參數), resultTokencallback(null, event); return;}const specificArn = parsed.ruleParameters && parsed.ruleParameters.arn; //函數規則允許用戶傳入的自定義的資源arnconst transformData = Object.keys(parsed.invokingEvent).map(function(k) { return { key: k, value: JSON.stringify(parsed.invokingEvent[k])}});// 日志服務需要的格式const logGroup = {logs : [{time: Math.floor(new Date().getTime()/1000),contents: transformData}],topic: 'special-config-change'};const resourceArn = parsed.invokingEvent && parsed.invokingEvent.configurationItem && parsed.invokingEvent.configurationItem.arn;if (!specificArn || specificArn === resourceArn) { // 如果規則中未指定具體資源arn,則默認所有過濾到的資源類型都寫到日志服務(SLS)sls.putLogs({projectName: projectName,logStoreName: logStoreName,logGroup: logGroup}, function (err, data) {if (err) {callback(err);return;}callback(null, data);});} else {callback(null);} }

    函數是以指定的RAM角色來執行的,所以需要給指定的RAM角色進行授權,本案例需要給RAM角色授權能夠寫指定日志庫的權限。

    {"Version": "1","Statement": [{"Action": ["log:PostLogStoreLogs","log:PutLogs"],"Resource": "acs:log:*:*:project/aliyun-fc-cn-hangzhou-26064c43-65dc-5734-8175-3c0fdfc784df/logstore/*", // 具體可根據自己函數的實際業務邏輯進行授權"Effect": "Allow"}] }

    ?

    新建配置審計(Config)規則

    進入配置審計控制臺->規則->新建規則->新建自定義規則,自定義規則是將規則評估的邏輯交給函數計算(FC)。

    ?

    設置基本屬性

    我們選擇前面創建的函數,并配置規則名稱,觸發機制選擇“配置變更”,表示我們希望在有新的配置發生變化時,就執行該自定義規則規則。

    ?

    設置評估資源范圍

    資源類型選擇SLB負載均衡,表示我們只希望對類型為SLB負載均衡的配置變更才觸發函數執行。

    ?

    參數設置

    在前面進行函數設計時,我們增加了一個選項,允許用戶在配置自定義規則時,希望對某一個資源進行報警需求的支持。

    ?

    由于在期望值那一欄,我沒有輸入任何值,則表示當資源類型為負載均衡(SLB)的所有資源發生變更時,都將觸發函數執行;您也可以輸入期望值,期望值位目標資源的 arn。

    ?

    配置日志服務報警

    進入之前新建的日志服務(SLS)的日志項目(logstore),設置一個查詢條件 SELECT COUNT(1) AS C ,查詢后,點擊另存為告警,則開始進行日志服務告警配置。

    以下為我設定的告警配置:每隔5分鐘,查詢最近5分鐘的日志數據,如果查詢的結果 >0 , 則觸發短信告警。

    ?

    ?

    ?

    驗證效果

    我們添加一個SLB負載均衡的監聽。稍等一會,我們就會發現一條配置變更已經寫入到了 日志庫(logstore)中。

    ?

    報警通知直接通過短信通知到了我的手機上。

    ?

    ?

    總結

    配置審計(Config)對資源變配觸發自定義規則可以實現很多的客戶場景, 如自定義合規校驗邏輯(參考文檔)、自動化執行、甚至自動修復等。

    ?

    本文主要結合日志服務(SLS)的告警幫助客戶快速感知資源變化并報警。

    原文鏈接

    本文為阿里云原創內容,未經允許不得轉載。

    ?

    總結

    以上是生活随笔為你收集整理的配置审计(Config)变配报警设置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。