Я установил для своей службы несколько тревожных сигналов Cloudwatch с использованием облачной информации. Все мои будильники работают, кроме будильников ELB. Они всегда просто показывают недостаточные данные. Я могу войти в консоль и настроить будильники вручную, но я хочу иметь возможность использовать шаблоны облачной информации для создания всего. У меня должна быть ошибка где-то в моем json для будильника. Вот один из них:
"ELBHighLatencyAlarm": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"Namespace": "AWS/ELB",
"AlarmName": { "Fn::Join" : ["", [ { "Ref" : "AWS::StackName"}, "-ELB-ELBHighLatencyAlarm"]]},
"AlarmDescription": { "Fn::Join" : ["", [ { "Ref" : "AWS::StackName"}, "-ELB-ELBHighLatencyAlarm"]]},
"ComparisonOperator": "GreaterThanThreshold",
"Threshold": "0.5",
"EvaluationPeriods": "1",
"Period": "300",
"MetricName": "Latency",
"Statistic": "Average",
"OKActions": [],
"AlarmActions": [ { "Ref": "PagerDutySNSTopicArn" } ],
"InsufficientDataActions": [ { "Ref": "PagerDutySNSTopicArn" } ],
"Dimensions": [ {
"Name": "ElasticLoadBalancer",
"Value": { "Ref": "WebServerLoadBalancer" }
}]
}
}
Вы не видите в этом ничего плохого?
Я могу подтвердить то, что сказал Додзё выше. Хотя формулировка в описании блока измерений создает впечатление, будто это не требуется, а строки / значения произвольны, существует определенный список имен, которые можно использовать для каждого типа службы, для которой вы хотите создать сигнал тревоги. В этом списке тип службы сопоставляется с допустимыми значениями в блоке измерений, что обеспечивает правильную работу ваших сигналов тревоги.
Мне кажется, что блок измерений - это способ фильтрации событий. Поэтому, если вы хотите увидеть CPUUtilization для кластера, вы должны указать ClusterName. Если вам нужна конкретная служба кластера, вы должны предоставить 2 записи в блок измерений. ClusterName и ServiceName.
http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ecs-metricscollected.html
Единственное различие между двумя приведенными ниже примерами - это поле Dimensions.Name.
Пример, который будет НЕ работай
"CPUUtilizationScaleInAlarm": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"ActionsEnabled": true,
"AlarmActions": [
{
"Ref": "ESCServiceScaleInPolicy"
}
],
"AlarmDescription": "Scale in in response to CPUUtilization being low",
"AlarmName": "CPUUtilizationScaleIn",
"ComparisonOperator": "LessThanOrEqualToThreshold",
"Dimensions": [
{
"Name": "ECService",
"Value": "MyAwesomeService"
],
"EvaluationPeriods": 1,
"MetricName": "CPUUtilization",
"Namespace": "AWS/ECS",
"Period": 60,
"Statistic": "Average",
"Threshold": 25,
"Unit": "Percent"
}
}
Пример, который ВОЛЯ работай
"CPUUtilizationScaleInAlarm": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"ActionsEnabled": true,
"AlarmActions": [
{
"Ref": "ESCServiceScaleInPolicy"
}
],
"AlarmDescription": "Scale in in response to CPUUtilization being low",
"AlarmName": "CPUUtilizationScaleIn",
"ComparisonOperator": "LessThanOrEqualToThreshold",
"Dimensions": [
{
"Name": "ServiceName",
"Value": "MyAwesomeService"
],
"EvaluationPeriods": 1,
"MetricName": "CPUUtilization",
"Namespace": "AWS/ECS",
"Period": 60,
"Statistic": "Average",
"Threshold": 25,
"Unit": "Percent"
}
}
Ваш "Dimensions"
раздел не использует правильный "Name"
стоимость. Если вы замените:
"Dimensions": [ {
"Name": "ElasticLoadBalancer",
"Value": { "Ref": "WebServerLoadBalancer" }
}]
с участием
"Dimensions": [ {
"Name": "LoadBalancerName",
"Value": { "Ref": "WebServerLoadBalancer" }
}]
вы должны обнаружить, что ваш будильник сработает.