@rio-cloud/cdk-v2-constructs 2.5.1 → 2.5.2

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 CHANGED
@@ -4092,6 +4092,112 @@
4092
4092
  ],
4093
4093
  "symbolId": "src/datadog/datadogLogIndexMonitoring:DatadogLogQuotaProps"
4094
4094
  },
4095
+ "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoring": {
4096
+ "assembly": "@rio-cloud/cdk-v2-constructs",
4097
+ "base": "constructs.Construct",
4098
+ "docs": {
4099
+ "stability": "stable"
4100
+ },
4101
+ "fqn": "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoring",
4102
+ "initializer": {
4103
+ "docs": {
4104
+ "stability": "stable"
4105
+ },
4106
+ "locationInModule": {
4107
+ "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4108
+ "line": 30
4109
+ },
4110
+ "parameters": [
4111
+ {
4112
+ "name": "scope",
4113
+ "type": {
4114
+ "fqn": "constructs.Construct"
4115
+ }
4116
+ },
4117
+ {
4118
+ "name": "id",
4119
+ "type": {
4120
+ "primitive": "string"
4121
+ }
4122
+ },
4123
+ {
4124
+ "name": "props",
4125
+ "type": {
4126
+ "fqn": "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoringProps"
4127
+ }
4128
+ }
4129
+ ]
4130
+ },
4131
+ "kind": "class",
4132
+ "locationInModule": {
4133
+ "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4134
+ "line": 29
4135
+ },
4136
+ "name": "DatadogUsageMonitoring",
4137
+ "symbolId": "src/contributions/team-claid/datadog/datadog-usage-monitoring:DatadogUsageMonitoring"
4138
+ },
4139
+ "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoringProps": {
4140
+ "assembly": "@rio-cloud/cdk-v2-constructs",
4141
+ "datatype": true,
4142
+ "docs": {
4143
+ "stability": "stable"
4144
+ },
4145
+ "fqn": "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoringProps",
4146
+ "kind": "interface",
4147
+ "locationInModule": {
4148
+ "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4149
+ "line": 23
4150
+ },
4151
+ "name": "DatadogUsageMonitoringProps",
4152
+ "properties": [
4153
+ {
4154
+ "abstract": true,
4155
+ "docs": {
4156
+ "stability": "stable"
4157
+ },
4158
+ "immutable": true,
4159
+ "locationInModule": {
4160
+ "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4161
+ "line": 25
4162
+ },
4163
+ "name": "alertType",
4164
+ "type": {
4165
+ "primitive": "string"
4166
+ }
4167
+ },
4168
+ {
4169
+ "abstract": true,
4170
+ "docs": {
4171
+ "stability": "stable"
4172
+ },
4173
+ "immutable": true,
4174
+ "locationInModule": {
4175
+ "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4176
+ "line": 26
4177
+ },
4178
+ "name": "organization",
4179
+ "type": {
4180
+ "primitive": "string"
4181
+ }
4182
+ },
4183
+ {
4184
+ "abstract": true,
4185
+ "docs": {
4186
+ "stability": "stable"
4187
+ },
4188
+ "immutable": true,
4189
+ "locationInModule": {
4190
+ "filename": "src/contributions/team-claid/datadog/datadog-usage-monitoring.ts",
4191
+ "line": 24
4192
+ },
4193
+ "name": "serviceName",
4194
+ "type": {
4195
+ "primitive": "string"
4196
+ }
4197
+ }
4198
+ ],
4199
+ "symbolId": "src/contributions/team-claid/datadog/datadog-usage-monitoring:DatadogUsageMonitoringProps"
4200
+ },
4095
4201
  "@rio-cloud/cdk-v2-constructs.FargateTaskDefinitionProps": {
4096
4202
  "assembly": "@rio-cloud/cdk-v2-constructs",
4097
4203
  "datatype": true,
@@ -6380,112 +6486,6 @@
6380
6486
  "name": "UnitOfPeriod",
6381
6487
  "symbolId": "src/watchful/datadog-log-alarm:UnitOfPeriod"
6382
6488
  },
