constructor()

in src/constructs/cloudwatch/ec2-alarms.ts [58:82]


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