@rio-cloud/cdk-v2-constructs 2.5.1 → 2.5.4
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 +149 -147
- package/CHANGELOG.md +6 -0
- package/CONTRIBUTION.md +2 -1
- package/lib/contributions/team-claid/{datadog/backup-monitor.d.ts → aws-backup-monitoring/aws-backup-monitoring.d.ts} +2 -2
- package/lib/contributions/team-claid/aws-backup-monitoring/aws-backup-monitoring.js +48 -0
- package/lib/contributions/team-claid/aws-backup-monitoring/index.d.ts +1 -0
- package/lib/contributions/team-claid/aws-backup-monitoring/index.js +14 -0
- package/lib/contributions/team-claid/{datadog/usage-monitoring.d.ts → datadog-usage-monitoring/datadog-usage-monitoring.d.ts} +7 -3
- package/lib/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.js +152 -0
- package/lib/contributions/team-claid/datadog-usage-monitoring/index.d.ts +1 -0
- package/lib/contributions/team-claid/{datadog → datadog-usage-monitoring}/index.js +2 -3
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -2
- package/package.json +1 -1
- package/version.json +1 -1
- package/lib/contributions/team-claid/datadog/backup-monitor.js +0 -39
- package/lib/contributions/team-claid/datadog/index.d.ts +0 -2
- package/lib/contributions/team-claid/datadog/usage-monitoring.js +0 -133
package/.jsii
CHANGED
|
@@ -2990,46 +2990,6 @@
|
|
|
2990
2990
|
}
|
|
2991
2991
|
},
|
|
2992
2992
|
"types": {
|
|
2993
|
-
"@rio-cloud/cdk-v2-constructs.AWSBackupMonitors": {
|
|
2994
|
-
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
2995
|
-
"base": "constructs.Construct",
|
|
2996
|
-
"docs": {
|
|
2997
|
-
"remarks": "The construct creates monitors for AWS Backup jobs",
|
|
2998
|
-
"stability": "stable",
|
|
2999
|
-
"summary": "This is a beta construct and is likely to have breaking changes."
|
|
3000
|
-
},
|
|
3001
|
-
"fqn": "@rio-cloud/cdk-v2-constructs.AWSBackupMonitors",
|
|
3002
|
-
"initializer": {
|
|
3003
|
-
"docs": {
|
|
3004
|
-
"stability": "stable"
|
|
3005
|
-
},
|
|
3006
|
-
"locationInModule": {
|
|
3007
|
-
"filename": "src/contributions/team-claid/datadog/backup-monitor.ts",
|
|
3008
|
-
"line": 13
|
|
3009
|
-
},
|
|
3010
|
-
"parameters": [
|
|
3011
|
-
{
|
|
3012
|
-
"name": "scope",
|
|
3013
|
-
"type": {
|
|
3014
|
-
"fqn": "constructs.Construct"
|
|
3015
|
-
}
|
|
3016
|
-
},
|
|
3017
|
-
{
|
|
3018
|
-
"name": "id",
|
|
3019
|
-
"type": {
|
|
3020
|
-
"primitive": "string"
|
|
3021
|
-
}
|
|
3022
|
-
}
|
|
3023
|
-
]
|
|
3024
|
-
},
|
|
3025
|
-
"kind": "class",
|
|
3026
|
-
"locationInModule": {
|
|
3027
|
-
"filename": "src/contributions/team-claid/datadog/backup-monitor.ts",
|
|
3028
|
-
"line": 12
|
|
3029
|
-
},
|
|
3030
|
-
"name": "AWSBackupMonitors",
|
|
3031
|
-
"symbolId": "src/contributions/team-claid/datadog/backup-monitor:AWSBackupMonitors"
|
|
3032
|
-
},
|
|
3033
2993
|
"@rio-cloud/cdk-v2-constructs.AppStackProps": {
|
|
3034
2994
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
3035
2995
|
"datatype": true,
|
|
@@ -3080,6 +3040,46 @@
|
|
|
3080
3040
|
],
|
|
3081
3041
|
"symbolId": "src/contributions/team-transport-two/pipeline/pipeline-stack:AppStackProps"
|
|
3082
3042
|
},
|
|
3043
|
+
"@rio-cloud/cdk-v2-constructs.AwsBackupMonitoring": {
|
|
3044
|
+
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
3045
|
+
"base": "constructs.Construct",
|
|
3046
|
+
"docs": {
|
|
3047
|
+
"remarks": "The construct creates monitoring for AWS Backup jobs",
|
|
3048
|
+
"stability": "stable",
|
|
3049
|
+
"summary": "This is a beta construct and is likely to have breaking changes."
|
|
3050
|
+
},
|
|
3051
|
+
"fqn": "@rio-cloud/cdk-v2-constructs.AwsBackupMonitoring",
|
|
3052
|
+
"initializer": {
|
|
3053
|
+
"docs": {
|
|
3054
|
+
"stability": "stable"
|
|
3055
|
+
},
|
|
3056
|
+
"locationInModule": {
|
|
3057
|
+
"filename": "src/contributions/team-claid/aws-backup-monitoring/aws-backup-monitoring.ts",
|
|
3058
|
+
"line": 15
|
|
3059
|
+
},
|
|
3060
|
+
"parameters": [
|
|
3061
|
+
{
|
|
3062
|
+
"name": "scope",
|
|
3063
|
+
"type": {
|
|
3064
|
+
"fqn": "constructs.Construct"
|
|
3065
|
+
}
|
|
3066
|
+
},
|
|
3067
|
+
{
|
|
3068
|
+
"name": "id",
|
|
3069
|
+
"type": {
|
|
3070
|
+
"primitive": "string"
|
|
3071
|
+
}
|
|
3072
|
+
}
|
|
3073
|
+
]
|
|
3074
|
+
},
|
|
3075
|
+
"kind": "class",
|
|
3076
|
+
"locationInModule": {
|
|
3077
|
+
"filename": "src/contributions/team-claid/aws-backup-monitoring/aws-backup-monitoring.ts",
|
|
3078
|
+
"line": 14
|
|
3079
|
+
},
|
|
3080
|
+
"name": "AwsBackupMonitoring",
|
|
3081
|
+
"symbolId": "src/contributions/team-claid/aws-backup-monitoring/aws-backup-monitoring:AwsBackupMonitoring"
|
|
3082
|
+
},
|
|
3083
3083
|
"@rio-cloud/cdk-v2-constructs.Claidometer": {
|
|
3084
3084
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
3085
3085
|
"base": "constructs.Construct",
|
|
@@ -4092,6 +4092,114 @@
|
|
|
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
|
+
"remarks": "The construct creates monitoring (based on anomaly detection) for the usage of the most relevant Datadog resources",
|
|
4100
|
+
"stability": "stable",
|
|
4101
|
+
"summary": "This is a beta construct and is likely to have breaking changes."
|
|
4102
|
+
},
|
|
4103
|
+
"fqn": "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoring",
|
|
4104
|
+
"initializer": {
|
|
4105
|
+
"docs": {
|
|
4106
|
+
"stability": "stable"
|
|
4107
|
+
},
|
|
4108
|
+
"locationInModule": {
|
|
4109
|
+
"filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
|
|
4110
|
+
"line": 36
|
|
4111
|
+
},
|
|
4112
|
+
"parameters": [
|
|
4113
|
+
{
|
|
4114
|
+
"name": "scope",
|
|
4115
|
+
"type": {
|
|
4116
|
+
"fqn": "constructs.Construct"
|
|
4117
|
+
}
|
|
4118
|
+
},
|
|
4119
|
+
{
|
|
4120
|
+
"name": "id",
|
|
4121
|
+
"type": {
|
|
4122
|
+
"primitive": "string"
|
|
4123
|
+
}
|
|
4124
|
+
},
|
|
4125
|
+
{
|
|
4126
|
+
"name": "props",
|
|
4127
|
+
"type": {
|
|
4128
|
+
"fqn": "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoringProps"
|
|
4129
|
+
}
|
|
4130
|
+
}
|
|
4131
|
+
]
|
|
4132
|
+
},
|
|
4133
|
+
"kind": "class",
|
|
4134
|
+
"locationInModule": {
|
|
4135
|
+
"filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
|
|
4136
|
+
"line": 35
|
|
4137
|
+
},
|
|
4138
|
+
"name": "DatadogUsageMonitoring",
|
|
4139
|
+
"symbolId": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring:DatadogUsageMonitoring"
|
|
4140
|
+
},
|
|
4141
|
+
"@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoringProps": {
|
|
4142
|
+
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
4143
|
+
"datatype": true,
|
|
4144
|
+
"docs": {
|
|
4145
|
+
"stability": "stable"
|
|
4146
|
+
},
|
|
4147
|
+
"fqn": "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoringProps",
|
|
4148
|
+
"kind": "interface",
|
|
4149
|
+
"locationInModule": {
|
|
4150
|
+
"filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
|
|
4151
|
+
"line": 25
|
|
4152
|
+
},
|
|
4153
|
+
"name": "DatadogUsageMonitoringProps",
|
|
4154
|
+
"properties": [
|
|
4155
|
+
{
|
|
4156
|
+
"abstract": true,
|
|
4157
|
+
"docs": {
|
|
4158
|
+
"stability": "stable"
|
|
4159
|
+
},
|
|
4160
|
+
"immutable": true,
|
|
4161
|
+
"locationInModule": {
|
|
4162
|
+
"filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
|
|
4163
|
+
"line": 27
|
|
4164
|
+
},
|
|
4165
|
+
"name": "alertType",
|
|
4166
|
+
"type": {
|
|
4167
|
+
"primitive": "string"
|
|
4168
|
+
}
|
|
4169
|
+
},
|
|
4170
|
+
{
|
|
4171
|
+
"abstract": true,
|
|
4172
|
+
"docs": {
|
|
4173
|
+
"stability": "stable"
|
|
4174
|
+
},
|
|
4175
|
+
"immutable": true,
|
|
4176
|
+
"locationInModule": {
|
|
4177
|
+
"filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
|
|
4178
|
+
"line": 28
|
|
4179
|
+
},
|
|
4180
|
+
"name": "organization",
|
|
4181
|
+
"type": {
|
|
4182
|
+
"primitive": "string"
|
|
4183
|
+
}
|
|
4184
|
+
},
|
|
4185
|
+
{
|
|
4186
|
+
"abstract": true,
|
|
4187
|
+
"docs": {
|
|
4188
|
+
"stability": "stable"
|
|
4189
|
+
},
|
|
4190
|
+
"immutable": true,
|
|
4191
|
+
"locationInModule": {
|
|
4192
|
+
"filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
|
|
4193
|
+
"line": 26
|
|
4194
|
+
},
|
|
4195
|
+
"name": "serviceName",
|
|
4196
|
+
"type": {
|
|
4197
|
+
"primitive": "string"
|
|
4198
|
+
}
|
|
4199
|
+
}
|
|
4200
|
+
],
|
|
4201
|
+
"symbolId": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring:DatadogUsageMonitoringProps"
|
|
4202
|
+
},
|
|
4095
4203
|
"@rio-cloud/cdk-v2-constructs.FargateTaskDefinitionProps": {
|
|
4096
4204
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
4097
4205
|
"datatype": true,
|
|
@@ -6380,112 +6488,6 @@
|
|
|
6380
6488
|
"name": "UnitOfPeriod",
|
|
6381
6489
|
"symbolId": "src/watchful/datadog-log-alarm:UnitOfPeriod"
|
|
6382
6490
|
},
|
|
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
6491
|
"@rio-cloud/cdk-v2-constructs.WatchApplicationLoadBalancer": {
|
|
6490
6492
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
6491
6493
|
"base": "constructs.Construct",
|
|
@@ -8361,5 +8363,5 @@
|
|
|
8361
8363
|
}
|
|
8362
8364
|
},
|
|
8363
8365
|
"version": "0.0.0",
|
|
8364
|
-
"fingerprint": "
|
|
8366
|
+
"fingerprint": "vOr//f16Fo35AhSD4dRPQBwBHnZXUUIsEjV00WBbqRE="
|
|
8365
8367
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
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.4](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.3&sourceBranch=refs%2Ftags%2Fv2.5.4) (2022-07-28)
|
|
6
|
+
|
|
7
|
+
### [2.5.3](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.2&sourceBranch=refs%2Ftags%2Fv2.5.3) (2022-07-28)
|
|
8
|
+
|
|
9
|
+
### [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)
|
|
10
|
+
|
|
5
11
|
### [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
12
|
|
|
7
13
|
## [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)
|
package/CONTRIBUTION.md
CHANGED
|
@@ -87,7 +87,8 @@ The file must contain the following information.
|
|
|
87
87
|
|
|
88
88
|
#### Provide a `CHANGELOG.md` file
|
|
89
89
|
|
|
90
|
-
* Use [semantic versioning](https://semver.org/) (make sure to update the `Claidometer` construct accordingly on new
|
|
90
|
+
* Use [semantic versioning](https://semver.org/) (make sure to update the `Claidometer` construct accordingly on new releases)
|
|
91
|
+
* Reference the corresponding construct library's version
|
|
91
92
|
* Describe the changes, e.g.,
|
|
92
93
|
> * 🎉 new feature released
|
|
93
94
|
> * 🐛 bug squashed
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Construct } from 'constructs';
|
|
2
2
|
/**
|
|
3
3
|
* This is a beta construct and is likely to have breaking changes.
|
|
4
|
-
* The construct creates
|
|
4
|
+
* The construct creates monitoring for AWS Backup jobs
|
|
5
5
|
*/
|
|
6
|
-
export declare class
|
|
6
|
+
export declare class AwsBackupMonitoring extends Construct {
|
|
7
7
|
constructor(scope: Construct, id: string);
|
|
8
8
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.AwsBackupMonitoring = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
|
+
const constructs_1 = require("constructs");
|
|
9
|
+
const rio_claidometer_1 = require("../../../rio-claidometer");
|
|
10
|
+
/**
|
|
11
|
+
* This is a beta construct and is likely to have breaking changes.
|
|
12
|
+
* The construct creates monitoring for AWS Backup jobs
|
|
13
|
+
*/
|
|
14
|
+
class AwsBackupMonitoring extends constructs_1.Construct {
|
|
15
|
+
constructor(scope, id) {
|
|
16
|
+
super(scope, id);
|
|
17
|
+
const teamName = aws_cdk_lib_1.aws_ssm.StringParameter.fromStringParameterName(this, 'TeamName', '/config/team/name').stringValue;
|
|
18
|
+
new aws_cdk_lib_1.CfnResource(this, 'BackupMonitoringCopyJobs', {
|
|
19
|
+
type: 'Datadog::Monitors::Monitor',
|
|
20
|
+
properties: {
|
|
21
|
+
Name: `[P4] : ${teamName} AWS Backup Copy Job to central account failed`,
|
|
22
|
+
Type: 'query alert',
|
|
23
|
+
Query: `sum(last_1d):sum:aws.backup.number_of_copy_jobs_failed{account_id:${aws_cdk_lib_1.Stack.of(this).account}}.as_count() > 0`,
|
|
24
|
+
Message: `AWS Backup Copy job to central backup account has failed @opsgenie-${teamName}.\nCheck the job under AWS Backup -> Jobs -> Copy Jobs`,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
new aws_cdk_lib_1.CfnResource(this, 'BackupMonitoringJob', {
|
|
28
|
+
type: 'Datadog::Monitors::Monitor',
|
|
29
|
+
properties: {
|
|
30
|
+
Name: `[P4] : ${teamName} AWS Backup Job Monitor`,
|
|
31
|
+
Type: 'query alert',
|
|
32
|
+
Query: `sum(last_1d):sum:aws.backup.number_of_backup_jobs_failed{account_id:${aws_cdk_lib_1.Stack.of(this).account}}.as_count() > 0`,
|
|
33
|
+
Message: `AWS Backup job has failed @opsgenie-${teamName}.\nCheck the job under AWS Backup -> Jobs -> Backup Jobs`,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const [feature, packageName] = __dirname.split(path.sep).reverse();
|
|
37
|
+
new rio_claidometer_1.Claidometer(this, 'Claidometer', {
|
|
38
|
+
product: rio_claidometer_1.ClaidometerProduct.CDK_CONTRIBUTION,
|
|
39
|
+
packageName,
|
|
40
|
+
feature,
|
|
41
|
+
version: '0.0.4',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.AwsBackupMonitoring = AwsBackupMonitoring;
|
|
46
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
47
|
+
AwsBackupMonitoring[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.AwsBackupMonitoring", version: "0.0.0" };
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWJhY2t1cC1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9hd3MtYmFja3VwLW1vbml0b3JpbmcvYXdzLWJhY2t1cC1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDZDQUlxQjtBQUNyQiwyQ0FBdUM7QUFDdkMsOERBQTJFO0FBRTNFOzs7R0FHRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsc0JBQVM7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFFBQVEsR0FBRyxxQkFBTyxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBRXBILElBQUkseUJBQVcsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUU7WUFDaEQsSUFBSSxFQUFFLDRCQUE0QjtZQUNsQyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFVBQVUsUUFBUSxnREFBZ0Q7Z0JBQ3hFLElBQUksRUFBRSxhQUFhO2dCQUNuQixLQUFLLEVBQUUscUVBQXFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sa0JBQWtCO2dCQUNwSCxPQUFPLEVBQUUsc0VBQXNFLFFBQVEsd0RBQXdEO2FBQ2hKO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSx5QkFBVyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUMzQyxJQUFJLEVBQUUsNEJBQTRCO1lBQ2xDLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsVUFBVSxRQUFRLHlCQUF5QjtnQkFDakQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSx1RUFBdUUsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxrQkFBa0I7Z0JBQ3RILE9BQU8sRUFBRSx1Q0FBdUMsUUFBUSwwREFBMEQ7YUFDbkg7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25FLElBQUksNkJBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxvQ0FBa0IsQ0FBQyxnQkFBZ0I7WUFDNUMsV0FBVztZQUNYLE9BQU87WUFDUCxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWpDSCxrREFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgQ2ZuUmVzb3VyY2UsXG4gIFN0YWNrLFxuICBhd3Nfc3NtLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IENsYWlkb21ldGVyLCBDbGFpZG9tZXRlclByb2R1Y3QgfSBmcm9tICcuLi8uLi8uLi9yaW8tY2xhaWRvbWV0ZXInO1xuXG4vKipcbiAqIFRoaXMgaXMgYSBiZXRhIGNvbnN0cnVjdCBhbmQgaXMgbGlrZWx5IHRvIGhhdmUgYnJlYWtpbmcgY2hhbmdlcy5cbiAqIFRoZSBjb25zdHJ1Y3QgY3JlYXRlcyBtb25pdG9yaW5nIGZvciBBV1MgQmFja3VwIGpvYnNcbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0JhY2t1cE1vbml0b3JpbmcgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHRlYW1OYW1lID0gYXdzX3NzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgJ1RlYW1OYW1lJywgJy9jb25maWcvdGVhbS9uYW1lJykuc3RyaW5nVmFsdWU7XG5cbiAgICBuZXcgQ2ZuUmVzb3VyY2UodGhpcywgJ0JhY2t1cE1vbml0b3JpbmdDb3B5Sm9icycsIHtcbiAgICAgIHR5cGU6ICdEYXRhZG9nOjpNb25pdG9yczo6TW9uaXRvcicsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIE5hbWU6IGBbUDRdIDogJHt0ZWFtTmFtZX0gQVdTIEJhY2t1cCBDb3B5IEpvYiB0byBjZW50cmFsIGFjY291bnQgZmFpbGVkYCxcbiAgICAgICAgVHlwZTogJ3F1ZXJ5IGFsZXJ0JyxcbiAgICAgICAgUXVlcnk6IGBzdW0obGFzdF8xZCk6c3VtOmF3cy5iYWNrdXAubnVtYmVyX29mX2NvcHlfam9ic19mYWlsZWR7YWNjb3VudF9pZDoke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9fS5hc19jb3VudCgpID4gMGAsXG4gICAgICAgIE1lc3NhZ2U6IGBBV1MgQmFja3VwIENvcHkgam9iIHRvIGNlbnRyYWwgYmFja3VwIGFjY291bnQgaGFzIGZhaWxlZCBAb3BzZ2VuaWUtJHt0ZWFtTmFtZX0uXFxuQ2hlY2sgdGhlIGpvYiB1bmRlciBBV1MgQmFja3VwIC0+IEpvYnMgLT4gQ29weSBKb2JzYCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuUmVzb3VyY2UodGhpcywgJ0JhY2t1cE1vbml0b3JpbmdKb2InLCB7XG4gICAgICB0eXBlOiAnRGF0YWRvZzo6TW9uaXRvcnM6Ok1vbml0b3InLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBOYW1lOiBgW1A0XSA6ICR7dGVhbU5hbWV9IEFXUyBCYWNrdXAgSm9iIE1vbml0b3JgLFxuICAgICAgICBUeXBlOiAncXVlcnkgYWxlcnQnLFxuICAgICAgICBRdWVyeTogYHN1bShsYXN0XzFkKTpzdW06YXdzLmJhY2t1cC5udW1iZXJfb2ZfYmFja3VwX2pvYnNfZmFpbGVke2FjY291bnRfaWQ6JHtTdGFjay5vZih0aGlzKS5hY2NvdW50fX0uYXNfY291bnQoKSA+IDBgLFxuICAgICAgICBNZXNzYWdlOiBgQVdTIEJhY2t1cCBqb2IgaGFzIGZhaWxlZCBAb3BzZ2VuaWUtJHt0ZWFtTmFtZX0uXFxuQ2hlY2sgdGhlIGpvYiB1bmRlciBBV1MgQmFja3VwIC0+IEpvYnMgLT4gQmFja3VwIEpvYnNgLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IFtmZWF0dXJlLCBwYWNrYWdlTmFtZV0gPSBfX2Rpcm5hbWUuc3BsaXQocGF0aC5zZXApLnJldmVyc2UoKTtcbiAgICBuZXcgQ2xhaWRvbWV0ZXIodGhpcywgJ0NsYWlkb21ldGVyJywge1xuICAgICAgcHJvZHVjdDogQ2xhaWRvbWV0ZXJQcm9kdWN0LkNES19DT05UUklCVVRJT04sXG4gICAgICBwYWNrYWdlTmFtZSxcbiAgICAgIGZlYXR1cmUsXG4gICAgICB2ZXJzaW9uOiAnMC4wLjQnLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './aws-backup-monitoring';
|
|
@@ -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("./aws-backup-monitoring"), exports);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2F3cy1iYWNrdXAtbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwwREFBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F3cy1iYWNrdXAtbW9uaXRvcmluZyc7XG4iXX0=
|
|
@@ -1,12 +1,16 @@
|
|
|
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
|
|
4
|
+
export interface DatadogUsageMonitoringProps {
|
|
5
5
|
readonly serviceName: string;
|
|
6
6
|
readonly alertType: DatadogAlertType;
|
|
7
7
|
readonly organization: DatadogOrganization;
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* This is a beta construct and is likely to have breaking changes.
|
|
11
|
+
* The construct creates monitoring (based on anomaly detection) for the usage of the most relevant Datadog resources
|
|
12
|
+
*/
|
|
13
|
+
export declare class DatadogUsageMonitoring extends constructs.Construct {
|
|
14
|
+
constructor(scope: constructs.Construct, id: string, props: DatadogUsageMonitoringProps);
|
|
11
15
|
private createAnomalyMonitorForSpikes;
|
|
12
16
|
}
|
|
@@ -0,0 +1,152 @@
|
|
|
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 path = require("path");
|
|
7
|
+
const constructs = require("constructs");
|
|
8
|
+
const datadogMonitor_1 = require("../../../datadog/datadogMonitor");
|
|
9
|
+
const rio_claidometer_1 = require("../../../rio-claidometer");
|
|
10
|
+
function getOrganizationUrlPrefix(organization) {
|
|
11
|
+
switch (organization) {
|
|
12
|
+
case 'EU':
|
|
13
|
+
return 'app';
|
|
14
|
+
case 'LATAM':
|
|
15
|
+
return 'rio-brazil';
|
|
16
|
+
case 'Landing Zone':
|
|
17
|
+
return 'rio-landingzone';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* This is a beta construct and is likely to have breaking changes.
|
|
22
|
+
* The construct creates monitoring (based on anomaly detection) for the usage of the most relevant Datadog resources
|
|
23
|
+
*/
|
|
24
|
+
class DatadogUsageMonitoring extends constructs.Construct {
|
|
25
|
+
constructor(scope, id, props) {
|
|
26
|
+
super(scope, id);
|
|
27
|
+
const infrastructureUsageSpikeMonitors = [
|
|
28
|
+
{
|
|
29
|
+
humanReadableName: 'infrastructure hosts',
|
|
30
|
+
query: 'sum:datadog.estimated_usage.hosts{*}',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
humanReadableName: "infrastructure hosts for '{{child_org_name.name}}'",
|
|
34
|
+
query: 'sum:datadog.estimated_usage.hosts{*} by {child_org_name}',
|
|
35
|
+
},
|
|
36
|
+
{ humanReadableName: 'Fargate tasks', query: 'sum:datadog.apm.fargate_task_instance{*}' },
|
|
37
|
+
{ humanReadableName: 'profiled Fargate tasks', query: 'sum:datadog.profiling.fargate{*}' },
|
|
38
|
+
{
|
|
39
|
+
humanReadableName: 'custom metrics',
|
|
40
|
+
query: 'sum:datadog.estimated_usage.metrics.custom{*}',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
humanReadableName: "custom metrics for '{{child_org_name.name}}'",
|
|
44
|
+
query: 'sum:datadog.estimated_usage.metrics.custom{*} by {child_org_name}',
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
const additionalMessageLogManagementForGloballyScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage for more details.`;
|
|
48
|
+
const additionalMessageLogManagementForLogIndexScopedMonitors = `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.`;
|
|
49
|
+
const logManagementUsageSpikeMonitors = [
|
|
50
|
+
{
|
|
51
|
+
humanReadableName: 'log ingestion',
|
|
52
|
+
query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*}.as_count()',
|
|
53
|
+
additionalMessage: additionalMessageLogManagementForGloballyScopedMonitors,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
humanReadableName: "log ingestion for '{{datadog_index.name}}'",
|
|
57
|
+
query: 'sum:datadog.estimated_usage.logs.ingested_bytes{*} by {datadog_index}.as_count()',
|
|
58
|
+
additionalMessage: additionalMessageLogManagementForLogIndexScopedMonitors,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
humanReadableName: 'log indexing',
|
|
62
|
+
query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false}.as_count()',
|
|
63
|
+
additionalMessage: additionalMessageLogManagementForGloballyScopedMonitors,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
humanReadableName: "log indexing for '{{datadog_index.name}}'",
|
|
67
|
+
query: 'sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false} by {datadog_index}.as_count()',
|
|
68
|
+
additionalMessage: additionalMessageLogManagementForLogIndexScopedMonitors,
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
const additionalMessageApmForGloballyScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage for more details.`;
|
|
72
|
+
const additionalMessageApmForEnvScopedMonitors = `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.`;
|
|
73
|
+
const apmUsageSpikeMonitors = [
|
|
74
|
+
{ humanReadableName: 'APM hosts', query: 'sum:datadog.estimated_usage.apm_hosts{*}' },
|
|
75
|
+
{
|
|
76
|
+
humanReadableName: "APM hosts for '{{child_org_name.name}}'",
|
|
77
|
+
query: 'sum:datadog.estimated_usage.apm_hosts{*} by {child_org_name}',
|
|
78
|
+
additionalMessage: additionalMessageApmForGloballyScopedMonitors,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
humanReadableName: 'span ingestion',
|
|
82
|
+
query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*}.as_count()',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
humanReadableName: "span ingestion for '{{env.name}}'",
|
|
86
|
+
query: 'sum:datadog.estimated_usage.apm.ingested_bytes{*} by {env}.as_count()',
|
|
87
|
+
additionalMessage: additionalMessageApmForEnvScopedMonitors,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
humanReadableName: 'span indexing',
|
|
91
|
+
query: 'sum:datadog.estimated_usage.apm.indexed_spans{*}.as_count()',
|
|
92
|
+
additionalMessage: additionalMessageApmForGloballyScopedMonitors,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
humanReadableName: "span indexing for '{{env.name}}'",
|
|
96
|
+
query: 'sum:datadog.estimated_usage.apm.indexed_spans{*} by {env}.as_count()',
|
|
97
|
+
additionalMessage: additionalMessageApmForEnvScopedMonitors,
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
const syntheticUsageSpikeMonitors = [
|
|
101
|
+
{
|
|
102
|
+
humanReadableName: 'Synthetic API tests',
|
|
103
|
+
query: 'sum:datadog.estimated_usage.synthetics.api_test_runs{*}.as_count()',
|
|
104
|
+
},
|
|
105
|
+
];
|
|
106
|
+
const serverlessUsageSpikeMonitors = [
|
|
107
|
+
{
|
|
108
|
+
humanReadableName: 'serverless functions',
|
|
109
|
+
query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*}',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
humanReadableName: "serverless functions for '{{child_org_name.name}}'",
|
|
113
|
+
query: 'sum:datadog.estimated_usage.serverless.aws_lambda_functions{*} by {child_org_name}',
|
|
114
|
+
},
|
|
115
|
+
];
|
|
116
|
+
for (const usageSpikeMonitor of [].concat(infrastructureUsageSpikeMonitors, logManagementUsageSpikeMonitors, apmUsageSpikeMonitors, serverlessUsageSpikeMonitors, syntheticUsageSpikeMonitors)) {
|
|
117
|
+
this.createAnomalyMonitorForSpikes(props.serviceName, props.alertType, usageSpikeMonitor);
|
|
118
|
+
}
|
|
119
|
+
const [feature, packageName] = __dirname.split(path.sep).reverse();
|
|
120
|
+
new rio_claidometer_1.Claidometer(this, 'Claidometer', {
|
|
121
|
+
product: rio_claidometer_1.ClaidometerProduct.CDK_CONTRIBUTION,
|
|
122
|
+
packageName,
|
|
123
|
+
feature,
|
|
124
|
+
version: '0.0.4',
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
createAnomalyMonitorForSpikes(serviceName, alertType, usageSpikeMonitor) {
|
|
128
|
+
var _b;
|
|
129
|
+
return new datadogMonitor_1.DatadogMonitor(this, usageSpikeMonitor.humanReadableName, {
|
|
130
|
+
serviceName,
|
|
131
|
+
alertTypes: [alertType],
|
|
132
|
+
monitor: {
|
|
133
|
+
name: `${usageSpikeMonitor.humanReadableName} spike`,
|
|
134
|
+
type: 'query alert',
|
|
135
|
+
query: `avg(last_12h):anomalies(${usageSpikeMonitor.query}, 'agile', 3, direction='above', interval=120, alert_window='last_30m', seasonality='weekly', timezone='europe/berlin', count_default_zero='true') >= 1`,
|
|
136
|
+
message: `${usageSpikeMonitor.humanReadableName} are getting out-of-control. ${(_b = usageSpikeMonitor.additionalMessage) !== null && _b !== void 0 ? _b : ''}`,
|
|
137
|
+
options: {
|
|
138
|
+
include_tags: false,
|
|
139
|
+
notify_no_data: false,
|
|
140
|
+
threshold_windows: {
|
|
141
|
+
trigger_window: 'last_30m',
|
|
142
|
+
recovery_window: 'last_15m',
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.DatadogUsageMonitoring = DatadogUsageMonitoring;
|
|
150
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
151
|
+
DatadogUsageMonitoring[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.DatadogUsageMonitoring", version: "0.0.0" };
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcvZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLHlDQUF5QztBQUN6QyxvRUFBbUY7QUFDbkYsOERBQTJFO0FBSTNFLFNBQVMsd0JBQXdCLENBQUMsWUFBaUM7SUFDakUsUUFBUSxZQUFZLEVBQUU7UUFDcEIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLE9BQU87WUFDVixPQUFPLFlBQVksQ0FBQztRQUN0QixLQUFLLGNBQWM7WUFDakIsT0FBTyxpQkFBaUIsQ0FBQztLQUM1QjtBQUNILENBQUM7QUFjRDs7O0dBR0c7QUFDSCxNQUFhLHNCQUF1QixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQzlELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBa0M7UUFDckYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGdDQUFnQyxHQUF3QjtZQUM1RDtnQkFDRSxpQkFBaUIsRUFBRSxzQkFBc0I7Z0JBQ3pDLEtBQUssRUFBRSxzQ0FBc0M7YUFDOUM7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSxvREFBb0Q7Z0JBQ3ZFLEtBQUssRUFBRSwwREFBMEQ7YUFDbEU7WUFDRCxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsMENBQTBDLEVBQUU7WUFDekYsRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsa0NBQWtDLEVBQUU7WUFDMUY7Z0JBQ0UsaUJBQWlCLEVBQUUsZ0JBQWdCO2dCQUNuQyxLQUFLLEVBQUUsK0NBQStDO2FBQ3ZEO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsOENB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RSxhQUFhLEVBQUU7WUFDbkMsT0FBTyxFQUFFLG9DQUFrQixDQUFDLGdCQUFnQjtZQUM1QyxXQUFXO1lBQ1gsT0FBTztZQUNQLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyw2QkFBNkIsQ0FDbkMsV0FBbUIsRUFDbkIsU0FBMkIsRUFDM0IsaUJBQW9DOztRQUVwQyxPQUFPLElBQUksK0JBQWMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUU7WUFDbkUsV0FBVztZQUNYLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN2QixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLFFBQVE7Z0JBQ3BELElBQUksRUFBRSxhQUFhO2dCQUNuQixLQUFLLEVBQUUsMkJBQTJCLGlCQUFpQixDQUFDLEtBQUsseUpBQXlKO2dCQUNsTixPQUFPLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsZ0NBQzdDLE1BQUEsaUJBQWlCLENBQUMsaUJBQWlCLG1DQUFJLEVBQ3pDLEVBQUU7Z0JBQ0YsT0FBTyxFQUFFO29CQUNQLFlBQVksRUFBRSxLQUFLO29CQUNuQixjQUFjLEVBQUUsS0FBSztvQkFDckIsaUJBQWlCLEVBQUU7d0JBQ2pCLGNBQWMsRUFBRSxVQUFVO3dCQUMxQixlQUFlLEVBQUUsVUFBVTtxQkFDNUI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBdEpILHdEQXVKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ0FsZXJ0VHlwZSwgRGF0YWRvZ01vbml0b3IgfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9nL2RhdGFkb2dNb25pdG9yJztcbmltcG9ydCB7IENsYWlkb21ldGVyLCBDbGFpZG9tZXRlclByb2R1Y3QgfSBmcm9tICcuLi8uLi8uLi9yaW8tY2xhaWRvbWV0ZXInO1xuXG5leHBvcnQgdHlwZSBEYXRhZG9nT3JnYW5pemF0aW9uID0gJ0VVJyB8ICdMQVRBTScgfCAnTGFuZGluZyBab25lJztcblxuZnVuY3Rpb24gZ2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KG9yZ2FuaXphdGlvbjogRGF0YWRvZ09yZ2FuaXphdGlvbik6IHN0cmluZyB7XG4gIHN3aXRjaCAob3JnYW5pemF0aW9uKSB7XG4gICAgY2FzZSAnRVUnOlxuICAgICAgcmV0dXJuICdhcHAnO1xuICAgIGNhc2UgJ0xBVEFNJzpcbiAgICAgIHJldHVybiAncmlvLWJyYXppbCc7XG4gICAgY2FzZSAnTGFuZGluZyBab25lJzpcbiAgICAgIHJldHVybiAncmlvLWxhbmRpbmd6b25lJztcbiAgfVxufVxuXG5pbnRlcmZhY2UgVXNhZ2VTcGlrZU1vbml0b3Ige1xuICBodW1hblJlYWRhYmxlTmFtZTogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xuICBhZGRpdGlvbmFsTWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nUHJvcHMge1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBhbGVydFR5cGU6IERhdGFkb2dBbGVydFR5cGU7XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbjogRGF0YWRvZ09yZ2FuaXphdGlvbjtcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGEgYmV0YSBjb25zdHJ1Y3QgYW5kIGlzIGxpa2VseSB0byBoYXZlIGJyZWFraW5nIGNoYW5nZXMuXG4gKiBUaGUgY29uc3RydWN0IGNyZWF0ZXMgbW9uaXRvcmluZyAoYmFzZWQgb24gYW5vbWFseSBkZXRlY3Rpb24pIGZvciB0aGUgdXNhZ2Ugb2YgdGhlIG1vc3QgcmVsZXZhbnQgRGF0YWRvZyByZXNvdXJjZXNcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFkb2dVc2FnZU1vbml0b3JpbmcgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dVc2FnZU1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBpbmZyYXN0cnVjdHVyZVVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdpbmZyYXN0cnVjdHVyZSBob3N0cycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmhvc3Rzeyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImluZnJhc3RydWN0dXJlIGhvc3RzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmhvc3Rzeyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdGYXJnYXRlIHRhc2tzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5hcG0uZmFyZ2F0ZV90YXNrX2luc3RhbmNleyp9JyB9LFxuICAgICAgeyBodW1hblJlYWRhYmxlTmFtZTogJ3Byb2ZpbGVkIEZhcmdhdGUgdGFza3MnLCBxdWVyeTogJ3N1bTpkYXRhZG9nLnByb2ZpbGluZy5mYXJnYXRleyp9JyB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2N1c3RvbSBtZXRyaWNzJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubWV0cmljcy5jdXN0b217Kn0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwiY3VzdG9tIG1ldHJpY3MgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubWV0cmljcy5jdXN0b217Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzID0gYFRha2UgYSBsb29rIGF0IGh0dHBzOi8vJHtnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgoXG4gICAgICBwcm9wcy5vcmdhbml6YXRpb24sXG4gICAgKX0uZGF0YWRvZ2hxLmV1L2Rhc2gvaW50ZWdyYXRpb24vNDY1L2xvZy1tYW5hZ2VtZW50LWVzdGltYXRlZC11c2FnZSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ2NS9sb2ctbWFuYWdlbWVudC1lc3RpbWF0ZWQtdXNhZ2U/dHBsX3Zhcl9kYXRhZG9nX2luZGV4PXt7ZGF0YWRvZ19pbmRleC5uYW1lfX0gZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGxvZ01hbmFnZW1lbnRVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnbG9nIGluZ2VzdGlvbicsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfYnl0ZXN7Kn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwibG9nIGluZ2VzdGlvbiBmb3IgJ3t7ZGF0YWRvZ19pbmRleC5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfYnl0ZXN7Kn0gYnkge2RhdGFkb2dfaW5kZXh9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnbG9nIGluZGV4aW5nJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ldmVudHN7ZGF0YWRvZ19pc19leGNsdWRlZDpmYWxzZX0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUxvZ01hbmFnZW1lbnRGb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwibG9nIGluZGV4aW5nIGZvciAne3tkYXRhZG9nX2luZGV4Lm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ldmVudHN7ZGF0YWRvZ19pc19leGNsdWRlZDpmYWxzZX0gYnkge2RhdGFkb2dfaW5kZXh9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yTG9nSW5kZXhTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ4OS9hcG0tdHJhY2VzLWVzdGltYXRlZC11c2FnZSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JFbnZTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ4OS9hcG0tdHJhY2VzLWVzdGltYXRlZC11c2FnZT90cGxfdmFyX2Vudj17e2Vudi5uYW1lfX0gZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFwbVVzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdBUE0gaG9zdHMnLCBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG1faG9zdHN7Kn0nIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcIkFQTSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG1faG9zdHN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NwYW4gaW5nZXN0aW9uJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZ2VzdGVkX2J5dGVzeyp9LmFzX2NvdW50KCknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic3BhbiBpbmdlc3Rpb24gZm9yICd7e2Vudi5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmdlc3RlZF9ieXRlc3sqfSBieSB7ZW52fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ3NwYW4gaW5kZXhpbmcnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5kZXhlZF9zcGFuc3sqfS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNwYW4gaW5kZXhpbmcgZm9yICd7e2Vudi5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmRleGVkX3NwYW5zeyp9IGJ5IHtlbnZ9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JFbnZTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHN5bnRoZXRpY1VzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdTeW50aGV0aWMgQVBJIHRlc3RzJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc3ludGhldGljcy5hcGlfdGVzdF9ydW5zeyp9LmFzX2NvdW50KCknLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc2VydmVybGVzc1VzYWdlU3Bpa2VNb25pdG9yczogVXNhZ2VTcGlrZU1vbml0b3JbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzZXJ2ZXJsZXNzIGZ1bmN0aW9ucycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnNlcnZlcmxlc3MuYXdzX2xhbWJkYV9mdW5jdGlvbnN7Kn0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6IFwic2VydmVybGVzcyBmdW5jdGlvbnMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2Uuc2VydmVybGVzcy5hd3NfbGFtYmRhX2Z1bmN0aW9uc3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgdXNhZ2VTcGlrZU1vbml0b3Igb2YgKFtdIGFzIFVzYWdlU3Bpa2VNb25pdG9yW10pLmNvbmNhdChcbiAgICAgIGluZnJhc3RydWN0dXJlVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgbG9nTWFuYWdlbWVudFVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGFwbVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgKSkge1xuICAgICAgdGhpcy5jcmVhdGVBbm9tYWx5TW9uaXRvckZvclNwaWtlcyhwcm9wcy5zZXJ2aWNlTmFtZSwgcHJvcHMuYWxlcnRUeXBlLCB1c2FnZVNwaWtlTW9uaXRvcik7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZlYXR1cmUsIHBhY2thZ2VOYW1lXSA9IF9fZGlybmFtZS5zcGxpdChwYXRoLnNlcCkucmV2ZXJzZSgpO1xuICAgIG5ldyBDbGFpZG9tZXRlcih0aGlzLCAnQ2xhaWRvbWV0ZXInLCB7XG4gICAgICBwcm9kdWN0OiBDbGFpZG9tZXRlclByb2R1Y3QuQ0RLX0NPTlRSSUJVVElPTixcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgZmVhdHVyZSxcbiAgICAgIHZlcnNpb246ICcwLjAuNCcsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFub21hbHlNb25pdG9yRm9yU3Bpa2VzKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgYWxlcnRUeXBlOiBEYXRhZG9nQWxlcnRUeXBlLFxuICAgIHVzYWdlU3Bpa2VNb25pdG9yOiBVc2FnZVNwaWtlTW9uaXRvcixcbiAgKTogRGF0YWRvZ01vbml0b3Ige1xuICAgIHJldHVybiBuZXcgRGF0YWRvZ01vbml0b3IodGhpcywgdXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWUsIHtcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgYWxlcnRUeXBlczogW2FsZXJ0VHlwZV0sXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIG5hbWU6IGAke3VzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lfSBzcGlrZWAsXG4gICAgICAgIHR5cGU6ICdxdWVyeSBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgYXZnKGxhc3RfMTJoKTphbm9tYWxpZXMoJHt1c2FnZVNwaWtlTW9uaXRvci5xdWVyeX0sICdhZ2lsZScsIDMsIGRpcmVjdGlvbj0nYWJvdmUnLCBpbnRlcnZhbD0xMjAsIGFsZXJ0X3dpbmRvdz0nbGFzdF8zMG0nLCBzZWFzb25hbGl0eT0nd2Vla2x5JywgdGltZXpvbmU9J2V1cm9wZS9iZXJsaW4nLCBjb3VudF9kZWZhdWx0X3plcm89J3RydWUnKSA+PSAxYCxcbiAgICAgICAgbWVzc2FnZTogYCR7dXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWV9IGFyZSBnZXR0aW5nIG91dC1vZi1jb250cm9sLiAke1xuICAgICAgICAgIHVzYWdlU3Bpa2VNb25pdG9yLmFkZGl0aW9uYWxNZXNzYWdlID8/ICcnXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgaW5jbHVkZV90YWdzOiBmYWxzZSxcbiAgICAgICAgICBub3RpZnlfbm9fZGF0YTogZmFsc2UsXG4gICAgICAgICAgdGhyZXNob2xkX3dpbmRvd3M6IHtcbiAgICAgICAgICAgIHRyaWdnZXJfd2luZG93OiAnbGFzdF8zMG0nLFxuICAgICAgICAgICAgcmVjb3Zlcnlfd2luZG93OiAnbGFzdF8xNW0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './datadog-usage-monitoring';
|
|
@@ -10,6 +10,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2cvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWlDO0FBQ2pDLHFEQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFja3VwLW1vbml0b3InO1xuZXhwb3J0ICogZnJvbSAnLi91c2FnZS1tb25pdG9yaW5nJztcbiJdfQ==
|
|
13
|
+
__exportStar(require("./datadog-usage-monitoring"), exports);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2ctdXNhZ2UtbW9uaXRvcmluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw2REFBMkMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGFkb2ctdXNhZ2UtbW9uaXRvcmluZyc7XG4iXX0=
|
package/lib/index.d.ts
CHANGED
|
@@ -20,4 +20,5 @@ export * from './pipeline/rio-backup-secrets-restore-stage';
|
|
|
20
20
|
export * from './kafka';
|
|
21
21
|
export * from './datadog';
|
|
22
22
|
export * from './contributions/team-transport-two/pipeline';
|
|
23
|
-
export * from './contributions/team-claid/
|
|
23
|
+
export * from './contributions/team-claid/aws-backup-monitoring';
|
|
24
|
+
export * from './contributions/team-claid/datadog-usage-monitoring';
|
package/lib/index.js
CHANGED
|
@@ -32,5 +32,6 @@ __exportStar(require("./pipeline/rio-backup-secrets-restore-stage"), exports);
|
|
|
32
32
|
__exportStar(require("./kafka"), exports);
|
|
33
33
|
__exportStar(require("./datadog"), exports);
|
|
34
34
|
__exportStar(require("./contributions/team-transport-two/pipeline"), exports);
|
|
35
|
-
__exportStar(require("./contributions/team-claid/
|
|
36
|
-
|
|
35
|
+
__exportStar(require("./contributions/team-claid/aws-backup-monitoring"), exports);
|
|
36
|
+
__exportStar(require("./contributions/team-claid/datadog-usage-monitoring"), exports);
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLG9EQUFrQztBQUNsQyxpREFBK0I7QUFDL0IsbURBQWlDO0FBQ2pDLHNEQUFvQztBQUNwQyxvREFBa0M7QUFDbEMseURBQXVDO0FBQ3ZDLGtFQUFnRDtBQUNoRCwrREFBNkM7QUFDN0Msc0RBQW9DO0FBQ3BDLDBEQUF3QztBQUN4QyxpREFBK0I7QUFDL0Isd0RBQXNDO0FBRXRDLHFEQUFtQztBQUNuQyxzREFBb0M7QUFDcEMsb0RBQWtDO0FBRWxDLGdFQUE4QztBQUU5Qyx5RUFBdUQ7QUFDdkQsOEVBQTREO0FBRTVELDBDQUF3QjtBQUV4Qiw0Q0FBMEI7QUFFMUIsOEVBQTREO0FBRTVELG1GQUFpRTtBQUNqRSxzRkFBb0UiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2FsYic7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2FzcGVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2Vjcyc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2RvY2RiJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZHluYW1vZGInO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9sYW1iZGEnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC90YXJnZXRncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2RhdGFkb2ctbWV0cmljLWFsYXJtJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZGF0YWRvZy1sb2ctYWxhcm0nO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC93YXRjaGZ1bCc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL21ldHJpYy1hbGFybSc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL3Jkcyc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2Nsb3VkZnJvbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL3Jpby1sYW5kaW5nLXpvbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9yaW8tbG9hZC1iYWxhbmNlcic7XG5leHBvcnQgKiBmcm9tICcuL3Jpby1jbGFpZG9tZXRlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZmFyZ2F0ZS9yaW8tZmFyZ2F0ZS1zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9yaW8tYml0YnVja2V0LXNvdXJjZS1hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9yaW8tYmFja3VwLXNlY3JldHMtcmVzdG9yZS1zdGFnZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4va2Fma2EnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RhdGFkb2cnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyaWJ1dGlvbnMvdGVhbS10cmFuc3BvcnQtdHdvL3BpcGVsaW5lJztcblxuZXhwb3J0ICogZnJvbSAnLi9jb250cmlidXRpb25zL3RlYW0tY2xhaWQvYXdzLWJhY2t1cC1tb25pdG9yaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2ctdXNhZ2UtbW9uaXRvcmluZyc7XG4iXX0=
|
package/package.json
CHANGED
package/version.json
CHANGED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.AWSBackupMonitors = void 0;
|
|
5
|
-
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
-
const constructs_1 = require("constructs");
|
|
8
|
-
/**
|
|
9
|
-
* This is a beta construct and is likely to have breaking changes.
|
|
10
|
-
* The construct creates monitors for AWS Backup jobs
|
|
11
|
-
*/
|
|
12
|
-
class AWSBackupMonitors extends constructs_1.Construct {
|
|
13
|
-
constructor(scope, id) {
|
|
14
|
-
super(scope, id);
|
|
15
|
-
const teamName = aws_cdk_lib_1.aws_ssm.StringParameter.fromStringParameterName(this, 'TeamName', '/config/team/name').stringValue;
|
|
16
|
-
new aws_cdk_lib_1.CfnResource(this, 'BackupMonitoringCopyJobs', {
|
|
17
|
-
type: 'Datadog::Monitors::Monitor',
|
|
18
|
-
properties: {
|
|
19
|
-
Name: `[P4] : ${teamName} AWS Backup Copy Job to central account failed`,
|
|
20
|
-
Type: 'query alert',
|
|
21
|
-
Query: `sum(last_1d):sum:aws.backup.number_of_copy_jobs_failed{account_id:${aws_cdk_lib_1.Stack.of(this).account}}.as_count() > 0`,
|
|
22
|
-
Message: `AWS Backup Copy job to central backup account has failed @opsgenie-${teamName}.\nCheck the job under AWS Backup -> Jobs -> Copy Jobs`,
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
new aws_cdk_lib_1.CfnResource(this, 'BackupMonitoringJob', {
|
|
26
|
-
type: 'Datadog::Monitors::Monitor',
|
|
27
|
-
properties: {
|
|
28
|
-
Name: `[P4] : ${teamName} AWS Backup Job Monitor`,
|
|
29
|
-
Type: 'query alert',
|
|
30
|
-
Query: `sum(last_1d):sum:aws.backup.number_of_backup_jobs_failed{account_id:${aws_cdk_lib_1.Stack.of(this).account}}.as_count() > 0`,
|
|
31
|
-
Message: `AWS Backup job has failed @opsgenie-${teamName}.\nCheck the job under AWS Backup -> Jobs -> Backup Jobs`,
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.AWSBackupMonitors = AWSBackupMonitors;
|
|
37
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
38
|
-
AWSBackupMonitors[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.AWSBackupMonitors", version: "0.0.0" };
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2RhdGFkb2cvYmFja3VwLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FJcUI7QUFDckIsMkNBQXVDO0FBRXZDOzs7R0FHRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsc0JBQVM7SUFDOUMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFFBQVEsR0FBRyxxQkFBTyxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBRXBILElBQUkseUJBQVcsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUU7WUFDaEQsSUFBSSxFQUFFLDRCQUE0QjtZQUNsQyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFVBQVUsUUFBUSxnREFBZ0Q7Z0JBQ3hFLElBQUksRUFBRSxhQUFhO2dCQUNuQixLQUFLLEVBQUUscUVBQXFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sa0JBQWtCO2dCQUNwSCxPQUFPLEVBQUUsc0VBQXNFLFFBQVEsd0RBQXdEO2FBQ2hKO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSx5QkFBVyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUMzQyxJQUFJLEVBQUUsNEJBQTRCO1lBQ2xDLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsVUFBVSxRQUFRLHlCQUF5QjtnQkFDakQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSx1RUFBdUUsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxrQkFBa0I7Z0JBQ3RILE9BQU8sRUFBRSx1Q0FBdUMsUUFBUSwwREFBMEQ7YUFDbkg7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXpCSCw4Q0EwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDZm5SZXNvdXJjZSxcbiAgU3RhY2ssXG4gIGF3c19zc20sXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFRoaXMgaXMgYSBiZXRhIGNvbnN0cnVjdCBhbmQgaXMgbGlrZWx5IHRvIGhhdmUgYnJlYWtpbmcgY2hhbmdlcy5cbiAqIFRoZSBjb25zdHJ1Y3QgY3JlYXRlcyBtb25pdG9ycyBmb3IgQVdTIEJhY2t1cCBqb2JzXG4gKi9cbmV4cG9ydCBjbGFzcyBBV1NCYWNrdXBNb25pdG9ycyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdGVhbU5hbWUgPSBhd3Nfc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnVGVhbU5hbWUnLCAnL2NvbmZpZy90ZWFtL25hbWUnKS5zdHJpbmdWYWx1ZTtcblxuICAgIG5ldyBDZm5SZXNvdXJjZSh0aGlzLCAnQmFja3VwTW9uaXRvcmluZ0NvcHlKb2JzJywge1xuICAgICAgdHlwZTogJ0RhdGFkb2c6Ok1vbml0b3JzOjpNb25pdG9yJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgTmFtZTogYFtQNF0gOiAke3RlYW1OYW1lfSBBV1MgQmFja3VwIENvcHkgSm9iIHRvIGNlbnRyYWwgYWNjb3VudCBmYWlsZWRgLFxuICAgICAgICBUeXBlOiAncXVlcnkgYWxlcnQnLFxuICAgICAgICBRdWVyeTogYHN1bShsYXN0XzFkKTpzdW06YXdzLmJhY2t1cC5udW1iZXJfb2ZfY29weV9qb2JzX2ZhaWxlZHthY2NvdW50X2lkOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH19LmFzX2NvdW50KCkgPiAwYCxcbiAgICAgICAgTWVzc2FnZTogYEFXUyBCYWNrdXAgQ29weSBqb2IgdG8gY2VudHJhbCBiYWNrdXAgYWNjb3VudCBoYXMgZmFpbGVkIEBvcHNnZW5pZS0ke3RlYW1OYW1lfS5cXG5DaGVjayB0aGUgam9iIHVuZGVyIEFXUyBCYWNrdXAgLT4gSm9icyAtPiBDb3B5IEpvYnNgLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIG5ldyBDZm5SZXNvdXJjZSh0aGlzLCAnQmFja3VwTW9uaXRvcmluZ0pvYicsIHtcbiAgICAgIHR5cGU6ICdEYXRhZG9nOjpNb25pdG9yczo6TW9uaXRvcicsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIE5hbWU6IGBbUDRdIDogJHt0ZWFtTmFtZX0gQVdTIEJhY2t1cCBKb2IgTW9uaXRvcmAsXG4gICAgICAgIFR5cGU6ICdxdWVyeSBhbGVydCcsXG4gICAgICAgIFF1ZXJ5OiBgc3VtKGxhc3RfMWQpOnN1bTphd3MuYmFja3VwLm51bWJlcl9vZl9iYWNrdXBfam9ic19mYWlsZWR7YWNjb3VudF9pZDoke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9fS5hc19jb3VudCgpID4gMGAsXG4gICAgICAgIE1lc3NhZ2U6IGBBV1MgQmFja3VwIGpvYiBoYXMgZmFpbGVkIEBvcHNnZW5pZS0ke3RlYW1OYW1lfS5cXG5DaGVjayB0aGUgam9iIHVuZGVyIEFXUyBCYWNrdXAgLT4gSm9icyAtPiBCYWNrdXAgSm9ic2AsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59Il19
|
|
@@ -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=
|