天天看點

通過告警觸發ECS帶寬臨時更新

背景

當包年包月ECS執行個體網絡帶寬不夠用時,我們可通過修改執行個體的帶寬配置提高網絡性能。但可能每次需要更新的時間點和條件都不同,如果專人根據需求節點去手動修改執行個體臨時帶寬,這種方式耗時耗力,且難免可能有錯誤發生;或者也可更新執行個體全時段的帶寬,這種方式又會多出不必要開銷。

運維編排服務(OOS)

有一個

告警觸發功能

,設定觸發條件後,比如當帶寬使用率過高時,會自動更新臨時帶寬,幫您省時省力省開銷。

操作步驟

  1. 本示例,帶寬更新前執行個體資訊如下。
    通過告警觸發ECS帶寬臨時更新
  2. 登入 OOS控制台
  3. 單擊我的模版,單擊建立模版,将附錄1模版腳本複制粘貼到編輯框,建立用于更新帶寬的模版,單擊建立模版。
  4. 單擊告警與事件運維,單擊建立。
  5. 設定觸發規則。
  6. 産品類型選擇雲伺服器ECS,在規則描述中選擇觸發條件;本文選擇當專有網絡公網流出帶寬平均使用率大于80%時,觸發告警操作,即進行臨時帶寬更新;觸發沉默周期選擇要大于臨時更新帶寬的時間,避免二次觸發後重複更新。
  7. 在需要報警資源中,選擇要監控帶寬的執行個體。
    通過告警觸發ECS帶寬臨時更新
  8. 選擇模版,模版類型選擇我的模版,并選擇已經建立的臨時帶寬更新模版。
    通過告警觸發ECS帶寬臨時更新
  9. 設定參數。其中InstanceId參數的預設值為$.instanceId,其表示自動捕獲已告警的執行個體ID。另外需要注意,執行使用到的權限的來源需要選擇一個授予了更改帶寬權限的且可操作運維編排的RAM角色,權限JSON腳本附于下方,具體授權可參考 為OOS服務設定RAM權限
    通過告警觸發ECS帶寬臨時更新
{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:ModifyInstanceNetworkSpec"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}           
  1. 設定完後,單擊立即執行。
  2. 檢視執行,若已觸發了帶寬更新,可以看到有子執行被建立并執行成功,且目标執行個體帶寬也發生變化。
    通過告警觸發ECS帶寬臨時更新
    通過告警觸發ECS帶寬臨時更新
    通過告警觸發ECS帶寬臨時更新

附錄1

當對如下腳本建立模版,并把它作為帶寬更新模版時,預設的更新時長是個範圍,會介于3-4小時之間。當開始更新的時間點加3分鐘為整點時,更新時長達到最大将更新240分鐘,當開始時間點加3分鐘為59分鐘時,達到最小更新時長181分鐘。如有需要,也可通過修改模版中的數字14580(表示4h+3min)來更改更新最大時長,比如,更新時長範圍若想改成7-8小時,則将14580改為28980即可。

FormatVersion: OOS-2019-06-01
Description:
  en: ' Upgrade internet bandwidth for ECS instance.'
  zh-cn: 臨時更新帶寬
  name-en: ECS-TemporaryUpgradeInternetBandwidth
  name-zh-cn: 臨時更新帶寬
Parameters:
  RegionId:
    Type: String
    Description:
      en: The id of region.
      zh-cn: 地域ID。
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  InstanceId:
    Type: String
    Description:
      en: One ECS instance Id.
      zh-cn: 一個ECS執行個體ID
    Default: "$.instanceId"
  MaxBandwidthOut:
    Description:
      en: The maximum public network bandwidth for out-direction.
      zh-cn: 需要更新到多大的伺服器帶寬,例:填寫8,表示要臨時更新伺服器帶寬至8M,注意:需大于目前帶寬
    Type: Number
    MinValue: 0
    MaxValue: 200
    Default: 2
  OOSAssumeRole:
    Description:
      en: The RAM role to be assumed by OOS.
      zh-cn: OOS扮演的RAM角色。
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: TemporaryUpgradeInternetBandwidth
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Modifies the temporary bandwidth of the instances.
      zh-cn: 臨時更新伺服器帶寬。
    Properties:
      Service: ECS
      API: ModifyInstanceNetworkSpec
      Parameters:
        RegionId: '{{ RegionId }}'
        InstanceId: '{{ InstanceId }}'
        InternetMaxBandwidthOut: '{{ MaxBandwidthOut }}'
        StartTime:
          'Fn::FormatUTCTime':
            - 'Fn::AddSecond':
                - '{{ ACS::CurrentUTCTime }}'
                - 180  # 3min
            - '%Y-%m-%dT%H:%MZ'
        EndTime:
          'Fn::FormatUTCTime':
            - 'Fn::AddSecond':
                - '{{ ACS::CurrentUTCTime }}'
                - 14580 # 3min +4h 帶寬預設更新的時長預設是個範圍,會介于181min-240min之間。當開始更新的時間點+3min為整點時,更新時長達到最大将更新240min,當開始時間+3min為59分時,達到最小将更新181min。
            - '%Y-%m-%dT%HZ'