cdk-monitoring-constructs
Version:
[](https://gitpod.io/#https://github.com/cdklabs/cdk-monitoring-constructs) [](https://badge
58 lines • 7.39 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LogMonitoring = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
const common_1 = require("../../common");
const dashboard_1 = require("../../dashboard");
const DefaultLimit = 10;
/**
* Monitors a CloudWatch log group for various patterns.
*/
class LogMonitoring extends common_1.Monitoring {
constructor(scope, props) {
super(scope);
this.pattern = props.pattern;
this.title = props.title;
this.limit = props.limit ?? DefaultLimit;
this.logGroupName = props.logGroupName;
this.logGroupUrl = scope
.createAwsConsoleUrlFactory()
.getCloudWatchLogGroupUrl(props.logGroupName);
}
widgets() {
return [
new dashboard_1.MonitoringHeaderWidget({
family: "Log Group",
title: this.logGroupName,
goToLinkUrl: this.logGroupUrl,
}),
// Log Query Results
new aws_cloudwatch_1.LogQueryWidget({
logGroupNames: [this.logGroupName],
height: this.resolveRecommendedHeight(this.limit),
width: common_1.FullWidth,
title: this.title ?? `Find ${this.pattern} (limit = ${this.limit})`,
/**
* https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html
*/
queryLines: [
"fields @timestamp, @logStream, @message",
`filter @message like /${this.pattern}/`,
"sort @timestamp desc",
`limit ${this.limit}`,
],
}),
];
}
resolveRecommendedHeight(numRows) {
const heightPerLine = 1;
const recommendedHeight = heightPerLine * numRows;
return Math.max(recommendedHeight, common_1.DefaultLogWidgetHeight);
}
}
exports.LogMonitoring = LogMonitoring;
_a = JSII_RTTI_SYMBOL_1;
LogMonitoring[_a] = { fqn: "cdk-monitoring-constructs.LogMonitoring", version: "1.21.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nTW9uaXRvcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkxvZ01vbml0b3JpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrREFBcUU7QUFFckUseUNBTXNCO0FBQ3RCLCtDQUF5RDtBQUV6RCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUE0QnhCOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsbUJBQVU7SUFPM0MsWUFBWSxLQUFzQixFQUFFLEtBQXlCO1FBQzNELEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLO2FBQ3JCLDBCQUEwQixFQUFFO2FBQzVCLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU87WUFDTCxJQUFJLGtDQUFzQixDQUFDO2dCQUN6QixNQUFNLEVBQUUsV0FBVztnQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDOUIsQ0FBQztZQUNGLG9CQUFvQjtZQUNwQixJQUFJLCtCQUFjLENBQUM7Z0JBQ2pCLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDakQsS0FBSyxFQUFFLGtCQUFTO2dCQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLElBQUksQ0FBQyxPQUFPLGFBQWEsSUFBSSxDQUFDLEtBQUssR0FBRztnQkFDbkU7O21CQUVHO2dCQUNILFVBQVUsRUFBRTtvQkFDVix5Q0FBeUM7b0JBQ3pDLHlCQUF5QixJQUFJLENBQUMsT0FBTyxHQUFHO29CQUN4QyxzQkFBc0I7b0JBQ3RCLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRTtpQkFDdEI7YUFDRixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxPQUFlO1FBQ2hELE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN4QixNQUFNLGlCQUFpQixHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLCtCQUFzQixDQUFDLENBQUM7SUFDN0QsQ0FBQzs7QUFqREgsc0NBa0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVdpZGdldCwgTG9nUXVlcnlXaWRnZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcblxuaW1wb3J0IHtcbiAgQmFzZU1vbml0b3JpbmdQcm9wcyxcbiAgRGVmYXVsdExvZ1dpZGdldEhlaWdodCxcbiAgRnVsbFdpZHRoLFxuICBNb25pdG9yaW5nLFxuICBNb25pdG9yaW5nU2NvcGUsXG59IGZyb20gXCIuLi8uLi9jb21tb25cIjtcbmltcG9ydCB7IE1vbml0b3JpbmdIZWFkZXJXaWRnZXQgfSBmcm9tIFwiLi4vLi4vZGFzaGJvYXJkXCI7XG5cbmNvbnN0IERlZmF1bHRMaW1pdCA9IDEwO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ01vbml0b3JpbmdQcm9wcyBleHRlbmRzIEJhc2VNb25pdG9yaW5nUHJvcHMge1xuICAvKipcbiAgICogbmFtZSBvZiB0aGUgbG9nIGdyb3VwIHRvIGFuYWx5emUgZm9yIHRoZSBnaXZlbiBwYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogcGF0dGVybiB0byBzaG93LCBlLmcuIFwiRVJST1JcIlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0dGVybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiB3aWRnZXQgdGl0bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhdXRvLWdlbmVyYXRlZCB0aXRsZSBiYXNlZCBvbiB0aGUgcGF0dGVybiBhbmQgbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBudW1iZXIgb2YgbG9nIG1lc3NhZ2VzIHRvIHNlYXJjaCBmb3JcbiAgICpcbiAgICogQGRlZmF1bHQgLSAxMFxuICAgKi9cbiAgcmVhZG9ubHkgbGltaXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTW9uaXRvcnMgYSBDbG91ZFdhdGNoIGxvZyBncm91cCBmb3IgdmFyaW91cyBwYXR0ZXJucy5cbiAqL1xuZXhwb3J0IGNsYXNzIExvZ01vbml0b3JpbmcgZXh0ZW5kcyBNb25pdG9yaW5nIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhdHRlcm46IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ0dyb3VwTmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9nR3JvdXBVcmw/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSB0aXRsZT86IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxpbWl0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IE1vbml0b3JpbmdTY29wZSwgcHJvcHM6IExvZ01vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlKTtcblxuICAgIHRoaXMucGF0dGVybiA9IHByb3BzLnBhdHRlcm47XG4gICAgdGhpcy50aXRsZSA9IHByb3BzLnRpdGxlO1xuICAgIHRoaXMubGltaXQgPSBwcm9wcy5saW1pdCA/PyBEZWZhdWx0TGltaXQ7XG4gICAgdGhpcy5sb2dHcm91cE5hbWUgPSBwcm9wcy5sb2dHcm91cE5hbWU7XG4gICAgdGhpcy5sb2dHcm91cFVybCA9IHNjb3BlXG4gICAgICAuY3JlYXRlQXdzQ29uc29sZVVybEZhY3RvcnkoKVxuICAgICAgLmdldENsb3VkV2F0Y2hMb2dHcm91cFVybChwcm9wcy5sb2dHcm91cE5hbWUpO1xuICB9XG5cbiAgd2lkZ2V0cygpOiBJV2lkZ2V0W10ge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgTW9uaXRvcmluZ0hlYWRlcldpZGdldCh7XG4gICAgICAgIGZhbWlseTogXCJMb2cgR3JvdXBcIixcbiAgICAgICAgdGl0bGU6IHRoaXMubG9nR3JvdXBOYW1lLFxuICAgICAgICBnb1RvTGlua1VybDogdGhpcy5sb2dHcm91cFVybCxcbiAgICAgIH0pLFxuICAgICAgLy8gTG9nIFF1ZXJ5IFJlc3VsdHNcbiAgICAgIG5ldyBMb2dRdWVyeVdpZGdldCh7XG4gICAgICAgIGxvZ0dyb3VwTmFtZXM6IFt0aGlzLmxvZ0dyb3VwTmFtZV0sXG4gICAgICAgIGhlaWdodDogdGhpcy5yZXNvbHZlUmVjb21tZW5kZWRIZWlnaHQodGhpcy5saW1pdCksXG4gICAgICAgIHdpZHRoOiBGdWxsV2lkdGgsXG4gICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlID8/IGBGaW5kICR7dGhpcy5wYXR0ZXJufSAobGltaXQgPSAke3RoaXMubGltaXR9KWAsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbG9ncy9DV0xfUXVlcnlTeW50YXguaHRtbFxuICAgICAgICAgKi9cbiAgICAgICAgcXVlcnlMaW5lczogW1xuICAgICAgICAgIFwiZmllbGRzIEB0aW1lc3RhbXAsIEBsb2dTdHJlYW0sIEBtZXNzYWdlXCIsXG4gICAgICAgICAgYGZpbHRlciBAbWVzc2FnZSBsaWtlIC8ke3RoaXMucGF0dGVybn0vYCxcbiAgICAgICAgICBcInNvcnQgQHRpbWVzdGFtcCBkZXNjXCIsXG4gICAgICAgICAgYGxpbWl0ICR7dGhpcy5saW1pdH1gLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgXTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlUmVjb21tZW5kZWRIZWlnaHQobnVtUm93czogbnVtYmVyKSB7XG4gICAgY29uc3QgaGVpZ2h0UGVyTGluZSA9IDE7XG4gICAgY29uc3QgcmVjb21tZW5kZWRIZWlnaHQgPSBoZWlnaHRQZXJMaW5lICogbnVtUm93cztcbiAgICByZXR1cm4gTWF0aC5tYXgocmVjb21tZW5kZWRIZWlnaHQsIERlZmF1bHRMb2dXaWRnZXRIZWlnaHQpO1xuICB9XG59XG4iXX0=