diff --git a/serverless-plugin/alarms-api-gateway.js b/serverless-plugin/alarms-api-gateway.js index 18ac1502..69b29ecc 100644 --- a/serverless-plugin/alarms-api-gateway.js +++ b/serverless-plugin/alarms-api-gateway.js @@ -1,6 +1,6 @@ 'use strict' -const { makeResourceName } = require('./util') +const { makeResourceName, getStatisticName } = require('./util') /** * @param {object} apiGwAlarmConfig The fully resolved alarm configuration @@ -99,7 +99,7 @@ module.exports = function ApiGatewayAlarms (apiGwAlarmConfig, context) { resourceName: makeResourceName('Api', apiName, 'Availability'), resource: createApiAlarm( `ApiAvailability_${apiName}`, - `API 5XXError ${config.Statistic} for ${apiName} breaches ${threshold}`, + `API 5XXError ${getStatisticName(config)} for ${apiName} breaches ${threshold}`, apiName, config.ComparisonOperator, threshold, @@ -120,7 +120,7 @@ module.exports = function ApiGatewayAlarms (apiGwAlarmConfig, context) { resourceName: makeResourceName('Api', apiName, '4XXError'), resource: createApiAlarm( `Api4XXError_${apiName}`, - `API 4XXError ${config.Statistic} for ${apiName} breaches ${threshold}`, + `API 4XXError ${getStatisticName(config)} for ${apiName} breaches ${threshold}`, apiName, config.ComparisonOperator, threshold, @@ -141,7 +141,7 @@ module.exports = function ApiGatewayAlarms (apiGwAlarmConfig, context) { resourceName: makeResourceName('Api', apiName, 'Latency'), resource: createApiAlarm( `ApiLatency_${apiName}`, - `API Latency ${config.Statistic} for ${apiName} breaches ${threshold}`, + `API Latency ${getStatisticName(config)} for ${apiName} breaches ${threshold}`, apiName, config.ComparisonOperator, threshold, diff --git a/serverless-plugin/alarms-kinesis.js b/serverless-plugin/alarms-kinesis.js index e41eedfd..ad4f39a7 100644 --- a/serverless-plugin/alarms-kinesis.js +++ b/serverless-plugin/alarms-kinesis.js @@ -1,6 +1,6 @@ 'use strict' -const { makeResourceName } = require('./util') +const { makeResourceName, getStatisticName } = require('./util') const kinesisAlarmTypes = { StreamIteratorAge: 'GetRecords.IteratorAgeMilliseconds', @@ -64,7 +64,7 @@ module.exports = function KinesisAlarms (kinesisAlarmConfig, context) { ActionsEnabled: true, AlarmActions: context.alarmActions, AlarmName: `${type}_${streamName}`, - AlarmDescription: `Kinesis ${config.Statistic} ${metric} for ${streamName} breaches ${threshold} milliseconds`, + AlarmDescription: `Kinesis ${getStatisticName(config)} ${metric} for ${streamName} breaches ${threshold} milliseconds`, EvaluationPeriods: config.EvaluationPeriods, ComparisonOperator: config.ComparisonOperator, Threshold: config.Threshold, diff --git a/serverless-plugin/tests/util.test.js b/serverless-plugin/tests/util.test.js index e5b4e2c2..aa20e62a 100644 --- a/serverless-plugin/tests/util.test.js +++ b/serverless-plugin/tests/util.test.js @@ -5,7 +5,8 @@ const { test } = require('tap') const { filterObject, resolveEcsClusterNameAsCfn, - resolveEcsClusterNameForSub + resolveEcsClusterNameForSub, + getStatisticName } = require('../util') test('filterObject filters out', (t) => { @@ -76,3 +77,10 @@ test('resolveEcsClusterNameForSub', (t) => { t.same(fromUnexpected, unexpected) t.end() }) + +test('getStatisticName chooses Statistic then ExtendedStatistic property', (t) => { + t.equal(getStatisticName({ Statistic: 'Sum' }), 'Sum') + t.equal(getStatisticName({ ExtendedStatistic: 'p99' }), 'p99') + t.equal(getStatisticName({ Statistic: 'Average', ExtendedStatistic: 'p99' }), 'Average') + t.end() +}) diff --git a/serverless-plugin/util.js b/serverless-plugin/util.js index 7d35b63c..cb25d076 100644 --- a/serverless-plugin/util.js +++ b/serverless-plugin/util.js @@ -66,9 +66,19 @@ function resolveEcsClusterNameForSub (cluster) { return cluster } +/* + * Determine the presentation name for an alarm statistic + * + * @param {*} alarmConfig Alarm configuration + */ +function getStatisticName (alarmConfig) { + return alarmConfig.Statistic || alarmConfig.ExtendedStatistic +} + module.exports = { filterObject, makeResourceName, resolveEcsClusterNameAsCfn, - resolveEcsClusterNameForSub + resolveEcsClusterNameForSub, + getStatisticName }