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.
Creating Service Level Objectives
Section titled “Creating Service Level Objectives”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 },});