@rio-cloud/cdk-v2-constructs 4.13.1 → 4.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +7478 -3329
- package/CHANGELOG.md +21 -0
- package/lib/datadog/datadog-log-index-monitoring.d.ts +2 -2
- package/lib/datadog/datadog-log-index-monitoring.js +1 -1
- package/lib/datadogv2/datadog-dashboard.d.ts +28 -0
- package/lib/datadogv2/datadog-dashboard.js +31 -0
- package/lib/datadogv2/datadog-log-index-monitoring.d.ts +61 -0
- package/lib/datadogv2/datadog-log-index-monitoring.js +115 -0
- package/lib/datadogv2/datadog-monitor.d.ts +234 -0
- package/lib/datadogv2/datadog-monitor.js +134 -0
- package/lib/datadogv2/datadog-notification.d.ts +100 -0
- package/lib/datadogv2/datadog-notification.js +94 -0
- package/lib/datadogv2/index.d.ts +4 -0
- package/lib/datadogv2/index.js +17 -0
- package/lib/fargate/datadog.js +2 -2
- package/lib/fargate/index.d.ts +1 -0
- package/lib/fargate/index.js +14 -0
- package/lib/fargate/rio-fargate-service.d.ts +18 -18
- package/lib/fargate/rio-fargate-service.js +1 -1
- package/lib/index.d.ts +7 -13
- package/lib/index.js +8 -14
- package/lib/kafka/kafka-topic.d.ts +5 -5
- package/lib/kafka/kafka-topic.js +1 -1
- package/lib/kafka/rio-kafka-event-source.d.ts +1 -1
- package/lib/kafka/rio-kafka-event-source.js +1 -1
- package/lib/pipeline/rio-backup-secrets-restore-stage.d.ts +1 -1
- package/lib/pipeline/rio-backup-secrets-restore-stage.js +1 -1
- package/lib/pipeline/rio-bitbucket-source-action.d.ts +1 -1
- package/lib/pipeline/rio-bitbucket-source-action.js +1 -1
- package/lib/rio-landing-zone.d.ts +6 -0
- package/lib/rio-landing-zone.js +19 -1
- package/lib/watchful/alb.d.ts +2 -2
- package/lib/watchful/alb.js +1 -1
- package/lib/watchful/aspect.d.ts +6 -6
- package/lib/watchful/aspect.js +12 -7
- package/lib/watchful/cloudfront.d.ts +2 -2
- package/lib/watchful/cloudfront.js +1 -1
- package/lib/watchful/datadog-log-alarm.d.ts +1 -0
- package/lib/watchful/datadog-log-alarm.js +1 -1
- package/lib/watchful/docdb.d.ts +4 -4
- package/lib/watchful/docdb.js +1 -1
- package/lib/watchful/dynamodb.d.ts +5 -5
- package/lib/watchful/dynamodb.js +1 -1
- package/lib/watchful/ecs.d.ts +2 -2
- package/lib/watchful/ecs.js +1 -1
- package/lib/watchful/index.d.ts +13 -0
- package/lib/watchful/index.js +26 -0
- package/lib/watchful/lambda.d.ts +3 -3
- package/lib/watchful/lambda.js +2 -1
- package/lib/watchful/metric-alarm.d.ts +16 -16
- package/lib/watchful/metric-alarm.js +1 -1
- package/lib/watchful/rds.d.ts +2 -2
- package/lib/watchful/rds.js +1 -1
- package/lib/watchful/targetgroup.d.ts +2 -2
- package/lib/watchful/targetgroup.js +1 -1
- package/lib/watchful/watchful.d.ts +52 -48
- package/lib/watchful/watchful.js +104 -98
- package/lib/watchfulv2/datadog-log-alarm.d.ts +37 -0
- package/lib/watchfulv2/datadog-log-alarm.js +61 -0
- package/lib/watchfulv2/datadog-metric-alarm.d.ts +29 -0
- package/lib/watchfulv2/datadog-metric-alarm.js +132 -0
- package/lib/watchfulv2/index.d.ts +1 -0
- package/lib/watchfulv2/index.js +14 -0
- package/lib/watchfulv2/watchful.d.ts +53 -0
- package/lib/watchfulv2/watchful.js +76 -0
- package/package.json +18 -8
- package/version.json +1 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataDogMetricAlarm = void 0;
|
|
4
|
+
const cdk = require("aws-cdk-lib");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const constructs_1 = require("constructs");
|
|
7
|
+
const datadogv2_1 = require("../datadogv2");
|
|
8
|
+
const upperToLower_1 = require("../watchful/upperToLower");
|
|
9
|
+
/**
|
|
10
|
+
* A wrapper for a custom resource that creates a DataDog Monitor.
|
|
11
|
+
*
|
|
12
|
+
* To use this construct, the DataDog integration needs to be installed.
|
|
13
|
+
*/
|
|
14
|
+
class DataDogMetricAlarm extends constructs_1.Construct {
|
|
15
|
+
constructor(scope, id, props) {
|
|
16
|
+
super(scope, id);
|
|
17
|
+
new datadogv2_1.DatadogMonitor(this, 'ErrorMonitorMetricAlert', {
|
|
18
|
+
serviceName: props.serviceName,
|
|
19
|
+
name: `${this.node.scope?.node.id} ${id}`,
|
|
20
|
+
monitorType: datadogv2_1.DatadogMonitorQueryAlertType.QUERY_ALERT,
|
|
21
|
+
query: this.alarmToDataDogQuery(props),
|
|
22
|
+
message: this.getMessage(props),
|
|
23
|
+
notification: props.notification,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
getMessage(props) {
|
|
27
|
+
return `
|
|
28
|
+
{{#is_alert}}
|
|
29
|
+
${props.alarmDescription}
|
|
30
|
+
{{/is_alert}}
|
|
31
|
+
|
|
32
|
+
{{#is_alert_recovery}}
|
|
33
|
+
${props.alarmDescription} is back to normal.
|
|
34
|
+
{{/is_alert_recovery}}`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Helper function to convert a generic alarm into a DataDog query string.
|
|
38
|
+
*/
|
|
39
|
+
alarmToDataDogQuery(alarm) {
|
|
40
|
+
let unit;
|
|
41
|
+
let totalPeriod;
|
|
42
|
+
if (alarm.metric.period.toSeconds() < 60) {
|
|
43
|
+
totalPeriod = alarm.metric.period.toSeconds() * alarm.evaluationPeriods;
|
|
44
|
+
unit = 's';
|
|
45
|
+
}
|
|
46
|
+
else if (alarm.metric.period.toMinutes() < 1440) {
|
|
47
|
+
totalPeriod = alarm.metric.period.toMinutes() * alarm.evaluationPeriods;
|
|
48
|
+
unit = 'm';
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
totalPeriod = alarm.metric.period.toDays() * alarm.evaluationPeriods;
|
|
52
|
+
unit = 'd';
|
|
53
|
+
}
|
|
54
|
+
// avg(last_15m):max:aws.fargate.cpu.percent{ecs_container_name:$ServiceName$} > 95
|
|
55
|
+
const namespace = alarm.metric.namespace.toLocaleLowerCase().replace('/', '.');
|
|
56
|
+
let metricName = alarm.metric.metricName;
|
|
57
|
+
// Special case for ALB / TargetGroup metrics
|
|
58
|
+
switch (metricName) {
|
|
59
|
+
case 'HTTPCode_ELB_5XX_Count':
|
|
60
|
+
metricName = 'HTTPCode_ELB_5XX';
|
|
61
|
+
break;
|
|
62
|
+
case 'HTTPCode_Target_5XX_Count':
|
|
63
|
+
metricName = 'HTTPCode_Target_5XX';
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
if (!metricName.includes('_')) {
|
|
67
|
+
metricName = metricName.replace(/([a-z])([A-Z])/g, '$1_$2');
|
|
68
|
+
}
|
|
69
|
+
metricName = metricName.toLocaleLowerCase();
|
|
70
|
+
const metric = `${namespace}.${metricName}`;
|
|
71
|
+
// statistics must be lowerCase and probably also converted (see allowed values in cw.Metric)
|
|
72
|
+
let comparisonOperator = 'not supported';
|
|
73
|
+
switch (alarm.comparisonOperator) {
|
|
74
|
+
case cdk.aws_cloudwatch.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD:
|
|
75
|
+
comparisonOperator = '>=';
|
|
76
|
+
break;
|
|
77
|
+
case cdk.aws_cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD:
|
|
78
|
+
comparisonOperator = '>';
|
|
79
|
+
break;
|
|
80
|
+
case cdk.aws_cloudwatch.ComparisonOperator.LESS_THAN_OR_EQUAL_TO_THRESHOLD:
|
|
81
|
+
comparisonOperator = '<=';
|
|
82
|
+
break;
|
|
83
|
+
case cdk.aws_cloudwatch.ComparisonOperator.LESS_THAN_THRESHOLD:
|
|
84
|
+
comparisonOperator = '<';
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
let alarmStatistic = 'not supported';
|
|
88
|
+
switch (alarm.metric.statistic) {
|
|
89
|
+
case cdk.aws_cloudwatch.Statistic.AVERAGE:
|
|
90
|
+
alarmStatistic = 'avg';
|
|
91
|
+
break;
|
|
92
|
+
case cdk.aws_cloudwatch.Statistic.MAXIMUM:
|
|
93
|
+
alarmStatistic = 'max';
|
|
94
|
+
break;
|
|
95
|
+
case cdk.aws_cloudwatch.Statistic.MINIMUM:
|
|
96
|
+
alarmStatistic = 'min';
|
|
97
|
+
break;
|
|
98
|
+
case cdk.aws_cloudwatch.Statistic.SAMPLE_COUNT:
|
|
99
|
+
break;
|
|
100
|
+
case cdk.aws_cloudwatch.Statistic.SUM:
|
|
101
|
+
alarmStatistic = 'sum';
|
|
102
|
+
break;
|
|
103
|
+
default:
|
|
104
|
+
alarmStatistic = 'avg';
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
let dimensions = `account_id:${aws_cdk_lib_1.Stack.of(this).account}`;
|
|
108
|
+
if (alarm.metric.dimensions) {
|
|
109
|
+
for (const key in alarm.metric.dimensions) {
|
|
110
|
+
const upperToLowerCr = new aws_cdk_lib_1.CustomResource(this, `${key}UpperToLower`, {
|
|
111
|
+
resourceType: 'Custom::UpperToLower',
|
|
112
|
+
serviceToken: upperToLower_1.UpperToLower.getOrCreate(this).provider.serviceToken,
|
|
113
|
+
properties: {
|
|
114
|
+
Upper: alarm.metric.dimensions[key],
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
const value = upperToLowerCr.getAtt('Lower');
|
|
118
|
+
dimensions += `,${key.toLocaleLowerCase()}:${value}`;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
switch (alarm.treatMissingData) {
|
|
122
|
+
case cdk.aws_cloudwatch.TreatMissingData.NOT_BREACHING:
|
|
123
|
+
return `${alarmStatistic}(last_${totalPeriod}${unit}):default_zero(${alarmStatistic}:${metric}{${dimensions}}) ${comparisonOperator} ${alarm.threshold}`;
|
|
124
|
+
case cdk.aws_cloudwatch.TreatMissingData.BREACHING:
|
|
125
|
+
case cdk.aws_cloudwatch.TreatMissingData.IGNORE:
|
|
126
|
+
default:
|
|
127
|
+
return `${alarmStatistic}(last_${totalPeriod}${unit}):${alarmStatistic}:${metric}{${dimensions}} ${comparisonOperator} ${alarm.threshold}`;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.DataDogMetricAlarm = DataDogMetricAlarm;
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1tZXRyaWMtYWxhcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hmdWx2Mi9kYXRhZG9nLW1ldHJpYy1hbGFybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsNkNBQW9EO0FBQ3BELDJDQUF1QztBQUN2Qyw0Q0FBMkY7QUFFM0YsMkRBQXdEO0FBbUJ4RDs7OztHQUlHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxzQkFBUztJQUUvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSwwQkFBYyxDQUFDLElBQUksRUFDckIseUJBQXlCLEVBQ3pCO1lBQ0UsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3pDLFdBQVcsRUFBRSx3Q0FBNEIsQ0FBQyxXQUFXO1lBQ3JELEtBQUssRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUMvQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7U0FDakMsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUE4QjtRQUMvQyxPQUFPOztFQUVULEtBQUssQ0FBQyxnQkFBZ0I7Ozs7RUFJdEIsS0FBSyxDQUFDLGdCQUFnQjt1QkFDRCxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQixDQUFDLEtBQXVCO1FBQ3pDLElBQUksSUFBWSxDQUFDO1FBQ2pCLElBQUksV0FBbUIsQ0FBQztRQUN4QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMs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Y0FBYyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztZQUNuRCxLQUFLLEdBQUcsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQ2hEO2dCQUNFLE9BQU8sR0FBRyxjQUFjLFNBQVMsV0FBVyxHQUFHLElBQUksS0FBSyxjQUFjLElBQUksTUFBTSxJQUFJLFVBQVUsS0FBSyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDOUk7SUFDSCxDQUFDO0NBQ0Y7QUFsSUQsZ0RBa0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ01vbml0b3IsIERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUsIElOb3RpZmljYXRpb24gfSBmcm9tICcuLi9kYXRhZG9ndjInO1xuaW1wb3J0IHsgTWV0cmljQWxhcm1Qcm9wcyB9IGZyb20gJy4uL3dhdGNoZnVsL21ldHJpYy1hbGFybSc7XG5pbXBvcnQgeyBVcHBlclRvTG93ZXIgfSBmcm9tICcuLi93YXRjaGZ1bC91cHBlclRvTG93ZXInO1xuXG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBEYXRhRG9nTW9uaXRvciBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhRG9nTWV0cmljQWxhcm1Qcm9wcyBleHRlbmRzIE1ldHJpY0FsYXJtUHJvcHMge1xuXG4gIC8qKlxuICAgICAqIFRoZSBzZXJ2aWNlIG5hbWUgdXNlZCB0byBuYW1lIGFuZCB0YWcgdGhlIG1vbml0b3JzLlxuICAgICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIERhdGFEb2cncyBPcHNHZW5pZSBpbnRlZ3JhdGlvbi4gVXNlZCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBPcHNHZW5pZSBhbGFybXMgZm9yIHRoZSBjcmVhdGVkIERhdGFEb2cgTW9uaXRvci5cbiAgICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uPzogSU5vdGlmaWNhdGlvbjtcbn1cblxuLyoqXG4gKiBBIHdyYXBwZXIgZm9yIGEgY3VzdG9tIHJlc291cmNlIHRoYXQgY3JlYXRlcyBhIERhdGFEb2cgTW9uaXRvci5cbiAqXG4gKiBUbyB1c2UgdGhpcyBjb25zdHJ1Y3QsIHRoZSBEYXRhRG9nIGludGVncmF0aW9uIG5lZWRzIHRvIGJlIGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFEb2dNZXRyaWNBbGFybSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFEb2dNZXRyaWNBbGFybVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLFxuICAgICAgJ0Vycm9yTW9uaXRvck1ldHJpY0FsZXJ0JyxcbiAgICAgIHtcbiAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICBuYW1lOiBgJHt0aGlzLm5vZGUuc2NvcGU/Lm5vZGUuaWR9ICR7aWR9YCxcbiAgICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICAgIHF1ZXJ5OiB0aGlzLmFsYXJtVG9EYXRhRG9nUXVlcnkocHJvcHMpLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLmdldE1lc3NhZ2UocHJvcHMpLFxuICAgICAgICBub3RpZmljYXRpb246IHByb3BzLm5vdGlmaWNhdGlvbixcbiAgICAgIH0pO1xuXG4gIH1cblxuICBwcml2YXRlIGdldE1lc3NhZ2UocHJvcHM6IERhdGFEb2dNZXRyaWNBbGFybVByb3BzKSB7XG4gICAgcmV0dXJuIGBcbnt7I2lzX2FsZXJ0fX1cbiR7cHJvcHMuYWxhcm1EZXNjcmlwdGlvbn1cbnt7L2lzX2FsZXJ0fX0gXG5cbnt7I2lzX2FsZXJ0X3JlY292ZXJ5fX1cbiR7cHJvcHMuYWxhcm1EZXNjcmlwdGlvbn0gaXMgYmFjayB0byBub3JtYWwuXG57ey9pc19hbGVydF9yZWNvdmVyeX19YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBhIGdlbmVyaWMgYWxhcm0gaW50byBhIERhdGFEb2cgcXVlcnkgc3RyaW5nLlxuICAgKi9cbiAgYWxhcm1Ub0RhdGFEb2dRdWVyeShhbGFybTogTWV0cmljQWxhcm1Qcm9wcyk6IHN0cmluZyB7XG4gICAgbGV0IHVuaXQ6IHN0cmluZztcbiAgICBsZXQgdG90YWxQZXJpb2Q6IG51bWJlcjtcbiAgICBpZiAoYWxhcm0ubWV0cmljLnBlcmlvZC50b1NlY29uZHMoKSA8IDYwKSB7XG4gICAgICB0b3RhbFBlcmlvZCA9IGFsYXJtLm1ldHJpYy5wZXJpb2QudG9TZWNvbmRzKCkgKiBhbGFybS5ldmFsdWF0aW9uUGVyaW9kcztcbiAgICAgIHVuaXQgPSAncyc7XG4gICAgfSBlbHNlIGlmIChhbGFybS5tZXRyaWMucGVyaW9kLnRvTWludXRlcygpIDwgMTQ0MCkge1xuICAgICAgdG90YWxQZXJpb2QgPSBhbGFybS5tZXRyaWMucGVyaW9kLnRvTWludXRlcygpICogYWxhcm0uZXZhbHVhdGlvblBlcmlvZHM7XG4gICAgICB1bml0ID0gJ20nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b3RhbFBlcmlvZCA9IGFsYXJtLm1ldHJpYy5wZXJpb2QudG9EYXlzKCkgKiBhbGFybS5ldmFsdWF0aW9uUGVyaW9kcztcbiAgICAgIHVuaXQgPSAnZCc7XG4gICAgfVxuXG4gICAgLy8gYXZnKGxhc3RfMTVtKTptYXg6YXdzLmZhcmdhdGUuY3B1LnBlcmNlbnR7ZWNzX2NvbnRhaW5lcl9uYW1lOiRTZXJ2aWNlTmFtZSR9ID4gOTVcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBhbGFybS5tZXRyaWMubmFtZXNwYWNlLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgnLycsICcuJyk7XG5cbiAgICBsZXQgbWV0cmljTmFtZSA9IGFsYXJtLm1ldHJpYy5tZXRyaWNOYW1lO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBBTEIgLyBUYXJnZXRHcm91cCBtZXRyaWNzXG4gICAgc3dpdGNoIChtZXRyaWNOYW1lKSB7XG4gICAgICBjYXNlICdIVFRQQ29kZV9FTEJfNVhYX0NvdW50JzpcbiAgICAgICAgbWV0cmljTmFtZSA9ICdIVFRQQ29kZV9FTEJfNVhYJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdIVFRQQ29kZV9UYXJnZXRfNVhYX0NvdW50JzpcbiAgICAgICAgbWV0cmljTmFtZSA9ICdIVFRQQ29kZV9UYXJnZXRfNVhYJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICghbWV0cmljTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICBtZXRyaWNOYW1lID0gbWV0cmljTmFtZS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDFfJDInKTtcbiAgICB9XG4gICAgbWV0cmljTmFtZSA9IG1ldHJpY05hbWUudG9Mb2NhbGVMb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IG1ldHJpYyA9IGAke25hbWVzcGFjZX0uJHttZXRyaWNOYW1lfWA7XG5cbiAgICAvLyBzdGF0aXN0aWNzIG11c3QgYmUgbG93ZXJDYXNlIGFuZCBwcm9iYWJseSBhbHNvIGNvbnZlcnRlZCAoc2VlIGFsbG93ZWQgdmFsdWVzIGluIGN3Lk1ldHJpYylcbiAgICBsZXQgY29tcGFyaXNvbk9wZXJhdG9yID0gJ25vdCBzdXBwb3J0ZWQnO1xuICAgIHN3aXRjaCAoYWxhcm0uY29tcGFyaXNvbk9wZXJhdG9yKSB7XG4gICAgICBjYXNlIGNkay5hd3NfY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRDpcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yID0gJz49JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNkay5hd3NfY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRDpcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yID0gJz4nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xEOlxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3IgPSAnPD0nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xEOlxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3IgPSAnPCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBhbGFybVN0YXRpc3RpYyA9ICdub3Qgc3VwcG9ydGVkJztcbiAgICBzd2l0Y2ggKGFsYXJtLm1ldHJpYy5zdGF0aXN0aWMpIHtcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlN0YXRpc3RpYy5BVkVSQUdFOlxuICAgICAgICBhbGFybVN0YXRpc3RpYyA9ICdhdmcnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlN0YXRpc3RpYy5NQVhJTVVNOlxuICAgICAgICBhbGFybVN0YXRpc3RpYyA9ICdtYXgnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlN0YXRpc3RpYy5NSU5JTVVNOlxuICAgICAgICBhbGFybVN0YXRpc3RpYyA9ICdtaW4nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlN0YXRpc3RpYy5TQU1QTEVfQ09VTlQ6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBjZGsuYXdzX2Nsb3Vkd2F0Y2guU3RhdGlzdGljLlNVTTpcbiAgICAgICAgYWxhcm1TdGF0aXN0aWMgPSAnc3VtJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhbGFybVN0YXRpc3RpYyA9ICdhdmcnO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBsZXQgZGltZW5zaW9ucyA9IGBhY2NvdW50X2lkOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH1gO1xuXG4gICAgaWYgKGFsYXJtLm1ldHJpYy5kaW1lbnNpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBhbGFybS5tZXRyaWMuZGltZW5zaW9ucykge1xuICAgICAgICBjb25zdCB1cHBlclRvTG93ZXJDciA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCBgJHtrZXl9VXBwZXJUb0xvd2VyYCwge1xuICAgICAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6VXBwZXJUb0xvd2VyJyxcbiAgICAgICAgICBzZXJ2aWNlVG9rZW46IFVwcGVyVG9Mb3dlci5nZXRPckNyZWF0ZSh0aGlzKS5wcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgVXBwZXI6IGFsYXJtLm1ldHJpYy5kaW1lbnNpb25zW2tleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdXBwZXJUb0xvd2VyQ3IuZ2V0QXR0KCdMb3dlcicpO1xuICAgICAgICBkaW1lbnNpb25zICs9IGAsJHtrZXkudG9Mb2NhbGVMb3dlckNhc2UoKX06JHt2YWx1ZX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAoYWxhcm0udHJlYXRNaXNzaW5nRGF0YSkge1xuICAgICAgY2FzZSBjZGsuYXdzX2Nsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HOlxuICAgICAgICByZXR1cm4gYCR7YWxhcm1TdGF0aXN0aWN9KGxhc3RfJHt0b3RhbFBlcmlvZH0ke3VuaXR9KTpkZWZhdWx0X3plcm8oJHthbGFybVN0YXRpc3RpY306JHttZXRyaWN9eyR7ZGltZW5zaW9uc319KSAke2NvbXBhcmlzb25PcGVyYXRvcn0gJHthbGFybS50aHJlc2hvbGR9YDtcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HOlxuICAgICAgY2FzZSBjZGsuYXdzX2Nsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5JR05PUkU6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYCR7YWxhcm1TdGF0aXN0aWN9KGxhc3RfJHt0b3RhbFBlcmlvZH0ke3VuaXR9KToke2FsYXJtU3RhdGlzdGljfToke21ldHJpY317JHtkaW1lbnNpb25zfX0gJHtjb21wYXJpc29uT3BlcmF0b3J9ICR7YWxhcm0udGhyZXNob2xkfWA7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './watchful';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./watchful"), exports);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hmdWx2Mi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsJzsiXX0=
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Construct } from 'constructs';
|
|
2
|
+
import { INotification } from '../datadogv2';
|
|
3
|
+
import { MetricAlarmProps, AbstractWatchful } from '../watchful';
|
|
4
|
+
import { LogAlarmProps } from './datadog-log-alarm';
|
|
5
|
+
/**
|
|
6
|
+
* Properties for defining Watchful
|
|
7
|
+
*/
|
|
8
|
+
export interface WatchfulProps {
|
|
9
|
+
/**
|
|
10
|
+
* The service name.
|
|
11
|
+
*
|
|
12
|
+
* @defaultValue The stack name.
|
|
13
|
+
*/
|
|
14
|
+
readonly serviceName?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Set the way how monitors should notify in case of an alert.
|
|
17
|
+
*
|
|
18
|
+
* @defaultValue {@link DefaultSlackNotification}
|
|
19
|
+
*/
|
|
20
|
+
readonly notification?: INotification;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A construct to watch given scope or resources. Opinionated DataDog alarms are automatically created for watched resources.
|
|
24
|
+
*
|
|
25
|
+
* Usage with non-default notification:
|
|
26
|
+
* ```ts
|
|
27
|
+
* const dw = new watchfulv2.Watchful(this, 'Watchful', {
|
|
28
|
+
* serviceName: props.serviceName,
|
|
29
|
+
* notification: new datadogv2.SlackNotification({channel: 'team-alert-channel'})
|
|
30
|
+
* });
|
|
31
|
+
* dw.watchScope(this);
|
|
32
|
+
*```
|
|
33
|
+
*/
|
|
34
|
+
export declare class Watchful extends AbstractWatchful {
|
|
35
|
+
private readonly notification;
|
|
36
|
+
private readonly serviceName;
|
|
37
|
+
constructor(scope: Construct, id: string, props?: WatchfulProps);
|
|
38
|
+
/**
|
|
39
|
+
* Adds the alarmTopic as alarm action to the given alarm.
|
|
40
|
+
*
|
|
41
|
+
* @param alarm - The watchful to add those resources to
|
|
42
|
+
*/
|
|
43
|
+
createAlarm(scope: Construct, id: string, alarm: MetricAlarmProps): void;
|
|
44
|
+
/**
|
|
45
|
+
* Adds an alert for error logs
|
|
46
|
+
* @param scope
|
|
47
|
+
*/
|
|
48
|
+
createLogAlarm(scope: Construct, id: string, alarm: LogAlarmProps): void;
|
|
49
|
+
/**
|
|
50
|
+
* Watches the given scope and adds alarms for known resources.
|
|
51
|
+
*/
|
|
52
|
+
watchScope(scope: Construct): void;
|
|
53
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Watchful = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const datadogv2_1 = require("../datadogv2");
|
|
8
|
+
const watchful_1 = require("../watchful");
|
|
9
|
+
const datadog_log_alarm_1 = require("./datadog-log-alarm");
|
|
10
|
+
const datadog_metric_alarm_1 = require("./datadog-metric-alarm");
|
|
11
|
+
/**
|
|
12
|
+
* A construct to watch given scope or resources. Opinionated DataDog alarms are automatically created for watched resources.
|
|
13
|
+
*
|
|
14
|
+
* Usage with non-default notification:
|
|
15
|
+
* ```ts
|
|
16
|
+
* const dw = new watchfulv2.Watchful(this, 'Watchful', {
|
|
17
|
+
* serviceName: props.serviceName,
|
|
18
|
+
* notification: new datadogv2.SlackNotification({channel: 'team-alert-channel'})
|
|
19
|
+
* });
|
|
20
|
+
* dw.watchScope(this);
|
|
21
|
+
*```
|
|
22
|
+
*/
|
|
23
|
+
class Watchful extends watchful_1.AbstractWatchful {
|
|
24
|
+
constructor(scope, id, props = {}) {
|
|
25
|
+
super(scope, id);
|
|
26
|
+
this.serviceName = props.serviceName ?? aws_cdk_lib_1.Stack.of(this).stackName;
|
|
27
|
+
this.notification = props.notification ?? new datadogv2_1.DefaultSlackNotification();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Adds the alarmTopic as alarm action to the given alarm.
|
|
31
|
+
*
|
|
32
|
+
* @param alarm - The watchful to add those resources to
|
|
33
|
+
*/
|
|
34
|
+
createAlarm(scope, id, alarm) {
|
|
35
|
+
new datadog_metric_alarm_1.DataDogMetricAlarm(scope, id, {
|
|
36
|
+
serviceName: this.serviceName,
|
|
37
|
+
notification: this.notification,
|
|
38
|
+
alarmDescription: alarm.alarmDescription,
|
|
39
|
+
comparisonOperator: alarm.comparisonOperator,
|
|
40
|
+
evaluationPeriods: alarm.evaluationPeriods,
|
|
41
|
+
metric: alarm.metric,
|
|
42
|
+
threshold: alarm.threshold,
|
|
43
|
+
treatMissingData: alarm.treatMissingData,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Adds an alert for error logs
|
|
48
|
+
* @param scope
|
|
49
|
+
*/
|
|
50
|
+
createLogAlarm(scope, id, alarm) {
|
|
51
|
+
new datadog_log_alarm_1.DataDogLogAlarm(scope, id, {
|
|
52
|
+
serviceName: alarm.lambdaCloudwatchGroupName ?? this.serviceName,
|
|
53
|
+
autoCloseOpsGenieAlerts: alarm.autoCloseOpsGenieAlerts,
|
|
54
|
+
period: alarm.period,
|
|
55
|
+
unitOfPeriod: alarm.unitOfPeriod,
|
|
56
|
+
periodOperator: alarm.periodOperator,
|
|
57
|
+
statistic: alarm.statistic,
|
|
58
|
+
queryFilters: alarm.queryFilters,
|
|
59
|
+
alarmDescription: alarm.alarmDescription,
|
|
60
|
+
threshold: alarm.threshold,
|
|
61
|
+
priority: alarm.priority,
|
|
62
|
+
index: alarm.index,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Watches the given scope and adds alarms for known resources.
|
|
67
|
+
*/
|
|
68
|
+
watchScope(scope) {
|
|
69
|
+
const aspect = new watchful_1.WatchfulAspect(this);
|
|
70
|
+
aws_cdk_lib_1.Aspects.of(scope).add(aspect);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.Watchful = Watchful;
|
|
74
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
75
|
+
Watchful[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.watchfulv2.Watchful", version: "0.0.0" };
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hmdWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hmdWx2Mi93YXRjaGZ1bC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE2QztBQUU3Qyw0Q0FBdUU7QUFDdkUsMENBQWlGO0FBQ2pGLDJEQUFxRTtBQUNyRSxpRUFBNEQ7QUFxQjVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsMkJBQWdCO0lBSTVDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBdUIsRUFBRTtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFakUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksb0NBQXdCLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUN0RSxJQUFJLHlDQUFrQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDaEMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7WUFDNUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUMxQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7U0FDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUV0RSxJQUFJLG1DQUFlLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUM3QixXQUFXLEVBQUUsS0FBSyxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxXQUFXO1lBQ2hFLHVCQUF1QixFQUFFLEtBQUssQ0FBQyx1QkFBdUI7WUFDdEQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDcEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxLQUFnQjtRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLHlCQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMscUJBQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O0FBeERILDRCQXlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzcGVjdHMsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEZWZhdWx0U2xhY2tOb3RpZmljYXRpb24sIElOb3RpZmljYXRpb24gfSBmcm9tICcuLi9kYXRhZG9ndjInO1xuaW1wb3J0IHsgV2F0Y2hmdWxBc3BlY3QsIE1ldHJpY0FsYXJtUHJvcHMsIEFic3RyYWN0V2F0Y2hmdWwgfSBmcm9tICcuLi93YXRjaGZ1bCc7XG5pbXBvcnQgeyBEYXRhRG9nTG9nQWxhcm0sIExvZ0FsYXJtUHJvcHMgfSBmcm9tICcuL2RhdGFkb2ctbG9nLWFsYXJtJztcbmltcG9ydCB7IERhdGFEb2dNZXRyaWNBbGFybSB9IGZyb20gJy4vZGF0YWRvZy1tZXRyaWMtYWxhcm0nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIFdhdGNoZnVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hmdWxQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIFRoZSBzdGFjayBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgd2F5IGhvdyBtb25pdG9ycyBzaG91bGQgbm90aWZ5IGluIGNhc2Ugb2YgYW4gYWxlcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUge0BsaW5rIERlZmF1bHRTbGFja05vdGlmaWNhdGlvbn1cbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbj86IElOb3RpZmljYXRpb247XG59XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgdG8gd2F0Y2ggZ2l2ZW4gc2NvcGUgb3IgcmVzb3VyY2VzLiBPcGluaW9uYXRlZCBEYXRhRG9nIGFsYXJtcyBhcmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB3YXRjaGVkIHJlc291cmNlcy5cbiAqXG4gKiBVc2FnZSB3aXRoIG5vbi1kZWZhdWx0IG5vdGlmaWNhdGlvbjpcbiAqIGBgYHRzXG4gKiBjb25zdCBkdyA9IG5ldyB3YXRjaGZ1bHYyLldhdGNoZnVsKHRoaXMsICdXYXRjaGZ1bCcsIHtcbiAqICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICogICBub3RpZmljYXRpb246IG5ldyBkYXRhZG9ndjIuU2xhY2tOb3RpZmljYXRpb24oe2NoYW5uZWw6ICd0ZWFtLWFsZXJ0LWNoYW5uZWwnfSlcbiAqIH0pO1xuICogZHcud2F0Y2hTY29wZSh0aGlzKTtcbiAqYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBXYXRjaGZ1bCBleHRlbmRzIEFic3RyYWN0V2F0Y2hmdWwge1xuICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvbjogSU5vdGlmaWNhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXYXRjaGZ1bFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuc2VydmljZU5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZSA/PyBTdGFjay5vZih0aGlzKS5zdGFja05hbWU7XG5cbiAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IHByb3BzLm5vdGlmaWNhdGlvbiA/PyBuZXcgRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgYWxhcm1Ub3BpYyBhcyBhbGFybSBhY3Rpb24gdG8gdGhlIGdpdmVuIGFsYXJtLlxuICAgKlxuICAgKiBAcGFyYW0gYWxhcm0gLSBUaGUgd2F0Y2hmdWwgdG8gYWRkIHRob3NlIHJlc291cmNlcyB0b1xuICAgKi9cbiAgcHVibGljIGNyZWF0ZUFsYXJtKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGFsYXJtOiBNZXRyaWNBbGFybVByb3BzKTogdm9pZCB7XG4gICAgbmV3IERhdGFEb2dNZXRyaWNBbGFybShzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiB0aGlzLnNlcnZpY2VOYW1lLFxuICAgICAgbm90aWZpY2F0aW9uOiB0aGlzLm5vdGlmaWNhdGlvbixcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IGFsYXJtLmFsYXJtRGVzY3JpcHRpb24sXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGFsYXJtLmNvbXBhcmlzb25PcGVyYXRvcixcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBhbGFybS5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgIG1ldHJpYzogYWxhcm0ubWV0cmljLFxuICAgICAgdGhyZXNob2xkOiBhbGFybS50aHJlc2hvbGQsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBhbGFybS50cmVhdE1pc3NpbmdEYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gYWxlcnQgZm9yIGVycm9yIGxvZ3NcbiAgICogQHBhcmFtIHNjb3BlXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlTG9nQWxhcm0oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYWxhcm06IExvZ0FsYXJtUHJvcHMpOnZvaWQge1xuXG4gICAgbmV3IERhdGFEb2dMb2dBbGFybShzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBhbGFybS5sYW1iZGFDbG91ZHdhdGNoR3JvdXBOYW1lID8/IHRoaXMuc2VydmljZU5hbWUsXG4gICAgICBhdXRvQ2xvc2VPcHNHZW5pZUFsZXJ0czogYWxhcm0uYXV0b0Nsb3NlT3BzR2VuaWVBbGVydHMsXG4gICAgICBwZXJpb2Q6IGFsYXJtLnBlcmlvZCxcbiAgICAgIHVuaXRPZlBlcmlvZDogYWxhcm0udW5pdE9mUGVyaW9kLCAvLyB0b0RvOiBtb3ZlIHRoYXQgc29tZXdoZXJlIGVsc2UgYW5kIHNldCBkZWZhdWx0cyB0aGVyZT9cbiAgICAgIHBlcmlvZE9wZXJhdG9yOiBhbGFybS5wZXJpb2RPcGVyYXRvcixcbiAgICAgIHN0YXRpc3RpYzogYWxhcm0uc3RhdGlzdGljLFxuICAgICAgcXVlcnlGaWx0ZXJzOiBhbGFybS5xdWVyeUZpbHRlcnMsIC8vIHRvRG86IG1vdmUgdGhhdCBzb21ld2hlcmUgZWxzZSBhbmQgc2V0IGRlZmF1bHRzIHRoZXJlP1xuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYWxhcm0uYWxhcm1EZXNjcmlwdGlvbixcbiAgICAgIHRocmVzaG9sZDogYWxhcm0udGhyZXNob2xkLFxuICAgICAgcHJpb3JpdHk6IGFsYXJtLnByaW9yaXR5LFxuICAgICAgaW5kZXg6IGFsYXJtLmluZGV4LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoZXMgdGhlIGdpdmVuIHNjb3BlIGFuZCBhZGRzIGFsYXJtcyBmb3Iga25vd24gcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIHdhdGNoU2NvcGUoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGNvbnN0IGFzcGVjdCA9IG5ldyBXYXRjaGZ1bEFzcGVjdCh0aGlzKTtcbiAgICBBc3BlY3RzLm9mKHNjb3BlKS5hZGQoYXNwZWN0KTtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -15,9 +15,14 @@
|
|
|
15
15
|
],
|
|
16
16
|
"main": "lib/index.js",
|
|
17
17
|
"license": "Apache-2.0",
|
|
18
|
-
"version": "4.
|
|
18
|
+
"version": "4.14.0",
|
|
19
19
|
"types": "lib/index.d.ts",
|
|
20
20
|
"stability": "stable",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": "./lib/index.js",
|
|
23
|
+
"./datadogv2": "./lib/datadogv2/index.js",
|
|
24
|
+
"./watchfulv2": "./lib/watchfulv2/index.js"
|
|
25
|
+
},
|
|
21
26
|
"jsii": {
|
|
22
27
|
"outdir": "dist",
|
|
23
28
|
"targets": {},
|
|
@@ -47,7 +52,8 @@
|
|
|
47
52
|
"release:check-last-commit": "node release-commit-check.js",
|
|
48
53
|
"release:build": "npm run build && npm run bump",
|
|
49
54
|
"release:push": "echo '✅ pushing release' && git push origin master --follow-tags",
|
|
50
|
-
"release": "npm run release:check-last-commit && npm run release:build"
|
|
55
|
+
"release": "npm run release:check-last-commit && npm run release:build",
|
|
56
|
+
"release:dry-run": "npm run build && npm run release:check && standard-version --dry-run"
|
|
51
57
|
},
|
|
52
58
|
"devDependencies": {
|
|
53
59
|
"@types/jest": "27.4.1",
|
|
@@ -55,15 +61,16 @@
|
|
|
55
61
|
"@types/node": "17.0.23",
|
|
56
62
|
"@typescript-eslint/eslint-plugin": "5.18.0",
|
|
57
63
|
"@typescript-eslint/parser": "5.18.0",
|
|
58
|
-
"aws-cdk": "
|
|
59
|
-
"aws-cdk-lib": "
|
|
60
|
-
"constructs": "10.
|
|
64
|
+
"aws-cdk": "~2.81.0",
|
|
65
|
+
"aws-cdk-lib": "2.81.0",
|
|
66
|
+
"constructs": "10.2.69",
|
|
61
67
|
"copyfiles": "2.4.1",
|
|
62
68
|
"esbuild": "0.14.32",
|
|
63
69
|
"eslint": "8.12.0",
|
|
64
70
|
"eslint-import-resolver-node": "0.3.6",
|
|
65
71
|
"eslint-import-resolver-typescript": "2.7.1",
|
|
66
72
|
"eslint-plugin-import": "2.26.0",
|
|
73
|
+
"eslint-plugin-tsdoc": "^0.2.17",
|
|
67
74
|
"jest": "~27.5.1 ",
|
|
68
75
|
"jest-junit": "13.1.0",
|
|
69
76
|
"jsii": "~1.78.0",
|
|
@@ -74,8 +81,8 @@
|
|
|
74
81
|
"typescript": "~4.6.4"
|
|
75
82
|
},
|
|
76
83
|
"peerDependencies": {
|
|
77
|
-
"aws-cdk-lib": "
|
|
78
|
-
"constructs": "^10.
|
|
84
|
+
"aws-cdk-lib": "~2.81.0",
|
|
85
|
+
"constructs": "^10.2.69"
|
|
79
86
|
},
|
|
80
87
|
"dependencies": {
|
|
81
88
|
"js-yaml": "~4.1.0"
|
|
@@ -124,5 +131,8 @@
|
|
|
124
131
|
"tsconfig": "tsconfig.dev.json"
|
|
125
132
|
}
|
|
126
133
|
}
|
|
127
|
-
}
|
|
134
|
+
},
|
|
135
|
+
"bundleDependencies": [
|
|
136
|
+
"js-yaml"
|
|
137
|
+
]
|
|
128
138
|
}
|
package/version.json
CHANGED