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.78 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: "10.0.0" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5vbWFseURldGVjdGluZ0FsYXJtRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkFub21hbHlEZXRlY3RpbmdBbGFybUZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrREFHb0M7QUFZcEMsTUFBYSw0QkFBNEI7SUFHdkMsWUFBWSxZQUEwQjtRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQscUJBQXFCLENBQ25CLE1BQThCLEVBQzlCLGVBQXVCLEVBQ3ZCLGFBQXFCLEVBQ3JCLEtBQWdDO1FBRWhDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3hDLEdBQUcsS0FBSztZQUNSLGFBQWE7WUFDYixnQkFBZ0IsRUFDZCxLQUFLLENBQUMsd0JBQXdCLElBQUksaUNBQWdCLENBQUMsT0FBTztZQUM1RCxrREFBa0Q7WUFDbEQsU0FBUyxFQUFFLENBQUM7WUFDWixrQkFBa0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO1lBQ3JELHVCQUF1QixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7WUFDbkQsZUFBZTtZQUNmLGdCQUFnQixFQUNkLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO1NBQ25FLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxLQUFnQztRQUM1RCxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvRCxPQUFPLDJEQUEyRCxDQUFDO1FBQ3JFLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sc0RBQXNELENBQUM7UUFDaEUsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDdkMsT0FBTyxzREFBc0QsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUVBQXVFLENBQ3hFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEtBQWdDO1FBQzVELElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9ELE9BQU8sbUNBQWtCLENBQUMsK0NBQStDLENBQUM7UUFDNUUsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDdkMsT0FBTyxtQ0FBa0IsQ0FBQyw0QkFBNEIsQ0FBQztRQUN6RCxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN2QyxPQUFPLG1DQUFrQixDQUFDLHlCQUF5QixDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FDYix1RUFBdUUsQ0FDeEUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOztBQXRESCxvRUF1REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wYXJpc29uT3BlcmF0b3IsXG4gIFRyZWF0TWlzc2luZ0RhdGEsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuXG5pbXBvcnQgeyBBbGFybUZhY3RvcnksIEN1c3RvbUFsYXJtVGhyZXNob2xkIH0gZnJvbSBcIi4uLy4uL2FsYXJtXCI7XG5pbXBvcnQgeyBNZXRyaWNXaXRoQWxhcm1TdXBwb3J0IH0gZnJvbSBcIi4uLy4uL21ldHJpY1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFub21hbHlEZXRlY3Rpb25UaHJlc2hvbGQgZXh0ZW5kcyBDdXN0b21BbGFybVRocmVzaG9sZCB7XG4gIHJlYWRvbmx5IHN0YW5kYXJkRGV2aWF0aW9uRm9yQWxhcm06IG51bWJlcjtcbiAgcmVhZG9ubHkgYWxhcm1XaGVuQWJvdmVUaGVCYW5kOiBib29sZWFuO1xuICByZWFkb25seSBhbGFybVdoZW5CZWxvd1RoZUJhbmQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxEZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEFub21hbHlEZXRlY3RpbmdBbGFybUZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxhcm1GYWN0b3J5OiBBbGFybUZhY3Rvcnk7XG5cbiAgY29uc3RydWN0b3IoYWxhcm1GYWN0b3J5OiBBbGFybUZhY3RvcnkpIHtcbiAgICB0aGlzLmFsYXJtRmFjdG9yeSA9IGFsYXJtRmFjdG9yeTtcbiAgfVxuXG4gIGFkZEFsYXJtV2hlbk91dE9mQmFuZChcbiAgICBtZXRyaWM6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQsXG4gICAgYWxhcm1OYW1lU3VmZml4OiBzdHJpbmcsXG4gICAgZGlzYW1iaWd1YXRvcjogc3RyaW5nLFxuICAgIHByb3BzOiBBbm9tYWx5RGV0ZWN0aW9uVGhyZXNob2xkLFxuICApIHtcbiAgICByZXR1cm4gdGhpcy5hbGFybUZhY3RvcnkuYWRkQWxhcm0obWV0cmljLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRpc2FtYmlndWF0b3IsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOlxuICAgICAgICBwcm9wcy50cmVhdE1pc3NpbmdEYXRhT3ZlcnJpZGUgPz8gVHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HLFxuICAgICAgLy8gRHVtbXkgdGhyZXNob2xkIHZhbHVlLiBUaGlzIGdldHMgcmVtb3ZlZCBsYXRlci5cbiAgICAgIHRocmVzaG9sZDogMCxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogdGhpcy5nZXRDb21wYXJpc29uT3BlcmF0b3IocHJvcHMpLFxuICAgICAgYWxhcm1EZWR1cGVTdHJpbmdTdWZmaXg6IHByb3BzLmRlZHVwZVN0cmluZ092ZXJyaWRlLFxuICAgICAgYWxhcm1OYW1lU3VmZml4LFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgcHJvcHMuYWRkaXRpb25hbERlc2NyaXB0aW9uID8/IHRoaXMuZ2V0RGVmYXVsdERlc2NyaXB0aW9uKHByb3BzKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdERlc2NyaXB0aW9uKHByb3BzOiBBbm9tYWx5RGV0ZWN0aW9uVGhyZXNob2xkKSB7XG4gICAgaWYgKHByb3BzLmFsYXJtV2hlbkFib3ZlVGhlQmFuZCAmJiBwcm9wcy5hbGFybVdoZW5CZWxvd1RoZUJhbmQpIHtcbiAgICAgIHJldHVybiBcIkFub21hbHkgZGV0ZWN0aW9uOiB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBleHBlY3RlZCBiYW5kLlwiO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYWxhcm1XaGVuQWJvdmVUaGVCYW5kKSB7XG4gICAgICByZXR1cm4gXCJBbm9tYWx5IGRldGVjdGlvbjogdmFsdWUgaXMgYWJvdmUgdGhlIGV4cGVjdGVkIGJhbmQuXCI7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5hbGFybVdoZW5CZWxvd1RoZUJhbmQpIHtcbiAgICAgIHJldHVybiBcIkFub21hbHkgZGV0ZWN0aW9uOiB2YWx1ZSBpcyBiZWxvdyB0aGUgZXhwZWN0ZWQgYmFuZC5cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIllvdSBuZWVkIHRvIGFsYXJtIHdoZW4gdGhlIHZhbHVlIGlzIGFib3ZlIG9yIGJlbG93IHRoZSBiYW5kLCBvciBib3RoLlwiLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENvbXBhcmlzb25PcGVyYXRvcihwcm9wczogQW5vbWFseURldGVjdGlvblRocmVzaG9sZCkge1xuICAgIGlmIChwcm9wcy5hbGFybVdoZW5BYm92ZVRoZUJhbmQgJiYgcHJvcHMuYWxhcm1XaGVuQmVsb3dUaGVCYW5kKSB7XG4gICAgICByZXR1cm4gQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9MT1dFUl9PUl9HUkVBVEVSX1RIQU5fVVBQRVJfVEhSRVNIT0xEO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYWxhcm1XaGVuQWJvdmVUaGVCYW5kKSB7XG4gICAgICByZXR1cm4gQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9VUFBFUl9USFJFU0hPTEQ7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5hbGFybVdoZW5CZWxvd1RoZUJhbmQpIHtcbiAgICAgIHJldHVybiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX0xPV0VSX1RIUkVTSE9MRDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIllvdSBuZWVkIHRvIGFsYXJtIHdoZW4gdGhlIHZhbHVlIGlzIGFib3ZlIG9yIGJlbG93IHRoZSBiYW5kLCBvciBib3RoLlwiLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==