constructor()

in src/constructs/cloudwatch/ec2-alarms.ts [26:50]


  constructor(scope: GuStack, props: GuAlb5xxPercentageAlarmProps) {
    const mathExpression = new MathExpression({
      expression: "100*(m1+m2)/m3",
      usingMetrics: {
        m1: props.loadBalancer.metrics.httpCodeElb(HttpCodeElb.ELB_5XX_COUNT),
        m2: props.loadBalancer.metrics.httpCodeTarget(HttpCodeTarget.TARGET_5XX_COUNT),
        m3: props.loadBalancer.metrics.requestCount(),
      },
      label: `% of 5XX responses served for ${props.app} (load balancer and instances combined)`,
      period: Duration.minutes(1),
    });
    const defaultAlarmName = `High 5XX error percentage from ${props.app} in ${scope.stage}`;
    const defaultDescription = `${props.app} exceeded ${props.tolerated5xxPercentage}% error rate`;
    const alarmProps = {
      ...props,
      metric: mathExpression,
      treatMissingData: TreatMissingData.NOT_BREACHING,
      threshold: props.tolerated5xxPercentage,
      comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
      alarmName: props.alarmName ?? defaultAlarmName,
      alarmDescription: props.alarmDescription ?? defaultDescription,
      evaluationPeriods: props.numberOfMinutesAboveThresholdBeforeAlarm ?? 1,
    };
    super(scope, AppIdentity.suffixText(props, "High5xxPercentageAlarm"), alarmProps);
  }