in DeliveryApi/cdk/src/main/java/com/ilmlf/delivery/api/FunctionDashboard.java [304:347]
private void createCommonWidgetsAndAlarms(String functionName, String apiMethodName, Topic alarmTopic) {
Metric invocationMetric = new Metric(MetricProps.builder()
.metricName("Invocations")
.namespace(LAMBDA_NAMESPACE)
.dimensionsMap(Map.of("FunctionName", functionName))
.period(Duration.minutes(1))
.statistic("SUM")
.label("Number of Invocations")
.build());
Metric errorsMetric = new Metric(MetricProps.builder()
.metricName("Errors")
.namespace(LAMBDA_NAMESPACE)
.dimensionsMap(Map.of("FunctionName", functionName))
.period(Duration.minutes(5))
.statistic("SUM")
.label("Number of Errors")
.build());
Alarm errorsAlarm = new Alarm(this, apiMethodName + "ErrorsAlarm", AlarmProps.builder()
.alarmName(functionName + "-ErrorsAlarm")
.metric(errorsMetric)
.evaluationPeriods(1)
.threshold(2)
.build());
errorsAlarm.addAlarmAction(new SnsAction(alarmTopic));
GraphWidget invocationWidget = new GraphWidget(GraphWidgetProps.builder()
.height(STANDARD_WIDGET_HEIGHT)
.width(HALF_DASHBOARD_WIDTH)
.left(List.of(invocationMetric))
.title(apiMethodName + "-Invocations")
.build());
AlarmWidget errorsWidget = new AlarmWidget(AlarmWidgetProps.builder()
.height(STANDARD_WIDGET_HEIGHT)
.width(HALF_DASHBOARD_WIDTH)
.alarm(errorsAlarm)
.title(apiMethodName + "-Errors")
.build());
this.addWidgets(invocationWidget, errorsWidget);
}