UNPKG

cdk-monitoring-constructs

Version:

[![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge.fury.io/js/cdk-monitoring-constructs) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdkmonitoringconstructs/badge.svg)](https://m

56 lines 7.67 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.AnomalyDetectingAlarmFactory = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch"); class AnomalyDetectingAlarmFactory { constructor(alarmFactory) { this.alarmFactory = alarmFactory; } addAlarmWhenOutOfBand(metric, alarmNameSuffix, disambiguator, props) { return this.alarmFactory.addAlarm(metric, { ...props, disambiguator, treatMissingData: props.treatMissingDataOverride ?? aws_cloudwatch_1.TreatMissingData.MISSING, // Dummy threshold value. This gets removed later. threshold: 0, comparisonOperator: this.getComparisonOperator(props), alarmDedupeStringSuffix: props.dedupeStringOverride, alarmNameSuffix, alarmDescription: props.additionalDescription ?? this.getDefaultDescription(props), }); } getDefaultDescription(props) { if (props.alarmWhenAboveTheBand && props.alarmWhenBelowTheBand) { return "Anomaly detection: value is outside of the expected band."; } else if (props.alarmWhenAboveTheBand) { return "Anomaly detection: value is above the expected band."; } else if (props.alarmWhenBelowTheBand) { return "Anomaly detection: value is below the expected band."; } else { throw new Error("You need to alarm when the value is above or below the band, or both."); } } getComparisonOperator(props) { if (props.alarmWhenAboveTheBand && props.alarmWhenBelowTheBand) { return aws_cloudwatch_1.ComparisonOperator.LESS_THAN_LOWER_OR_GREATER_THAN_UPPER_THRESHOLD; } else if (props.alarmWhenAboveTheBand) { return aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_UPPER_THRESHOLD; } else if (props.alarmWhenBelowTheBand) { return aws_cloudwatch_1.ComparisonOperator.LESS_THAN_LOWER_THRESHOLD; } else { throw new Error("You need to alarm when the value is above or below the band, or both."); } } } exports.AnomalyDetectingAlarmFactory = AnomalyDetectingAlarmFactory; _a = JSII_RTTI_SYMBOL_1; AnomalyDetectingAlarmFactory[_a] = { fqn: "cdk-monitoring-constructs.AnomalyDetectingAlarmFactory", version: "9.15.2" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5vbWFseURldGVjdGluZ0FsYXJtRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkFub21hbHlEZXRlY3RpbmdBbGFybUZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrREFHb0M7QUFZcEMsTUFBYSw0QkFBNEI7SUFHdkMsWUFBWSxZQUEwQjtRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQscUJBQXFCLENBQ25CLE1BQThCLEVBQzlCLGVBQXVCLEVBQ3ZCLGFBQXFCLEVBQ3JCLEtBQWdDO1FBRWhDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3hDLEdBQUcsS0FBSztZQUNSLGFBQWE7WUFDYixnQkFBZ0IsRUFDZCxLQUFLLENBQUMsd0JBQXdCLElBQUksaUNBQWdCLENBQUMsT0FBTztZQUM1RCxrREFBa0Q7WUFDbEQsU0FBUyxFQUFFLENBQUM7WUFDWixrQkFBa0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO1lBQ3JELHVCQUF1QixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7WUFDbkQsZUFBZTtZQUNmLGdCQUFnQixFQUNkLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO1NBQ25FLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxLQUFnQztRQUM1RCxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxLQUFLLENBQUMscUJBQXFCLEVBQUU7WUFDOUQsT0FBTywyREFBMkQsQ0FBQztTQUNwRTthQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFO1lBQ3RDLE9BQU8sc0RBQXNELENBQUM7U0FDL0Q7YUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsRUFBRTtZQUN0QyxPQUFPLHNEQUFzRCxDQUFDO1NBQy9EO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUNiLHVFQUF1RSxDQUN4RSxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsS0FBZ0M7UUFDNUQsSUFBSSxLQUFLLENBQUMscUJBQXFCLElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFO1lBQzlELE9BQU8sbUNBQWtCLENBQUMsK0NBQStDLENBQUM7U0FDM0U7YUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsRUFBRTtZQUN0QyxPQUFPLG1DQUFrQixDQUFDLDRCQUE0QixDQUFDO1NBQ3hEO2FBQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLEVBQUU7WUFDdEMsT0FBTyxtQ0FBa0IsQ0FBQyx5QkFBeUIsQ0FBQztTQUNyRDthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FDYix1RUFBdUUsQ0FDeEUsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7QUF0REgsb0VBdURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBUcmVhdE1pc3NpbmdEYXRhLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcblxuaW1wb3J0IHsgQWxhcm1GYWN0b3J5LCBDdXN0b21BbGFybVRocmVzaG9sZCB9IGZyb20gXCIuLi8uLi9hbGFybVwiO1xuaW1wb3J0IHsgTWV0cmljV2l0aEFsYXJtU3VwcG9ydCB9IGZyb20gXCIuLi8uLi9tZXRyaWNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBbm9tYWx5RGV0ZWN0aW9uVGhyZXNob2xkIGV4dGVuZHMgQ3VzdG9tQWxhcm1UaHJlc2hvbGQge1xuICByZWFkb25seSBzdGFuZGFyZERldmlhdGlvbkZvckFsYXJtOiBudW1iZXI7XG4gIHJlYWRvbmx5IGFsYXJtV2hlbkFib3ZlVGhlQmFuZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYWxhcm1XaGVuQmVsb3dUaGVCYW5kOiBib29sZWFuO1xuICByZWFkb25seSBhZGRpdGlvbmFsRGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBbm9tYWx5RGV0ZWN0aW5nQWxhcm1GYWN0b3J5IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsYXJtRmFjdG9yeTogQWxhcm1GYWN0b3J5O1xuXG4gIGNvbnN0cnVjdG9yKGFsYXJtRmFjdG9yeTogQWxhcm1GYWN0b3J5KSB7XG4gICAgdGhpcy5hbGFybUZhY3RvcnkgPSBhbGFybUZhY3Rvcnk7XG4gIH1cblxuICBhZGRBbGFybVdoZW5PdXRPZkJhbmQoXG4gICAgbWV0cmljOiBNZXRyaWNXaXRoQWxhcm1TdXBwb3J0LFxuICAgIGFsYXJtTmFtZVN1ZmZpeDogc3RyaW5nLFxuICAgIGRpc2FtYmlndWF0b3I6IHN0cmluZyxcbiAgICBwcm9wczogQW5vbWFseURldGVjdGlvblRocmVzaG9sZCxcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1GYWN0b3J5LmFkZEFsYXJtKG1ldHJpYywge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBkaXNhbWJpZ3VhdG9yLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTpcbiAgICAgICAgcHJvcHMudHJlYXRNaXNzaW5nRGF0YU92ZXJyaWRlID8/IFRyZWF0TWlzc2luZ0RhdGEuTUlTU0lORyxcbiAgICAgIC8vIER1bW15IHRocmVzaG9sZCB2YWx1ZS4gVGhpcyBnZXRzIHJlbW92ZWQgbGF0ZXIuXG4gICAgICB0aHJlc2hvbGQ6IDAsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IHRoaXMuZ2V0Q29tcGFyaXNvbk9wZXJhdG9yKHByb3BzKSxcbiAgICAgIGFsYXJtRGVkdXBlU3RyaW5nU3VmZml4OiBwcm9wcy5kZWR1cGVTdHJpbmdPdmVycmlkZSxcbiAgICAgIGFsYXJtTmFtZVN1ZmZpeCxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgIHByb3BzLmFkZGl0aW9uYWxEZXNjcmlwdGlvbiA/PyB0aGlzLmdldERlZmF1bHREZXNjcmlwdGlvbihwcm9wcyksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHREZXNjcmlwdGlvbihwcm9wczogQW5vbWFseURldGVjdGlvblRocmVzaG9sZCkge1xuICAgIGlmIChwcm9wcy5hbGFybVdoZW5BYm92ZVRoZUJhbmQgJiYgcHJvcHMuYWxhcm1XaGVuQmVsb3dUaGVCYW5kKSB7XG4gICAgICByZXR1cm4gXCJBbm9tYWx5IGRldGVjdGlvbjogdmFsdWUgaXMgb3V0c2lkZSBvZiB0aGUgZXhwZWN0ZWQgYmFuZC5cIjtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmFsYXJtV2hlbkFib3ZlVGhlQmFuZCkge1xuICAgICAgcmV0dXJuIFwiQW5vbWFseSBkZXRlY3Rpb246IHZhbHVlIGlzIGFib3ZlIHRoZSBleHBlY3RlZCBiYW5kLlwiO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYWxhcm1XaGVuQmVsb3dUaGVCYW5kKSB7XG4gICAgICByZXR1cm4gXCJBbm9tYWx5IGRldGVjdGlvbjogdmFsdWUgaXMgYmVsb3cgdGhlIGV4cGVjdGVkIGJhbmQuXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJZb3UgbmVlZCB0byBhbGFybSB3aGVuIHRoZSB2YWx1ZSBpcyBhYm92ZSBvciBiZWxvdyB0aGUgYmFuZCwgb3IgYm90aC5cIixcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21wYXJpc29uT3BlcmF0b3IocHJvcHM6IEFub21hbHlEZXRlY3Rpb25UaHJlc2hvbGQpIHtcbiAgICBpZiAocHJvcHMuYWxhcm1XaGVuQWJvdmVUaGVCYW5kICYmIHByb3BzLmFsYXJtV2hlbkJlbG93VGhlQmFuZCkge1xuICAgICAgcmV0dXJuIENvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fTE9XRVJfT1JfR1JFQVRFUl9USEFOX1VQUEVSX1RIUkVTSE9MRDtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmFsYXJtV2hlbkFib3ZlVGhlQmFuZCkge1xuICAgICAgcmV0dXJuIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVVBQRVJfVEhSRVNIT0xEO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYWxhcm1XaGVuQmVsb3dUaGVCYW5kKSB7XG4gICAgICByZXR1cm4gQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9MT1dFUl9USFJFU0hPTEQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJZb3UgbmVlZCB0byBhbGFybSB3aGVuIHRoZSB2YWx1ZSBpcyBhYm92ZSBvciBiZWxvdyB0aGUgYmFuZCwgb3IgYm90aC5cIixcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=