Назад | Перейти на главную страницу

Cloudformation ELB Cloudwatch Сигналы тревоги Недостаточно данных

Я установил для своей службы несколько тревожных сигналов 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" }
        }]

вы должны обнаружить, что ваш будильник сработает.