in src/constructs/cloudwatch/lambda-alarms.ts [27:48]
constructor(scope: GuStack, id: string, props: GuLambdaAlarmProps) {
const mathExpression = new MathExpression({
expression: "100*m1/m2",
usingMetrics: { m1: props.lambda.metricErrors(), m2: props.lambda.metricInvocations() },
label: `Error % of ${props.lambda.functionName}`,
period: props.lengthOfEvaluationPeriod ?? Duration.minutes(1),
});
const defaultAlarmName = `High error percentage from ${props.lambda.functionName} lambda in ${scope.stage}`;
const defaultDescription = `${props.lambda.functionName} exceeded ${props.toleratedErrorPercentage}% error rate`;
const alarmProps: GuAlarmProps = {
...props,
app: props.lambda.app,
metric: mathExpression,
treatMissingData: TreatMissingData.NOT_BREACHING,
threshold: props.toleratedErrorPercentage,
comparisonOperator: ComparisonOperator.GREATER_THAN_THRESHOLD,
evaluationPeriods: props.numberOfEvaluationPeriodsAboveThresholdBeforeAlarm ?? 1,
alarmName: props.alarmName ?? defaultAlarmName,
alarmDescription: props.alarmDescription ?? defaultDescription,
};
super(scope, id, alarmProps);
}