Лучший способ реализовать проверку работоспособности AWS ECS - PullRequest
0 голосов
/ 15 мая 2018

Я внедряю функцию проверки работоспособности ECS и думаю, как лучше всего это сделать.

На данный момент я нашел несколько решений:

  1. Используя метрики и размеры AWS ECS и проверьте, имеет ли некоторая метрика недостаточное значение
  2. Использование CloudWatch Alarm:

ECSHealthAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
  AlarmDescription: Alarm for ECS StatusCheckFailed Metric
  ComparisonOperator: GreaterThanOrEqualToThreshold
  EvaluationPeriods: 2
  Statistic: Maximum
  MetricName: StatusCheckFailed
  Namespace: AWS/ECS
  Period: 30
  Threshold: 1.0
  AlarmActions:
  - !Ref AlarmTopic
  InsufficientDataActions:
  - !Ref AlarmTopic
  Dimensions:
  - Name: ClusterName
    Value: !Ref ClusterName
  - Name: ServiceName
    Value: !GetAtt service.Name
  1. Использование события CloudWatch:

EventRule:
Type: "AWS::Events::Rule"
Properties:
  Name: CloudWatchRMExtensionECSStoppedRule
  Description: "Notify when ECS container stopped"
  EventPattern:
    source: ["aws.ecs"]
    detail-type: ["ECS Task State Change", "ECS Container Instance State Change"]
    detail:
      clusterArn: [ 'clusterArn' ]
      lastStatus: [ "STOPPED" ]
      stoppedReason: [ "Essential container in task exited" ]
      group: [ 'service-group' ]
  State: "ENABLED"
  Targets:
    - Arn: !Ref ECSAlarmSNSTopic
      Id: "PublishAlarmTopic"
      InputTransformer:
        InputPathsMap:
          stopped-reason: "$.detail.stoppedReason"
        InputTemplate: '"This micro-service has been stopped with the following reason: <stopped-reason>"'

Не могли бы вы посоветовать, являются ли эти варианты правильными или есть другой способ сделать это более эффективным? Спасибо за любую помощь!

1 Ответ

0 голосов
/ 06 июля 2018

Я не могу оставить комментарий, поэтому вот некоторые мысли.Мне немного неясно ваше требование, ищите ли вы оповещения от проверки состояния сервера EC2 или каждого уровня задач обслуживания ECS.Здесь я добавляю все возможные варианты.

  1. Я бы запустил экземпляры EC2 кластера ECS в группе автоматического масштабирования и на основе метрик ASG CloudWatch, настроил уведомление SNS при добавлении / удалении экземпляров.

https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html

Мы также можем отправлять в CloudWatch журналы докеров контейнера AWS ecs-agent и получать некоторые уведомления SNS на основании ошибок или отфильтрованных событий.

Мы можем подписаться на CWиз потока событий ECS, а также при запуске / остановке каждой сервисной задачи.Ссылки - https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_event_stream.html https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_cwet.html

Примеры записей о событиях приведены по ссылке ниже - https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_cwe_events.html

Справочник по настройке тревоги на основе событий журнала.

https://medium.com/@martatatiana/insufficient-data-cloudwatch-alarm-based-on-custom-metric-filter-4e41c1f82050

Добавьте проверку работоспособности для каждой службы ECS и перезапустите контейнеры, если они не работают.https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_healthcheck

Пожалуйста, дайте мне знать ваши мысли:).

...