private void createBookDeliveryWidgetsAndAlarms()

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);
  }