Недавно AWS объявил, что сигналы тревоги Cloudwatch могут использовать математические выражения для метрик.Я решил создать сигнализацию, которая сравнивает сумму 2 отдельных показателей с заданным порогом.Это означает, что согласно документации AWS мое выражение должно быть SUM ([m1, m2]), где m1 и m2 - две отдельные метрики.Я также решил реализовать эту идею, используя шаблон облачной информации (в yaml).Вот определение тревоги Cloudwatch:
BillingAlarmExpression:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmActions:
- !Ref BillingAlertTopic
AlarmDescription: String
ComparisonOperator: GreaterThanOrEqualToThreshold
EvaluationPeriods: 1
Metrics:
- Id: m1
MetricStat:
Metric:
Dimensions:
- Name: ServiceName
Value: AmazonEC2
- Name: Currency
Value: USD
MetricName: EstimatedCharges
Namespace: AWS/Billing
Period: 86400
Stat: Maximum
ReturnData: False
- Id: m2
MetricStat:
Metric:
Dimensions:
- Name: ServiceName
Value: AmazonCloudwatch
- Name: Currency
Value: USD
MetricName: EstimatedCharges
Namespace: AWS/Billing
Period: 86400
Stat: Maximum
ReturnData: False
- Id: Expr1
Expression: SUM([m1,m2])
Label: Yeap
Threshold: 100
TreatMissingData: ignore
Одиночные метрики, m1 и m2, имеют отношение к счетам EC2 и службы Cloudwatch.Я хочу проверить, превысила ли плата за эти 2 услуги порог в 100 $.(Обратите внимание, что поскольку расходы на выставление счетов хранятся исключительно в регионе N.Virginia, я попытался развернуть вышеупомянутый шаблон в N.Virginia).Во время развертывания этого шаблона Cloudformation отвечает следующей ошибкой:
"Invalid metrics list (Service: AmazonCloudWatch; Status Code: 400; Error Code: ValidationError; Request ID: c0748047-0378-11e9-ac36-5b1829988d18)"
Когда Cloudformation сообщает «список метрик», это относится к определению m1, m2, Expr1.Что еще более странно, так это то, что когда я использую приведенное выше определение списка метрик из aws cli, данные начисления возвращаются успешно:
aws cloudwatch get-metric-data --metric-data-queries file://./metric-data.json --start-time 2018-12-03T03:00:00Z --end-time 2018-12-10T04:30:00Z
, где metric-data.json - вышеуказанный список метрик.
Для создания моего шаблона я использовал следующие руководства: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html и https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html
У вас есть идеи, почему Cloudformation возвращает эту ошибку?Спасибо!