6383
- "@rio-cloud/cdk-v2-constructs.UsageMonitoring": {
6384
- "assembly": "@rio-cloud/cdk-v2-constructs",
6385
- "base": "constructs.Construct",
6386
- "docs": {
6387
- "stability": "stable"
6388
- },
6389
- "fqn": "@rio-cloud/cdk-v2-constructs.UsageMonitoring",
6390
- "initializer": {
6391
- "docs": {
6392
- "stability": "stable"
6393
- },
6394
- "locationInModule": {
6395
- "filename": "src/contributions/team-claid/datadog/usage-monitoring.ts",
6396
- "line": 30
6397
- },
6398
- "parameters": [
6399
- {
6400
- "name": "scope",
6401
- "type": {
6402
- "fqn": "constructs.Construct"
6403
- }
6404
- },
6405
- {
6406
- "name": "id",
6407
- "type": {
6408
- "primitive": "string"
6409
- }
6410
- },
6411
- {
6412
- "name": "props",
6413
- "type": {
6414
- "fqn": "@rio-cloud/cdk-v2-constructs.UsageMonitoringProps"
6415
- }
6416
- }
6417
- ]
6418
- },
6419
- "kind": "class",
6420
- "locationInModule": {
6421
- "filename": "src/contributions/team-claid/datadog/usage-monitoring.ts",
6422
- "line": 29
6423
- },
6424
- "name": "UsageMonitoring",
6425
- "symbolId": "src/contributions/team-claid/datadog/usage-monitoring:UsageMonitoring"
6426
- },
6427
- "@rio-cloud/cdk-v2-constructs.UsageMonitoringProps": {
6428
- "assembly": "@rio-cloud/cdk-v2-constructs",
6429
- "datatype": true,
6430
- "docs": {
6431
- "stability": "stable"
6432
- },
6433
- "fqn": "@rio-cloud/cdk-v2-constructs.UsageMonitoringProps",
6434
- "kind": "interface",
6435
- "locationInModule": {
6436
- "filename": "src/contributions/team-claid/datadog/usage-monitoring.ts",
6437
- "line": 17
6438
- },
6439
- "name": "UsageMonitoringProps",
6440
- "properties": [
6441
- {
6442
- "abstract": true,
6443
- "docs": {
6444
- "stability": "stable"
6445
- },
6446
- "immutable": true,
6447
- "locationInModule": {
6448
- "filename": "src/contributions/team-claid/datadog/usage-monitoring.ts",
6449
- "line": 19
6450
- },
6451
- "name": "alertType",
6452
- "type": {
6453
- "primitive": "string"
6454
- }
6455
- },
6456
- {
6457
- "abstract": true,
6458
- "docs": {
6459
- "stability": "stable"
6460
- },
6461
- "immutable": true,
6462
- "locationInModule": {
6463
- "filename": "src/contributions/team-claid/datadog/usage-monitoring.ts",
6464
- "line": 20
6465
- },
6466
- "name": "organization",
6467
- "type": {
6468
- "primitive": "string"
6469
- }
6470
- },
6471
- {
6472
- "abstract": true,
6473
- "docs": {
6474
- "stability": "stable"
6475
- },
6476
- "immutable": true,
6477
- "locationInModule": {
6478
- "filename": "src/contributions/team-claid/datadog/usage-monitoring.ts",
6479
- "line": 18
6480
- },
6481
- "name": "serviceName",
6482
- "type": {
6483
- "primitive": "string"
6484
- }
6485
- }
6486
- ],
6487
- "symbolId": "src/contributions/team-claid/datadog/usage-monitoring:UsageMonitoringProps"
6488
- },
6489
6489
  "@rio-cloud/cdk-v2-constructs.WatchApplicationLoadBalancer": {
6490
6490
  "assembly": "@rio-cloud/cdk-v2-constructs",
6491
6491
  "base": "constructs.Construct",
@@ -8361,5 +8361,5 @@
8361
8361
  }
8362
8362
  },
8363
8363
  "version": "0.0.0",
8364
- "fingerprint": "dte+8vB0DqG7X/HrsuaP7sCljQ0lY8wacZCfjzyVKZg="
8364
+ "fingerprint": "MSHB3zTXI0ldPPBRHDgX/h7r1x/rZSrfXtBI/Uq7VA0="
8365
8365
  }
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [2.5.2](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.1&sourceBranch=refs%2Ftags%2Fv2.5.2) (2022-07-28)
6
+
5
7
  ### [2.5.1](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.0&sourceBranch=refs%2Ftags%2Fv2.5.1) (2022-07-28)
6
8
 
7
9
  ## [2.5.0](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.4.2&sourceBranch=refs%2Ftags%2Fv2.5.0) (2022-07-28)
@@ -1,12 +1,12 @@
1
1
  import * as constructs from 'constructs';
2
2
  import { DatadogAlertType } from '../../../datadog/datadogMonitor';
3
3
  export declare type DatadogOrganization = 'EU' | 'LATAM' | 'Landing Zone';
