cdk-monitoring-constructs
Version:
[](https://badge.fury.io/js/cdk-monitoring-constructs) [](https://m
62 lines • 13.1 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DynamoTableGlobalSecondaryIndexMetricFactory = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const common_1 = require("../../common");
const DynamoDbNamespace = "AWS/DynamoDB";
class DynamoTableGlobalSecondaryIndexMetricFactory extends common_1.BaseMetricFactory {
constructor(metricFactory, props) {
super(metricFactory, props);
this.table = props.table;
this.dimensionsMap = {
TableName: props.table.tableName,
GlobalSecondaryIndexName: props.globalSecondaryIndexName,
};
}
metricProvisionedReadCapacityUnits() {
return this.metricFactory.createMetric("ProvisionedReadCapacityUnits", common_1.MetricStatistic.SUM, "Provisioned", this.dimensionsMap, undefined, DynamoDbNamespace, undefined, this.region, this.account);
}
metricProvisionedWriteCapacityUnits() {
return this.metricFactory.createMetric("ProvisionedWriteCapacityUnits", common_1.MetricStatistic.SUM, "Provisioned", this.dimensionsMap, undefined, DynamoDbNamespace, undefined, this.region, this.account);
}
metricConsumedReadCapacityUnits() {
return this.metricFactory.createMetricMath("consumed_rcu_sum/PERIOD(consumed_rcu_sum)", {
consumed_rcu_sum: this.table.metricConsumedReadCapacityUnits({
statistic: common_1.MetricStatistic.SUM,
dimensionsMap: this.dimensionsMap,
region: this.region,
account: this.account,
}),
}, "Consumed");
}
metricConsumedWriteCapacityUnits() {
return this.metricFactory.createMetricMath("consumed_wcu_sum/PERIOD(consumed_wcu_sum)", {
consumed_wcu_sum: this.table.metricConsumedWriteCapacityUnits({
statistic: common_1.MetricStatistic.SUM,
dimensionsMap: this.dimensionsMap,
region: this.region,
account: this.account,
}),
}, "Consumed");
}
metricIndexConsumedWriteUnitsMetric() {
return this.metricFactory.createMetric("OnlineIndexConsumedWriteCapacity", common_1.MetricStatistic.SUM, "Consumed by index", this.dimensionsMap, undefined, DynamoDbNamespace, undefined, this.region, this.account);
}
metricThrottledReadRequestCount() {
const readThrottles = this.metricFactory.createMetric("ReadThrottleEvents", common_1.MetricStatistic.SUM, undefined, this.dimensionsMap, undefined, DynamoDbNamespace, undefined, this.region, this.account);
return this.metricFactory.createMetricMath("FILL(readThrottles,0)", { readThrottles }, "Read");
}
metricThrottledWriteRequestCount() {
const writeThrottles = this.metricFactory.createMetric("WriteThrottleEvents", common_1.MetricStatistic.SUM, undefined, this.dimensionsMap, undefined, DynamoDbNamespace, undefined, this.region, this.account);
return this.metricFactory.createMetricMath("FILL(writeThrottles,0)", { writeThrottles }, "Write");
}
metricThrottledIndexRequestCount() {
const indexThrottles = this.metricFactory.createMetric("OnlineIndexThrottleEvents", common_1.MetricStatistic.SUM, undefined, this.dimensionsMap, undefined, DynamoDbNamespace, undefined, this.region, this.account);
return this.metricFactory.createMetricMath("FILL(indexThrottles,0)", { indexThrottles }, "Index");
}
}
exports.DynamoTableGlobalSecondaryIndexMetricFactory = DynamoTableGlobalSecondaryIndexMetricFactory;
_a = JSII_RTTI_SYMBOL_1;
DynamoTableGlobalSecondaryIndexMetricFactory[_a] = { fqn: "cdk-monitoring-constructs.DynamoTableGlobalSecondaryIndexMetricFactory", version: "9.15.2" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1vVGFibGVHbG9iYWxTZWNvbmRhcnlJbmRleE1ldHJpY0ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEeW5hbW9UYWJsZUdsb2JhbFNlY29uZGFyeUluZGV4TWV0cmljRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQUtzQjtBQUV0QixNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztBQVF6QyxNQUFhLDRDQUE2QyxTQUFRLDBCQUFvRTtJQUlwSSxZQUNFLGFBQTRCLEVBQzVCLEtBQXdEO1FBRXhELEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUztZQUNoQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsd0JBQXdCO1NBQ3pELENBQUM7SUFDSixDQUFDO0lBRUQsa0NBQWtDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQ3BDLDhCQUE4QixFQUM5Qix3QkFBZSxDQUFDLEdBQUcsRUFDbkIsYUFBYSxFQUNiLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELG1DQUFtQztRQUNqQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQywrQkFBK0IsRUFDL0Isd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLGFBQWEsRUFDYixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNK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d3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHsgSVRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuXG5pbXBvcnQge1xuICBCYXNlTWV0cmljRmFjdG9yeSxcbiAgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyxcbiAgTWV0cmljRmFjdG9yeSxcbiAgTWV0cmljU3RhdGlzdGljLFxufSBmcm9tIFwiLi4vLi4vY29tbW9uXCI7XG5cbmNvbnN0IER5bmFtb0RiTmFtZXNwYWNlID0gXCJBV1MvRHluYW1vREJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbW9UYWJsZUdsb2JhbFNlY29uZGFyeUluZGV4TWV0cmljRmFjdG9yeVByb3BzXG4gIGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyB7XG4gIHJlYWRvbmx5IHRhYmxlOiBJVGFibGU7XG4gIHJlYWRvbmx5IGdsb2JhbFNlY29uZGFyeUluZGV4TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRHluYW1vVGFibGVHbG9iYWxTZWNvbmRhcnlJbmRleE1ldHJpY0ZhY3RvcnkgZXh0ZW5kcyBCYXNlTWV0cmljRmFjdG9yeTxEeW5hbW9UYWJsZUdsb2JhbFNlY29uZGFyeUluZGV4TWV0cmljRmFjdG9yeVByb3BzPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YWJsZTogSVRhYmxlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGltZW5zaW9uc01hcDogRGltZW5zaW9uc01hcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtZXRyaWNGYWN0b3J5OiBNZXRyaWNGYWN0b3J5LFxuICAgIHByb3BzOiBEeW5hbW9UYWJsZUdsb2JhbFNlY29uZGFyeUluZGV4TWV0cmljRmFjdG9yeVByb3BzLFxuICApIHtcbiAgICBzdXBlcihtZXRyaWNGYWN0b3J5LCBwcm9wcyk7XG5cbiAgICB0aGlzLnRhYmxlID0gcHJvcHMudGFibGU7XG4gICAgdGhpcy5kaW1lbnNpb25zTWFwID0ge1xuICAgICAgVGFibGVOYW1lOiBwcm9wcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICBHbG9iYWxTZWNvbmRhcnlJbmRleE5hbWU6IHByb3BzLmdsb2JhbFNlY29uZGFyeUluZGV4TmFtZSxcbiAgICB9O1xuICB9XG5cbiAgbWV0cmljUHJvdmlzaW9uZWRSZWFkQ2FwYWNpdHlVbml0cygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiUHJvdmlzaW9uZWRSZWFkQ2FwYWNpdHlVbml0c1wiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiUHJvdmlzaW9uZWRcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIER5bmFtb0RiTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1Byb3Zpc2lvbmVkV3JpdGVDYXBhY2l0eVVuaXRzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJQcm92aXNpb25lZFdyaXRlQ2FwYWNpdHlVbml0c1wiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiUHJvdmlzaW9uZWRcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIER5bmFtb0RiTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0NvbnN1bWVkUmVhZENhcGFjaXR5VW5pdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWNNYXRoKFxuICAgICAgXCJjb25zdW1lZF9yY3Vfc3VtL1BFUklPRChjb25zdW1lZF9yY3Vfc3VtKVwiLFxuICAgICAge1xuICAgICAgICBjb25zdW1lZF9yY3Vfc3VtOiB0aGlzLnRhYmxlLm1ldHJpY0NvbnN1bWVkUmVhZENhcGFjaXR5VW5pdHMoe1xuICAgICAgICAgIHN0YXRpc3RpYzogTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgICAgICBkaW1lbnNpb25zTWFwOiB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIFwiQ29uc3VtZWRcIixcbiAgICApO1xuICB9XG5cbiAgbWV0cmljQ29uc3VtZWRXcml0ZUNhcGFjaXR5VW5pdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWNNYXRoKFxuICAgICAgXCJjb25zdW1lZF93Y3Vfc3VtL1BFUklPRChjb25zdW1lZF93Y3Vfc3VtKVwiLFxuICAgICAge1xuICAgICAgICBjb25zdW1lZF93Y3Vfc3VtOiB0aGlzLnRhYmxlLm1ldHJpY0NvbnN1bWVkV3JpdGVDYXBhY2l0eVVuaXRzKHtcbiAgICAgICAgICBzdGF0aXN0aWM6IE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICAgICAgZGltZW5zaW9uc01hcDogdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sXG4gICAgICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICBcIkNvbnN1bWVkXCIsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0luZGV4Q29uc3VtZWRXcml0ZVVuaXRzTWV0cmljKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJPbmxpbmVJbmRleENvbnN1bWVkV3JpdGVDYXBhY2l0eVwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiQ29uc3VtZWQgYnkgaW5kZXhcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIER5bmFtb0RiTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1Rocm90dGxlZFJlYWRSZXF1ZXN0Q291bnQoKSB7XG4gICAgY29uc3QgcmVhZFRocm90dGxlcyA9IHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIlJlYWRUaHJvdHRsZUV2ZW50c1wiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIER5bmFtb0RiTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljTWF0aChcbiAgICAgIFwiRklMTChyZWFkVGhyb3R0bGVzLDApXCIsXG4gICAgICB7IHJlYWRUaHJvdHRsZXMgfSxcbiAgICAgIFwiUmVhZFwiLFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNUaHJvdHRsZWRXcml0ZVJlcXVlc3RDb3VudCgpIHtcbiAgICBjb25zdCB3cml0ZVRocm90dGxlcyA9IHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIldyaXRlVGhyb3R0bGVFdmVudHNcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBEeW5hbW9EYk5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpY01hdGgoXG4gICAgICBcIkZJTEwod3JpdGVUaHJvdHRsZXMsMClcIixcbiAgICAgIHsgd3JpdGVUaHJvdHRsZXMgfSxcbiAgICAgIFwiV3JpdGVcIixcbiAgICApO1xuICB9XG5cbiAgbWV0cmljVGhyb3R0bGVkSW5kZXhSZXF1ZXN0Q291bnQoKSB7XG4gICAgY29uc3QgaW5kZXhUaHJvdHRsZXMgPSB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJPbmxpbmVJbmRleFRocm90dGxlRXZlbnRzXCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgRHluYW1vRGJOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWNNYXRoKFxuICAgICAgXCJGSUxMKGluZGV4VGhyb3R0bGVzLDApXCIsXG4gICAgICB7IGluZGV4VGhyb3R0bGVzIH0sXG4gICAgICBcIkluZGV4XCIsXG4gICAgKTtcbiAgfVxufVxuIl19