in DeliveryApi/cdk/src/main/java/com/ilmlf/delivery/api/FunctionDashboard.java [201:302]
private void createBookDeliveryWidgetsAndAlarms(FunctionDashboardProps props) {
Map<String, String> dimensions = Map.of(
DIMENSION_FUNCTION_NAME, props.bookDeliveryApiMethodName,
DIMENSION_SERVICE_NAME, props.bookDeliveryFunctionName,
DIMENSION_LOG_GROUP, props.bookDeliveryFunctionName,
DIMENSION_SERVICE_TYPE, SERVICE_TYPE_LAMBDA
);
createCommonWidgetsAndAlarms(props.bookDeliveryFunctionName, props.bookDeliveryApiMethodName, props.alarmTopic);
Metric invalidUserIdMetric = new Metric(MetricProps.builder()
.metricName("InvalidUserId")
.namespace(DELIVERY_NAMESPACE)
.dimensionsMap(dimensions)
.period(Duration.minutes(5))
.statistic("SUM")
.label("BookDelivery Received Invalid User Id")
.build());
Metric deliveryBookedMetric = new Metric(MetricProps.builder()
.metricName("DeliveryBooked")
.namespace(DELIVERY_NAMESPACE)
.dimensionsMap(dimensions)
.period(Duration.minutes(5))
.statistic("SUM")
.label("DeliveryBooked")
.build());
Metric farmAndSlotInvalidMetric = new Metric(MetricProps.builder()
.metricName("FarmAndSlotInvalid")
.namespace(DELIVERY_NAMESPACE)
.dimensionsMap(dimensions)
.period(Duration.minutes(5))
.statistic("SUM")
.label("BookDelivery Farm and Slot Invalid")
.build());
Metric sqlExceptionMetric = new Metric(MetricProps.builder()
.metricName("SqlException")
.namespace(DELIVERY_NAMESPACE)
.dimensionsMap(dimensions)
.period(Duration.minutes(5))
.statistic("SUM")
.label("BookDelivery Sql Exception")
.build());
Metric noAvailableDeliveryMetric = new Metric(MetricProps.builder()
.metricName("NoAvailableDelivery")
.namespace(DELIVERY_NAMESPACE)
.dimensionsMap(dimensions)
.period(Duration.minutes(5))
.statistic("SUM")
.label("BookDelivery No Available Delivery")
.build());
Alarm sqlExceptionAlarm = new Alarm(this, props.bookDeliveryApiMethodName + "SqlExceptionAlarm", AlarmProps.builder()
.alarmName(props.bookDeliveryFunctionName + "-SqlExceptionAlarm")
.metric(sqlExceptionMetric)
.evaluationPeriods(1)
.threshold(1)
.build());
sqlExceptionAlarm.addAlarmAction(new SnsAction(props.alarmTopic));
GraphWidget invalidUserIdWidget = new GraphWidget(GraphWidgetProps.builder()
.height(STANDARD_WIDGET_HEIGHT)
.width(QUARTER_DASHBOARD_WIDTH)
.left(List.of(invalidUserIdMetric))
.title(props.bookDeliveryApiMethodName + "-InvalidUserId")
.build());
GraphWidget deliveryBookedWidget = new GraphWidget(GraphWidgetProps.builder()
.height(STANDARD_WIDGET_HEIGHT)
.width(QUARTER_DASHBOARD_WIDTH)
.left(List.of(deliveryBookedMetric))
.title(props.bookDeliveryApiMethodName + "-DeliveryBooked")
.build());
GraphWidget farmAndSlotInvalidWidget = new GraphWidget(GraphWidgetProps.builder()
.height(STANDARD_WIDGET_HEIGHT)
.width(QUARTER_DASHBOARD_WIDTH)
.left(List.of(farmAndSlotInvalidMetric))
.title(props.bookDeliveryApiMethodName + "-FarmAndSlotInvalid")
.build());
AlarmWidget sqlExceptionWidget = new AlarmWidget(AlarmWidgetProps.builder()
.height(STANDARD_WIDGET_HEIGHT)
.width(FULL_DASHBOARD_WIDTH)
.alarm(sqlExceptionAlarm)
.title(props.bookDeliveryApiMethodName + "-SqlExceptions")
.build());
GraphWidget noAvailableDeliveryWidget = new GraphWidget(GraphWidgetProps.builder()
.height(STANDARD_WIDGET_HEIGHT)
.width(QUARTER_DASHBOARD_WIDTH)
.left(List.of(noAvailableDeliveryMetric))
.title(props.bookDeliveryApiMethodName + "-NoAvailableDelivery")
.build());
this.addWidgets(invalidUserIdWidget, deliveryBookedWidget, farmAndSlotInvalidWidget, noAvailableDeliveryWidget,
sqlExceptionWidget);
}