in src/lambda.ts [123:135]
private createDurationMonitor(timeoutSec: number, durationPercentThreshold: number = DEFAULT_DURATION_THRESHOLD_PERCENT) {
const fn = this.fn;
const durationMetric = this.metrics.metricDuration(fn.functionName).p99;
const durationThresholdSec = Math.floor(durationPercentThreshold / 100 * timeoutSec);
const durationAlarm = durationMetric.createAlarm(this, 'DurationAlarm', {
alarmDescription: `p99 latency >= ${durationThresholdSec}s (${durationPercentThreshold}%)`,
comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
threshold: durationThresholdSec * 1000, // milliseconds
evaluationPeriods: 3,
});
this.watchful.addAlarm(durationAlarm);
return { durationMetric, durationAlarm };
}