UNPKG

cdk-monitoring-constructs

Version:

[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/cdklabs/cdk-monitoring-constructs) [![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge

58 lines 7.39 kB
"use strict"; 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=