UNPKG

serverless-timeout-alarms

Version:

Serverless plugin to add CloudWatch metric and alarm for Lambda timeouts

88 lines (62 loc) 2.35 kB
### serverless-timeout-alarms Add CloudWatch metric filter and alarm for Lambda timeouts automatically during Serverless packaging. - Creates a CloudWatch Logs metric filter that counts occurrences of timeout logs per function - Adds a CloudWatch Alarm on that metric with configurable threshold/evaluation periods - Supports global defaults and per-function overrides ### Installation ```bash npm install -D serverless-timeout-alarms ``` ### Usage Add the plugin and configure global defaults in your `serverless.yml`: ```yaml plugins: - serverless-timeout-alarms custom: timeoutAlarm: enabled: true namespace: Serverless/LambdaTimeouts filterPattern: timeout threshold: 1 period: 300 evaluationPeriods: 1 statistic: Sum treatMissingData: notBreaching # Optional: SNS topic ARN for alarm actions # alarmActionSnsTopic: arn:aws:sns:us-east-1:123456789012:alerts functions: hello: handler: src/handler.hello # Optional per-function override timeoutAlarm: enabled: true threshold: 2 ``` When you run `serverless package` (or `deploy`), the plugin will add the following resources for each enabled function: - `AWS::Logs::MetricFilter` to count timeout log events - `AWS::CloudWatch::Alarm` on that metric Alarm names use the format: `[<stage>][<service>][<functionName>][TimeoutAlarm]`. ### Configuration Global `custom.timeoutAlarm` and per-function `functions.<name>.timeoutAlarm` support: - `enabled` (boolean, default: true) - `namespace` (string, default: `Serverless/LambdaTimeouts`) - `filterPattern` (string, default: `timeout`) - `threshold` (number, default: 1) - `period` (seconds, default: 300) - `evaluationPeriods` (number, default: 1) - `statistic` (Sum | Average | Maximum | Minimum | SampleCount; default: `Sum`) - `treatMissingData` (notBreaching | breaching | ignore | missing; default: `notBreaching`) - `alarmActionSnsTopic` (optional string: SNS topic ARN) If `alarmActionSnsTopic` is omitted, the alarm is created without actions; you can attach actions later. ### Example metric name For a service `my-api`, function `getItem`, stage `prod`: `/lambda/my-api/getItem/prod/timeoutCount` ### Quick deploy Build and deploy/package as usual with Serverless: ```bash npx serverless deploy # or npx serverless package ``` ### License MIT