模板名稱
ACS-ECS-AlarmWhenDiscountAndPriceExceedsThresholdInMultiZoneAndInstanceType 監控多可用性區域下的多執行個體類型的折扣與現價超出閾值時警示
模板描述
監控多可用性區域下的多執行個體類型的折扣與現價超出閾值時警示
模板類型
自動化
所有者
Alibaba Cloud
輸入參數
參數名稱 | 描述 | 類型 | 是否必填 | 預設值 | 約束 |
zoneId | 可用性區域 | List | 是 | ||
instanceType | 執行個體規格 | List | 是 | ||
threshold | 價格/折扣閾值 | Number | 是 | ||
webhook | DingTalk接收資訊的地址 | String | 是 | ||
region | 地區ID | String | 否 | {{ ACS::RegionId }} | |
taskType | 監控任務類型 | String | 否 | Discount | |
rateControl | 任務執行的並發比率 | Json | 否 | {‘Mode’: ‘Concurrency’, ‘MaxErrors’: 100, ‘Concurrency’: 10} | |
OOSAssumeRole | OOS扮演的RAM角色 | String | 否 | OOSServiceRole |
輸出參數
參數名稱 | 描述 | 類型 |
allThresholdInfo | Json |
執行此模板需要的權限原則
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:DescribeAvailableResource",
"ecs:DescribeSpotPriceHistory"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
詳情
ACS-ECS-AlarmWhenDiscountAndPriceExceedsThresholdInMultiZoneAndInstanceType詳情
模板內容
FormatVersion: OOS-2019-06-01
Description:
en: Alarm when monitoring the discount and spot price of multi-instance types in multi-availability zone exceeding the threshold
zh-cn: 監控多可用性區域下的多執行個體類型的折扣與現價超出閾值時警示
name-en: ACS-ECS-AlarmWhenDiscountAndPriceExceedsThresholdInMultiZoneAndInstanceType
name-zh-cn: 監控多可用性區域下的多執行個體類型的折扣與現價超出閾值時警示
categories:
- instance_manage
Parameters:
region:
Type: String
Label:
en: RegionId
zh-cn: 地區ID
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
zoneId:
Description:
en: The zone id
zh-cn: 可用性區域ID
Label:
en: ZoneId
zh-cn: 可用性區域
Type: List
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
AssociationPropertyMetadata:
RegionId: region
AutoChangeType: false
instanceType:
Description:
en: The instance type
zh-cn: 執行個體規格
Label:
en: InstanceType
zh-cn: 執行個體規格
Type: List
AssociationProperty: 'ALIYUN::ECS::Instance::InstanceType'
AssociationPropertyMetadata:
Multiple: true
RegionId: region
ZoneIds: '${zoneId}'
taskType:
Description:
en: The monitoring threshold task type(Discount:Monitor discount, Price:monitor price)
zh-cn: 監控閾值任務類型(Discount:折扣監控, Price:價格監控)
Label:
en: TaskType
zh-cn: 監控任務類型
Type: String
Default: Discount
AllowedValues:
- Discount
- Price
threshold:
Description:
en: 'The discount/price threshold(example:10 is 1% off,50 is 50% off,Or directly enter the price threshold).'
zh-cn: 價格/折扣閾值(例:10為1折,50為5折,或者直接輸入價格的閾值)
Label:
en: Threshold
zh-cn: 價格/折扣閾值
Type: Number
webhook:
Label:
en: Webhook
zh-cn: 'DingTalk接收資訊的地址'
Description:
en: '(example:https://oapi.dingtalk.com/robot/send?access_token=bac51db2e39418ec6c2dbb27fd111bc7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx).'
zh-cn: '(例:https://oapi.dingtalk.com/robot/send?access_token=bac51db2e39418ec6c2dbb27fd111bc7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)。'
Type: String
rateControl:
Label:
en: RateControl
zh-cn: 任務執行的並發比率
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 100
Concurrency: 10
OOSAssumeRole:
Label:
en: OOSAssumeRole
zh-cn: OOS扮演的RAM角色
Type: String
Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: alarmThresholdInfo
Action: 'ACS::ECS::AlarmSpotPriceByDiscountThresholdWithMultiTypes'
Description:
en: Alarm when monitoring the discount and spot price of multi-instance types under multi-availability zone exceeding the threshold
zh-cn: 監控多可用性區域下的多執行個體類型的折扣與現價超出閾值時警示
Properties:
regionId: '{{ region }}'
zoneId: '{{ ACS::TaskLoopItem }}'
instanceTypes: '{{ instanceType }}'
threshold: '{{ threshold }}'
taskType: '{{ taskType }}'
Outputs:
zoneInstanceTypeThresholdInfo:
Type: Json
ValueSelector: instanceTypeThresholdInfo
Loop:
Items: '{{ zoneId }}'
RateControl: '{{ rateControl }}'
Outputs:
allThresholdInfos:
AggregateField: zoneInstanceTypeThresholdInfo
AggregateType: 'Fn::ListJoin'
- Name: wetherNodifyWebhook
Action: 'ACS::Choice'
Description:
en: Detect if an alarm notification is required
zh-cn: 檢測是否需要發警示通知
Properties:
DefaultTask: alarmNotify
Choices:
- When:
'Fn::Equals':
- []
- 'Fn::MergeList': '{{ alarmThresholdInfo.allThresholdInfos }}'
NextTask: 'ACS::END'
- Name: alarmNotify
Action: 'ACS::Notify'
Description:
en: Instance discount / spot price exceeds threshold alarm notification
zh-cn: 執行個體的折扣/現價超出閾值警示通知
Properties:
NotifyType: WebHook
WebHook:
URI: '{{ webhook }}'
Headers:
Content-Type: application/json
Content:
msgtype: markdown
markdown:
title: 監控結果(MonitoringResult)
text:
'Fn::Join':
- ''
- 'Fn::ListJoin':
- |
##### 警示閾值(alarm threshold):{{ threshold }}
- |
| 機型(instance type) |  可用性區域(zone)|現價(current price)|折扣%(discount%)|
- |
|:----|----:|:----:|:----|
- 'Fn::Jq':
- First
- '.[]|split(", ") | join("") |split("\n,")| join("")| split("\n,|")|join("") |split("||")|join("|")'
- 'Fn::Jq':
- All
- '.[1]=""|join("|")'
- 'Fn::Jq':
- All
- '.[1]=""| .[1]=.[0] | .[0]="" | join("|")'
- 'Fn::Jq':
- All
- map(.) | join("\n|")
- 'Fn::Jq':
- All
- '.[] | map(.[] | tostring)| join(" |")'
- 'Fn::Jq':
- All
- 'map(.| .threshold=.threshold+" |\n," )'
- 'Fn::MergeList': '{{ alarmThresholdInfo.allThresholdInfos }}'
Outputs:
allThresholdInfo:
Type: Json
Value:
'Fn::Join':
- ''
- 'Fn::ListJoin':
- |
##### 警示閾值(alarm threshold):{{ threshold }}
- |
| 機型(instance type) |  可用性區域(zone)|現價(current price)|折扣%(discount%)|
- |
|:----|----:|:----:|:----|
- 'Fn::Jq':
- First
- '.[]|split(", ") | join("") |split("\n,")| join("")| split("\n,|")|join("") |split("||")|join("|")'
- 'Fn::Jq':
- All
- '.[1]=""|join("|")'
- 'Fn::Jq':
- All
- '.[1]=""| .[1]=.[0] | .[0]="" | join("|")'
- 'Fn::Jq':
- All
- map(.) | join("\n|")
- 'Fn::Jq':
- All
- '.[] | map(.[] | tostring)| join(" |")'
- 'Fn::Jq':
- All
- 'map(.| .threshold=.threshold+" |\n," )'
- 'Fn::MergeList': '{{ alarmThresholdInfo.allThresholdInfos }}'
Metadata:
ALIYUN::OOS::Interface:
ParameterGroups:
- Parameters:
- region
- zoneId
- instanceType
- taskType
- threshold
- webhook
Label:
default:
zh-cn: 配置參數
en: Configure Parameters
- Parameters:
- rateControl
- OOSAssumeRole
Label:
default:
zh-cn: 進階選項
en: Control Options