4
- export interface UsageMonitoringProps {
4
+ export interface DatadogUsageMonitoringProps {
5
5
  readonly serviceName: string;
6
6
  readonly alertType: DatadogAlertType;
7
7
  readonly organization: DatadogOrganization;
8
8
  }
9
- export declare class UsageMonitoring extends constructs.Construct {
10
- constructor(scope: constructs.Construct, id: string, props: UsageMonitoringProps);
9
+ export declare class DatadogUsageMonitoring extends constructs.Construct {
10
+ constructor(scope: constructs.Construct, id: string, props: DatadogUsageMonitoringProps);
11
11
  private createAnomalyMonitorForSpikes;
12
12
  }
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DatadogUsageMonitoring = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const constructs = require("constructs");
7
+ const datadogMonitor_1 = require("../../../datadog/datadogMonitor");
8
+ function getOrganizationUrlPrefix(organization) {
9
+ switch (organization) {
10
+ case 'EU':
11
+ return 'app';
12
+ case 'LATAM':
13
+ return 'rio-brazil';
14
+ case 'Landing Zone':
15
+ return 'rio-landingzone';
16
+ }
17
+ }
18
+ class DatadogUsageMonitoring extends constructs.Construct {
19
+ constructor(scope, id, props) {
20
+ super(scope, id);
21
+ const additionalMessageForLogIndexScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage?tpl_var_datadog_index={{datadog_index.name}} for more details.`;
22
+ const additionalMessageForEnvScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage?tpl_var_env={{env.name}} for more details.`;
23
+ const infrastructureUsageSpikeMonitors = [
24
+ {
25
+ humanReadableName: 'infrastructure hosts',
26
+ query: 'sum:datadog.estimated_usage.hosts{*}',
27
+ },
28
+ {
29
+ humanReadableName: "infrastructure hosts for '{{child_org_name.name}}'",
30
+ query: 'sum:datadog.estimated_usage.hosts{*} by {child_org_name}',
31
+ },
32
+ { humanReadableName: 'Fargate tasks', query: 'sum:datadog.apm.fargate_task_instance{*}' },
33
+ { humanReadableName: 'profiled Fargate tasks', query: 'sum:datadog.profiling.fargate{*}' },
34
+ {
35
+ humanReadableName: 'custom metrics',
36
+ query: 'sum:datadog.estimated_usage.metrics.custom{*}',
37
+ },
38
+ {
39
+ humanReadableName: "custom metrics for '{{child_org_name.name}}'",
40
+ query: 'sum:datadog.estimated_usage.metrics.custom{*} by {child_org_name}',
41
+ },
42
+ ];
43
+ const logManagementUsageSpikeMonitors = [
44
+ {
45
+ humanReadableName: 'log ingestion',
46
+ query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*}.as_count()',
47
+ },
48
+ {
49
+ humanReadableName: "log ingestion for '{{datadog_index.name}}'",
50
+ query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*} by {datadog_index}.as_count()',
51
+ additionalMessage: additionalMessageForLogIndexScopedMonitors,
52
+ },
53
+ {
54
+ humanReadableName: 'log indexing',
55
+ query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false}.as_count()',
56
+ },
57
+ {
58
+ humanReadableName: "log indexing for '{{datadog_index.name}}'",
59
+ query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false} by {datadog_index}.as_count()',
60
+ additionalMessage: additionalMessageForLogIndexScopedMonitors,
61
+ },
62
+ ];
63
+ const apmUsageSpikeMonitors = [
64
+ { humanReadableName: 'APM hosts', query: 'sum:datadog.estimated_usage.apm_hosts{*}' },
65
+ {
66
+ humanReadableName: "APM hosts for '{{child_org_name.name}}'",
67
+ query: 'sum:datadog.estimated_usage.apm_hosts{*} by {child_org_name}',
68
+ },
69
+ {
70
+ humanReadableName: 'span ingestion',
71
+ query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*}.as_count()',
72
+ },
73
+ {
74
+ humanReadableName: "span ingestion for '{{env.name}}'",
75
+ query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*} by {env}.as_count()',
76
+ additionalMessage: additionalMessageForEnvScopedMonitors,
77
+ },
78
+ {
79
+ humanReadableName: 'span indexing',
80
+ query: 'sum:datadog.estimated_usage.apm.indexed_spans{*}.as_count()',
81
+ },
82
+ {
83
+ humanReadableName: "span indexing for '{{env.name}}'",
84
+ query: 'sum:datadog.estimated_usage.apm.indexed_spans{*} by {env}.as_count()',
85
+ additionalMessage: additionalMessageForEnvScopedMonitors,
86
+ },
87
+ ];
88
+ const syntheticUsageSpikeMonitors = [
89
+ {
90
+ humanReadableName: 'Synthetic API tests',
91
+ query: 'sum:datadog.estimated_usage.synthetics.api_test_runs{*}.as_count()',
92
+ },
93
+ ];
94
+ const serverlessUsageSpikeMonitors = [
95
+ {
96
+ humanReadableName: 'serverless functions',
97
+ query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*}',
98
+ },
99
+ {
100
+ humanReadableName: "serverless functions for '{{child_org_name.name}}'",
101
+ query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*} by {child_org_name}',
102
+ },
103
+ ];
104
+ for (const usageSpikeMonitor of [].concat(infrastructureUsageSpikeMonitors, logManagementUsageSpikeMonitors, apmUsageSpikeMonitors, serverlessUsageSpikeMonitors, syntheticUsageSpikeMonitors)) {
105
+ this.createAnomalyMonitorForSpikes(props.serviceName, props.alertType, usageSpikeMonitor);
106
+ }
107
+ }
108
+ createAnomalyMonitorForSpikes(serviceName, alertType, usageSpikeMonitor) {
109
+ var _b;
110
+ return new datadogMonitor_1.DatadogMonitor(this, usageSpikeMonitor.humanReadableName, {
111
+ serviceName,
112
+ alertTypes: [alertType],
113
+ monitor: {
114
+ name: `${usageSpikeMonitor.humanReadableName} spike`,
115
+ type: 'query alert',
116
+ query: `avg(last_4h):anomalies(${usageSpikeMonitor.query}, \'agile\', 2, direction=\'above\', interval=60, alert_window=\'last_15m\', seasonality=\'weekly\', timezone=\'Europe/Berlin\', count_default_zero=\'true\') >= 1`,
117
+ message: `${usageSpikeMonitor.humanReadableName} are getting out-of-control. ${(_b = usageSpikeMonitor.additionalMessage) !== null && _b !== void 0 ? _b : ''}`,
118
+ options: {
119
+ include_tags: false,
120
+ notify_no_data: false,
121
+ threshold_windows: {
122
+ trigger_window: 'last_15m',
123
+ recovery_window: 'last_15m',
124
+ },
125
+ },
126
+ },
127
+ });
128
+ }
129
+ }
130
+ exports.DatadogUsageMonitoring = DatadogUsageMonitoring;
131
+ _a = JSII_RTTI_SYMBOL_1;
132
+ DatadogUsageMonitoring[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoring", version: "0.0.0" };
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nL2RhdGFkb2ctdXNhZ2UtbW9uaXRvcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlDQUF5QztBQUN6QyxvRUFBbUY7QUFJbkYsU0FBUyx3QkFBd0IsQ0FBQyxZQUFpQztJQUNqRSxRQUFRLFlBQVksRUFBRTtRQUNwQixLQUFLLElBQUk7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLEtBQUssT0FBTztZQUNWLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLEtBQUssY0FBYztZQUNqQixPQUFPLGlCQUFpQixDQUFDO0tBQzVCO0FBQ0gsQ0FBQztBQWNELE1BQWEsc0JBQXVCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDOUQsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUFrQztRQUNyRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sMENBQTBDLEdBQUcsMEJBQTBCLHdCQUF3QixDQUNuRyxLQUFLLENBQUMsWUFBWSxDQUNuQixrSUFBa0ksQ0FBQztRQUNwSSxNQUFNLHFDQUFxQyxHQUFHLDBCQUEwQix3QkFBd0IsQ0FDOUYsS0FBSyxDQUFDLFlBQVksQ0FDbkIsMEdBQTBHLENBQUM7UUFFNUcsTUFBTSxnQ0FBZ0MsR0FBd0I7WUFDNUQ7Z0JBQ0UsaUJBQWlCLEVBQUUsc0JBQXNCO2dCQUN6QyxLQUFLLEVBQUUsc0NBQXNDO2FBQzlDO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsb0RBQW9EO2dCQUN2RSxLQUFLLEVBQUUsMERBQTBEO2FBQ2xFO1lBQ0QsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLDBDQUEwQyxFQUFFO1lBQ3pGLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLGtD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b0JBQ3JCLGlCQUFpQixFQUFFO3dCQUNqQixjQUFjLEVBQUUsVUFBVTt3QkFDMUIsZUFBZSxFQUFFLFVBQVU7cUJBQzVCO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXRJSCx3REF1SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ0FsZXJ0VHlwZSwgRGF0YWRvZ01vbml0b3IgfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9nL2RhdGFkb2dNb25pdG9yJztcblxuZXhwb3J0IHR5cGUgRGF0YWRvZ09yZ2FuaXphdGlvbiA9ICdFVScgfCAnTEFUQU0nIHwgJ0xhbmRpbmcgWm9uZSc7XG5cbmZ1bmN0aW9uIGdldE9yZ2FuaXphdGlvblVybFByZWZpeChvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb24pOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9yZ2FuaXphdGlvbikge1xuICAgIGNhc2UgJ0VVJzpcbiAgICAgIHJldHVybiAnYXBwJztcbiAgICBjYXNlICdMQVRBTSc6XG4gICAgICByZXR1cm4gJ3Jpby1icmF6aWwnO1xuICAgIGNhc2UgJ0xhbmRpbmcgWm9uZSc6XG4gICAgICByZXR1cm4gJ3Jpby1sYW5kaW5nem9uZSc7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFVzYWdlU3Bpa2VNb25pdG9yIHtcbiAgaHVtYW5SZWFkYWJsZU5hbWU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWRkaXRpb25hbE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ1VzYWdlTW9uaXRvcmluZ1Byb3BzIHtcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYWxlcnRUeXBlOiBEYXRhZG9nQWxlcnRUeXBlO1xuICByZWFkb25seSBvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VGb3JMb2dJbmRleFNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDY1L2xvZy1tYW5hZ2VtZW50LWVzdGltYXRlZC11c2FnZT90cGxfdmFyX2RhdGFkb2dfaW5kZXg9e3tkYXRhZG9nX2luZGV4Lm5hbWV9fSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VGb3JFbnZTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ4OS9hcG0tdHJhY2VzLWVzdGltYXRlZC11c2FnZT90cGxfdmFyX2Vudj17e2Vudi5uYW1lfX0gZm9yIG1vcmUgZGV0YWlscy5gO1xuXG4gICAgY29uc3QgaW5mcmFzdHJ1Y3R1cmVVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnaW5mcmFzdHJ1Y3R1cmUgaG9zdHMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJpbmZyYXN0cnVjdHVyZSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnRmFyZ2F0ZSB0YXNrcycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuYXBtLmZhcmdhdGVfdGFza19pbnN0YW5jZXsqfScgfSxcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdwcm9maWxlZCBGYXJnYXRlIHRhc2tzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5wcm9maWxpbmcuZmFyZ2F0ZXsqfScgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdjdXN0b20gbWV0cmljcycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImN1c3RvbSBtZXRyaWNzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgbG9nTWFuYWdlbWVudFVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdsb2cgaW5nZXN0aW9uJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ieXRlc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmdlc3Rpb24gZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlRm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnbG9nIGluZGV4aW5nJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ldmVudHN7ZGF0YWRvZ19pc19leGNsdWRlZDpmYWxzZX0uYXNfY291bnQoKScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJsb2cgaW5kZXhpbmcgZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTpcbiAgICAgICAgICAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlRm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IGFwbVVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdBUE0gaG9zdHMnLCBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG1faG9zdHN7Kn0nIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcIkFQTSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG1faG9zdHN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NwYW4gaW5nZXN0aW9uJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZ2VzdGVkX2J5dGVzeyp9LmFzX2NvdW50KCknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic3BhbiBpbmdlc3Rpb24gZm9yICd7e2Vudi5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmdlc3RlZF9ieXRlc3sqfSBieSB7ZW52fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlRm9yRW52U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NwYW4gaW5kZXhpbmcnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5kZXhlZF9zcGFuc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNwYW4gaW5kZXhpbmcgZm9yICd7e2Vudi5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmRleGVkX3NwYW5zeyp9IGJ5IHtlbnZ9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VGb3JFbnZTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHN5bnRoZXRpY1VzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdTeW50aGV0aWMgQVBJIHRlc3RzJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc3ludGhldGljcy5hcGlfdGVzdF9ydW5zeyp9LmFzX2NvdW50KCknLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc2VydmVybGVzc1VzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzZXJ2ZXJsZXNzIGZ1bmN0aW9ucycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnNlcnZlcmxlc3MuYXdzX2xhbWJkYV9mdW5jdGlvbnN7Kn0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic2VydmVybGVzcyBmdW5jdGlvbnMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc2VydmVybGVzcy5hd3NfbGFtYmRhX2Z1bmN0aW9uc3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgdXNhZ2VTcGlrZU1vbml0b3Igb2YgKFtdIGFzIFVzYWdlU3Bpa2VNb25pdG9yW10pLmNvbmNhdChcbiAgICAgIGluZnJhc3RydWN0dXJlVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgbG9nTWFuYWdlbWVudFVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGFwbVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgKSkge1xuICAgICAgdGhpcy5jcmVhdGVBbm9tYWx5TW9uaXRvckZvclNwaWtlcyhwcm9wcy5zZXJ2aWNlTmFtZSwgcHJvcHMuYWxlcnRUeXBlLCB1c2FnZVNwaWtlTW9uaXRvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbm9tYWx5TW9uaXRvckZvclNwaWtlcyhcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIGFsZXJ0VHlwZTogRGF0YWRvZ0FsZXJ0VHlwZSxcbiAgICB1c2FnZVNwaWtlTW9uaXRvcjogVXNhZ2VTcGlrZU1vbml0b3IsXG4gICk6IERhdGFkb2dNb25pdG9yIHtcbiAgICByZXR1cm4gbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsIHVzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lLCB7XG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGFsZXJ0VHlwZXM6IFthbGVydFR5cGVdLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBuYW1lOiBgJHt1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZX0gc3Bpa2VgLFxuICAgICAgICB0eXBlOiAncXVlcnkgYWxlcnQnLFxuICAgICAgICBxdWVyeTogYGF2ZyhsYXN0XzRoKTphbm9tYWxpZXMoJHt1c2FnZVNwaWtlTW9uaXRvci5xdWVyeX0sIFxcJ2FnaWxlXFwnLCAyLCBkaXJlY3Rpb249XFwnYWJvdmVcXCcsIGludGVydmFsPTYwLCBhbGVydF93aW5kb3c9XFwnbGFzdF8xNW1cXCcsIHNlYXNvbmFsaXR5PVxcJ3dlZWtseVxcJywgdGltZXpvbmU9XFwnRXVyb3BlL0JlcmxpblxcJywgY291bnRfZGVmYXVsdF96ZXJvPVxcJ3RydWVcXCcpID49IDFgLFxuICAgICAgICBtZXNzYWdlOiBgJHt1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZX0gYXJlIGdldHRpbmcgb3V0LW9mLWNvbnRyb2wuICR7XG4gICAgICAgICAgdXNhZ2VTcGlrZU1vbml0b3IuYWRkaXRpb25hbE1lc3NhZ2UgPz8gJydcbiAgICAgICAgfWAsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBpbmNsdWRlX3RhZ3M6IGZhbHNlLFxuICAgICAgICAgIG5vdGlmeV9ub19kYXRhOiBmYWxzZSxcbiAgICAgICAgICB0aHJlc2hvbGRfd2luZG93czoge1xuICAgICAgICAgICAgdHJpZ2dlcl93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgICByZWNvdmVyeV93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export * from './backup-monitor';
2
- export * from './usage-monitoring';
2
+ export * from './datadog-usage-monitoring';
@@ -11,5 +11,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./backup-monitor"), exports);
14
- __exportStar(require("./usage-monitoring"), exports);
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2cvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWlDO0FBQ2pDLHFEQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFja3VwLW1vbml0b3InO1xuZXhwb3J0ICogZnJvbSAnLi91c2FnZS1tb25pdG9yaW5nJztcbiJdfQ==
14
+ __exportStar(require("./datadog-usage-monitoring"), exports);
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2cvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWlDO0FBQ2pDLDZEQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFja3VwLW1vbml0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcnO1xuIl19
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  ],
16
16
  "main": "lib/index.js",
