Skip to content

ServiceLevelObjective

Source: src/AWS/ApplicationSignals/ServiceLevelObjective.ts

A CloudWatch Application Signals service level objective (SLO) that tracks an attainment goal against a service level indicator — any CloudWatch metric or metric-math expression, or a service operation discovered by Application Signals.

Period-based SLO on a CloudWatch metric

import * as ApplicationSignals from "alchemy/AWS/ApplicationSignals";
const slo = yield* ApplicationSignals.ServiceLevelObjective("ApiLatency", {
description: "p99 latency under 2 seconds",
sliConfig: {
SliMetricConfig: {
MetricDataQueries: [
{
Id: "m1",
MetricStat: {
Metric: {
Namespace: "AWS/Lambda",
MetricName: "Duration",
Dimensions: [{ Name: "FunctionName", Value: "my-api" }],
},
Period: 60,
Stat: "p99",
},
ReturnData: true,
},
],
},
MetricThreshold: 2000,
ComparisonOperator: "LessThanOrEqualTo",
},
goal: {
Interval: { RollingInterval: { DurationUnit: "DAY", Duration: 7 } },
AttainmentGoal: 99,
WarningThreshold: 50,
},
});

Request-based SLO

const slo = yield* ApplicationSignals.ServiceLevelObjective("Availability", {
requestBasedSliConfig: {
RequestBasedSliMetricConfig: {
TotalRequestCountMetric: [
{
Id: "total",
MetricStat: {
Metric: { Namespace: "AWS/ApplicationELB", MetricName: "RequestCount" },
Period: 60,
Stat: "Sum",
},
ReturnData: true,
},
],
MonitoredRequestCountMetric: {
BadCountMetric: [
{
Id: "bad",
MetricStat: {
Metric: { Namespace: "AWS/ApplicationELB", MetricName: "HTTPCode_Target_5XX_Count" },
Period: 60,
Stat: "Sum",
},
ReturnData: true,
},
],
},
},
},
goal: { AttainmentGoal: 99.9 },
});