cdk-monitoring-constructs
Version:
[](https://badge.fury.io/js/cdk-monitoring-constructs) [](https://m
56 lines • 7.78 kB
JavaScript
;
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==