17
17
  "license": "Apache-2.0",
18
- "version": "2.5.1",
18
+ "version": "2.5.2",
19
19
  "types": "lib/index.d.ts",
20
20
  "stability": "stable",
21
21
  "jsii": {
package/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "2.5.1"
2
+ "version": "2.5.2"
3
3
  }
@@ -1,133 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.UsageMonitoring = void 0;
5
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const constructs = require("constructs");
7
- const datadogMonitor_1 = require("../../../datadog/datadogMonitor");
8
- function getOrganizationUrlPrefix(organization) {
9
- switch (organization) {
10
- case 'EU':
11
- return 'app';
12
- case 'LATAM':
13
- return 'rio-brazil';
14
- case 'Landing Zone':
15
- return 'rio-landingzone';
16
- }
17
- }
18
- class UsageMonitoring extends constructs.Construct {
19
- constructor(scope, id, props) {
20
- super(scope, id);
21
- const additionalMessageForLogIndexScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage?tpl_var_datadog_index={{datadog_index.name}} for more details.`;
22
- const additionalMessageForEnvScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage?tpl_var_env={{env.name}} for more details.`;
23
- const infrastructureUsageSpikeMonitors = [
24
- {
25
- humanReadableName: 'infrastructure hosts',
26
- query: 'sum:datadog.estimated_usage.hosts{*}',
27
- },
28
- {
29
- humanReadableName: "infrastructure hosts for '{{child_org_name.name}}'",
30
- query: 'sum:datadog.estimated_usage.hosts{*} by {child_org_name}',
31
- },
32
- { humanReadableName: 'Fargate tasks', query: 'sum:datadog.apm.fargate_task_instance{*}' },
33
- { humanReadableName: 'profiled Fargate tasks', query: 'sum:datadog.profiling.fargate{*}' },
34
- {
35
- humanReadableName: 'custom metrics',
36
- query: 'sum:datadog.estimated_usage.metrics.custom{*}',
37
- },
38
- {
39
- humanReadableName: "custom metrics for '{{child_org_name.name}}'",
40
- query: 'sum:datadog.estimated_usage.metrics.custom{*} by {child_org_name}',
41
- },
42
- ];
43
- const logManagementUsageSpikeMonitors = [
44
- {
45
- humanReadableName: 'log ingestion',
46
- query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*}.as_count()',
47
- },
48
- {
49
- humanReadableName: "log ingestion for '{{datadog_index.name}}'",
50
- query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*} by {datadog_index}.as_count()',
51
- additionalMessage: additionalMessageForLogIndexScopedMonitors,
52
- },
53
- {
54
- humanReadableName: 'log indexing',
55
- query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false}.as_count()',
56
- },
57
- {
58
- humanReadableName: "log indexing for '{{datadog_index.name}}'",
59
- query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false} by {datadog_index}.as_count()',
60
- additionalMessage: additionalMessageForLogIndexScopedMonitors,
61
- },
62
- ];
63
- const apmUsageSpikeMonitors = [
64
- { humanReadableName: 'APM hosts', query: 'sum:datadog.estimated_usage.apm_hosts{*}' },
65
- {
66
- humanReadableName: "APM hosts for '{{child_org_name.name}}'",
67
- query: 'sum:datadog.estimated_usage.apm_hosts{*} by {child_org_name}',
68
- },
69
- {
70
- humanReadableName: 'span ingestion',
71
- query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*}.as_count()',
72
- },
73
- {
74
- humanReadableName: "span ingestion for '{{env.name}}'",
75
- query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*} by {env}.as_count()',
76
- additionalMessage: additionalMessageForEnvScopedMonitors,
77
- },
78
- {
79
- humanReadableName: 'span indexing',
80
- query: 'sum:datadog.estimated_usage.apm.indexed_spans{*}.as_count()',
81
- },
82
- {
83
- humanReadableName: "span indexing for '{{env.name}}'",
84
- query: 'sum:datadog.estimated_usage.apm.indexed_spans{*} by {env}.as_count()',
85
- additionalMessage: additionalMessageForEnvScopedMonitors,
86
- },
87
- ];
88
- const syntheticUsageSpikeMonitors = [
89
- {
90
- humanReadableName: 'Synthetic API tests',
91
- query: 'sum:datadog.estimated_usage.synthetics.api_test_runs{*}.as_count()',
92
- },
93
- ];
94
- const serverlessUsageSpikeMonitors = [
95
- {
96
- humanReadableName: 'serverless functions',
97
- query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*}',
98
- },
99
- {
100
- humanReadableName: "serverless functions for '{{child_org_name.name}}'",
101
- query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*} by {child_org_name}',
102
- },
103
- ];
104
- for (const usageSpikeMonitor of [].concat(infrastructureUsageSpikeMonitors, logManagementUsageSpikeMonitors, apmUsageSpikeMonitors, serverlessUsageSpikeMonitors, syntheticUsageSpikeMonitors)) {
105
- this.createAnomalyMonitorForSpikes(props.serviceName, props.alertType, usageSpikeMonitor);
106
- }
107
- }
108
- createAnomalyMonitorForSpikes(serviceName, alertType, usageSpikeMonitor) {
109
- var _b;
110
- return new datadogMonitor_1.DatadogMonitor(this, usageSpikeMonitor.humanReadableName, {
111
- serviceName,
112
- alertTypes: [alertType],
113
- monitor: {
114
- name: `${usageSpikeMonitor.humanReadableName} spike`,
115
- type: 'query alert',
116
- query: `avg(last_4h):anomalies(${usageSpikeMonitor.query}, \'agile\', 2, direction=\'above\', interval=60, alert_window=\'last_15m\', seasonality=\'weekly\', timezone=\'Europe/Berlin\', count_default_zero=\'true\') >= 1`,
117
- message: `${usageSpikeMonitor.humanReadableName} are getting out-of-control. ${(_b = usageSpikeMonitor.additionalMessage) !== null && _b !== void 0 ? _b : ''}`,
118
- options: {
119
- include_tags: false,
120
- notify_no_data: false,
121
- threshold_windows: {
122
- trigger_window: 'last_15m',
123
- recovery_window: 'last_15m',
124
- },
125
- },
126
- },
127
- });
128
- }
129
- }
130
- exports.UsageMonitoring = UsageMonitoring;
131
- _a = JSII_RTTI_SYMBOL_1;
132
- UsageMonitoring[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.UsageMonitoring", version: "0.0.0" };
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UtbW9uaXRvcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tY2xhaWQvZGF0YWRvZy91c2FnZS1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUNBQXlDO0FBQ3pDLG9FQUFtRjtBQUluRixTQUFTLHdCQUF3QixDQUFDLFlBQWlDO0lBQ2pFLFFBQVEsWUFBWSxFQUFFO1FBQ3BCLEtBQUssSUFBSTtZQUNQLE9BQU8sS0FBSyxDQUFDO1FBQ2YsS0FBSyxPQUFPO1lBQ1YsT0FBTyxZQUFZLENBQUM7UUFDdEIsS0FBSyxjQUFjO1lBQ2pCLE9BQU8saUJBQWlCLENBQUM7S0FDNUI7QUFDSCxDQUFDO0FBY0QsTUFBYSxlQUFnQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ3ZELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDOUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLDBDQUEwQyxHQUFHLDBCQUEwQix3QkFBd0IsQ0FDbkcsS0FBSyxDQUFDLFlBQVksQ0FDbkIsa0lBQWtJLENBQUM7UUFDcEksTUFBTSxxQ0FBcUMsR0FBRywwQkFBMEIsd0JBQXdCLENBQzlGLEtBQUssQ0FBQyxZQUFZLENBQ25CLDBHQUEwRyxDQUFDO1FBRTVHLE1BQU0sZ0NBQWdDLEdBQXdCO1lBQzVEO2dCQUNFLGlCQUFpQixFQUFFLHNCQUFzQjtnQkFDekMsS0FBSyxFQUFFLHNDQUFzQzthQUM5QztZQUNEO2dCQUNFLGlCQUFpQixFQUFFLG9EQUFvRDtnQkFDdkUsS0FBSyxFQUFFLDBEQUEwRDthQUNsRTtZQUNELEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSwwQ0FBMEMsRUFBRTtZQUN6RixFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxrQ0FBa0MsRUFBRTtZQUMxRjtn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RTt3QkFDakIsY0FBYyxFQUFFLFVBQVU7d0JBQzFCLGVBQWUsRUFBRSxVQUFVO3FCQUM1QjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF0SUgsMENBdUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERhdGFkb2dBbGVydFR5cGUsIERhdGFkb2dNb25pdG9yIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZy9kYXRhZG9nTW9uaXRvcic7XG5cbmV4cG9ydCB0eXBlIERhdGFkb2dPcmdhbml6YXRpb24gPSAnRVUnIHwgJ0xBVEFNJyB8ICdMYW5kaW5nIFpvbmUnO1xuXG5mdW5jdGlvbiBnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgob3JnYW5pemF0aW9uOiBEYXRhZG9nT3JnYW5pemF0aW9uKTogc3RyaW5nIHtcbiAgc3dpdGNoIChvcmdhbml6YXRpb24pIHtcbiAgICBjYXNlICdFVSc6XG4gICAgICByZXR1cm4gJ2FwcCc7XG4gICAgY2FzZSAnTEFUQU0nOlxuICAgICAgcmV0dXJuICdyaW8tYnJhemlsJztcbiAgICBjYXNlICdMYW5kaW5nIFpvbmUnOlxuICAgICAgcmV0dXJuICdyaW8tbGFuZGluZ3pvbmUnO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNhZ2VNb25pdG9yaW5nUHJvcHMge1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBhbGVydFR5cGU6IERhdGFkb2dBbGVydFR5cGU7XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbjogRGF0YWRvZ09yZ2FuaXphdGlvbjtcbn1cblxuaW50ZXJmYWNlIFVzYWdlU3Bpa2VNb25pdG9yIHtcbiAgaHVtYW5SZWFkYWJsZU5hbWU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWRkaXRpb25hbE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBVc2FnZU1vbml0b3JpbmcgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFVzYWdlTW9uaXRvcmluZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlRm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ2NS9sb2ctbWFuYWdlbWVudC1lc3RpbWF0ZWQtdXNhZ2U/dHBsX3Zhcl9kYXRhZG9nX2luZGV4PXt7ZGF0YWRvZ19pbmRleC5uYW1lfX0gZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlRm9yRW52U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80ODkvYXBtLXRyYWNlcy1lc3RpbWF0ZWQtdXNhZ2U/dHBsX3Zhcl9lbnY9e3tlbnYubmFtZX19IGZvciBtb3JlIGRldGFpbHMuYDtcblxuICAgIGNvbnN0IGluZnJhc3RydWN0dXJlVXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2luZnJhc3RydWN0dXJlIGhvc3RzJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuaG9zdHN7Kn0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwiaW5mcmFzdHJ1Y3R1cmUgaG9zdHMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuaG9zdHN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgICAgeyBodW1hblJlYWRhYmxlTmFtZTogJ0ZhcmdhdGUgdGFza3MnLCBxdWVyeTogJ3N1bTpkYXRhZG9nLmFwbS5mYXJnYXRlX3Rhc2tfaW5zdGFuY2V7Kn0nIH0sXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAncHJvZmlsZWQgRmFyZ2F0ZSB0YXNrcycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cucHJvZmlsaW5nLmZhcmdhdGV7Kn0nIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnY3VzdG9tIG1ldHJpY3MnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5tZXRyaWNzLmN1c3RvbXsqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJjdXN0b20gbWV0cmljcyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5tZXRyaWNzLmN1c3RvbXsqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IGxvZ01hbmFnZW1lbnRVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnbG9nIGluZ2VzdGlvbicsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfYnl0ZXN7Kn0uYXNfY291bnQoKScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJsb2cgaW5nZXN0aW9uIGZvciAne3tkYXRhZG9nX2luZGV4Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ieXRlc3sqfSBieSB7ZGF0YWRvZ19pbmRleH0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2xvZyBpbmRleGluZycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9LmFzX2NvdW50KCknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwibG9nIGluZGV4aW5nIGZvciAne3tkYXRhZG9nX2luZGV4Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6XG4gICAgICAgICAgJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2V2ZW50c3tkYXRhZG9nX2lzX2V4Y2x1ZGVkOmZhbHNlfSBieSB7ZGF0YWRvZ19pbmRleH0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBhcG1Vc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnQVBNIGhvc3RzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9JyB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJBUE0gaG9zdHMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZ2VzdGlvbicsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmdlc3RlZF9ieXRlc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNwYW4gaW5nZXN0aW9uIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5nZXN0ZWRfYnl0ZXN7Kn0gYnkge2Vudn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUZvckVudlNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZGV4aW5nJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZGV4ZWRfc3BhbnN7Kn0uYXNfY291bnQoKScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJzcGFuIGluZGV4aW5nIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5kZXhlZF9zcGFuc3sqfSBieSB7ZW52fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlRm9yRW52U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnU3ludGhldGljIEFQSSB0ZXN0cycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnN5bnRoZXRpY3MuYXBpX3Rlc3RfcnVuc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnc2VydmVybGVzcyBmdW5jdGlvbnMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5zZXJ2ZXJsZXNzLmF3c19sYW1iZGFfZnVuY3Rpb25zeyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNlcnZlcmxlc3MgZnVuY3Rpb25zIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnNlcnZlcmxlc3MuYXdzX2xhbWJkYV9mdW5jdGlvbnN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IHVzYWdlU3Bpa2VNb25pdG9yIG9mIChbXSBhcyBVc2FnZVNwaWtlTW9uaXRvcltdKS5jb25jYXQoXG4gICAgICBpbmZyYXN0cnVjdHVyZVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGxvZ01hbmFnZW1lbnRVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBhcG1Vc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzZXJ2ZXJsZXNzVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgc3ludGhldGljVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICkpIHtcbiAgICAgIHRoaXMuY3JlYXRlQW5vbWFseU1vbml0b3JGb3JTcGlrZXMocHJvcHMuc2VydmljZU5hbWUsIHByb3BzLmFsZXJ0VHlwZSwgdXNhZ2VTcGlrZU1vbml0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5vbWFseU1vbml0b3JGb3JTcGlrZXMoXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICBhbGVydFR5cGU6IERhdGFkb2dBbGVydFR5cGUsXG4gICAgdXNhZ2VTcGlrZU1vbml0b3I6IFVzYWdlU3Bpa2VNb25pdG9yLFxuICApOiBEYXRhZG9nTW9uaXRvciB7XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCB1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZSwge1xuICAgICAgc2VydmljZU5hbWUsXG4gICAgICBhbGVydFR5cGVzOiBbYWxlcnRUeXBlXSxcbiAgICAgIG1vbml0b3I6IHtcbiAgICAgICAgbmFtZTogYCR7dXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWV9IHNwaWtlYCxcbiAgICAgICAgdHlwZTogJ3F1ZXJ5IGFsZXJ0JyxcbiAgICAgICAgcXVlcnk6IGBhdmcobGFzdF80aCk6YW5vbWFsaWVzKCR7dXNhZ2VTcGlrZU1vbml0b3IucXVlcnl9LCBcXCdhZ2lsZVxcJywgMiwgZGlyZWN0aW9uPVxcJ2Fib3ZlXFwnLCBpbnRlcnZhbD02MCwgYWxlcnRfd2luZG93PVxcJ2xhc3RfMTVtXFwnLCBzZWFzb25hbGl0eT1cXCd3ZWVrbHlcXCcsIHRpbWV6b25lPVxcJ0V1cm9wZS9CZXJsaW5cXCcsIGNvdW50X2RlZmF1bHRfemVybz1cXCd0cnVlXFwnKSA+PSAxYCxcbiAgICAgICAgbWVzc2FnZTogYCR7dXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWV9IGFyZSBnZXR0aW5nIG91dC1vZi1jb250cm9sLiAke1xuICAgICAgICAgIHVzYWdlU3Bpa2VNb25pdG9yLmFkZGl0aW9uYWxNZXNzYWdlID8/ICcnXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgaW5jbHVkZV90YWdzOiBmYWxzZSxcbiAgICAgICAgICBub3RpZnlfbm9fZGF0YTogZmFsc2UsXG4gICAgICAgICAgdGhyZXNob2xkX3dpbmRvd3M6IHtcbiAgICAgICAgICAgIHRyaWdnZXJfd2luZG93OiAnbGFzdF8xNW0nLFxuICAgICAgICAgICAgcmVjb3Zlcnlfd2luZG93OiAnbGFzdF8xNW0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=