@cdklabs/multi-az-observability 0.0.1-alpha.4 → 0.0.1-alpha.6
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 +77 -26
- package/API.md +48 -0
- package/cdk.json +1 -1
- package/lib/azmapper/AvailabilityZoneMapper.js +1 -1
- package/lib/basic_observability/BasicServiceMultiAZObservability.js +81 -43
- package/lib/basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.d.ts +18 -0
- package/lib/basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.js +23 -0
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.d.ts +6 -0
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.js +1 -1
- package/lib/canaries/src/canary.zip +0 -0
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +4 -4
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +6 -23
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -2
- package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +2 -2
- package/lib/metrics/ApplicationLoadBalancerMetrics.js +9 -8
- package/lib/metrics/RegionalLatencyMetrics.js +2 -2
- package/lib/metrics/ZonalLatencyMetrics.js +2 -2
- package/lib/monitoring/src/monitoring-layer.zip +0 -0
- package/lib/outlier-detection/src/outlier-detection.zip +0 -0
- package/lib/outlier-detection/src/scipy-layer.zip +0 -0
- package/lib/services/CanaryMetrics.js +1 -1
- package/lib/services/CanaryTestMetricsOverride.js +1 -1
- package/lib/services/ContributorInsightRuleDetails.js +1 -1
- package/lib/services/InstrumentedServiceMultiAZObservability.js +1 -1
- package/lib/services/Operation.js +1 -1
- package/lib/services/OperationMetricDetails.js +1 -1
- package/lib/services/Service.js +1 -1
- package/lib/services/ServiceMetricDetails.js +1 -1
- package/lib/services/props/MetricDimensions.js +1 -1
- package/package.json +2 -2
package/.jsii
CHANGED
|
@@ -4142,6 +4142,39 @@
|
|
|
4142
4142
|
],
|
|
4143
4143
|
"symbolId": "src/canaries/props/AddCanaryTestProps:AddCanaryTestProps"
|
|
4144
4144
|
},
|
|
4145
|
+
"@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation": {
|
|
4146
|
+
"assembly": "@cdklabs/multi-az-observability",
|
|
4147
|
+
"docs": {
|
|
4148
|
+
"stability": "experimental",
|
|
4149
|
+
"summary": "The options for calculating if an AZ is an outlier for latency for ALBs."
|
|
4150
|
+
},
|
|
4151
|
+
"fqn": "@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation",
|
|
4152
|
+
"kind": "enum",
|
|
4153
|
+
"locationInModule": {
|
|
4154
|
+
"filename": "src/basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.ts",
|
|
4155
|
+
"line": 4
|
|
4156
|
+
},
|
|
4157
|
+
"members": [
|
|
4158
|
+
{
|
|
4159
|
+
"docs": {
|
|
4160
|
+
"remarks": "This provides a static comparison\nof the number of high latency requests in one AZ versus the others",
|
|
4161
|
+
"stability": "experimental",
|
|
4162
|
+
"summary": "This will take the latency threshold and count the number of requests per AZ that exceed this threshold and then calculate the percentage of requests exceeding this threshold belong to each AZ."
|
|
4163
|
+
},
|
|
4164
|
+
"name": "STATIC"
|
|
4165
|
+
},
|
|
4166
|
+
{
|
|
4167
|
+
"docs": {
|
|
4168
|
+
"remarks": "It uses\nthe target response time of all requests to calculate the standard deviation and\naverage for all AZs. This is the default.",
|
|
4169
|
+
"stability": "experimental",
|
|
4170
|
+
"summary": "This calculates the z score of latency in one AZ against the other AZs."
|
|
4171
|
+
},
|
|
4172
|
+
"name": "Z_SCORE"
|
|
4173
|
+
}
|
|
4174
|
+
],
|
|
4175
|
+
"name": "ApplicationLoadBalancerLatencyOutlierCalculation",
|
|
4176
|
+
"symbolId": "src/basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation:ApplicationLoadBalancerLatencyOutlierCalculation"
|
|
4177
|
+
},
|
|
4145
4178
|
"@cdklabs/multi-az-observability.AvailabilityZoneMapper": {
|
|
4146
4179
|
"assembly": "@cdklabs/multi-az-observability",
|
|
4147
4180
|
"base": "constructs.Construct",
|
|
@@ -4515,7 +4548,7 @@
|
|
|
4515
4548
|
},
|
|
4516
4549
|
"locationInModule": {
|
|
4517
4550
|
"filename": "src/basic_observability/BasicServiceMultiAZObservability.ts",
|
|
4518
|
-
"line":
|
|
4551
|
+
"line": 87
|
|
4519
4552
|
},
|
|
4520
4553
|
"parameters": [
|
|
4521
4554
|
{
|
|
@@ -4544,7 +4577,7 @@
|
|
|
4544
4577
|
"kind": "class",
|
|
4545
4578
|
"locationInModule": {
|
|
4546
4579
|
"filename": "src/basic_observability/BasicServiceMultiAZObservability.ts",
|
|
4547
|
-
"line":
|
|
4580
|
+
"line": 40
|
|
4548
4581
|
},
|
|
4549
4582
|
"name": "BasicServiceMultiAZObservability",
|
|
4550
4583
|
"properties": [
|
|
@@ -4555,7 +4588,7 @@
|
|
|
4555
4588
|
},
|
|
4556
4589
|
"locationInModule": {
|
|
4557
4590
|
"filename": "src/basic_observability/BasicServiceMultiAZObservability.ts",
|
|
4558
|
-
"line":
|
|
4591
|
+
"line": 75
|
|
4559
4592
|
},
|
|
4560
4593
|
"name": "aggregateZonalIsolatedImpactAlarms",
|
|
4561
4594
|
"overrides": "@cdklabs/multi-az-observability.IBasicServiceMultiAZObservability",
|
|
@@ -4575,7 +4608,7 @@
|
|
|
4575
4608
|
},
|
|
4576
4609
|
"locationInModule": {
|
|
4577
4610
|
"filename": "src/basic_observability/BasicServiceMultiAZObservability.ts",
|
|
4578
|
-
"line":
|
|
4611
|
+
"line": 57
|
|
4579
4612
|
},
|
|
4580
4613
|
"name": "serviceName",
|
|
4581
4614
|
"overrides": "@cdklabs/multi-az-observability.IBasicServiceMultiAZObservability",
|
|
@@ -4590,7 +4623,7 @@
|
|
|
4590
4623
|
},
|
|
4591
4624
|
"locationInModule": {
|
|
4592
4625
|
"filename": "src/basic_observability/BasicServiceMultiAZObservability.ts",
|
|
4593
|
-
"line":
|
|
4626
|
+
"line": 69
|
|
4594
4627
|
},
|
|
4595
4628
|
"name": "albZonalIsolatedImpactAlarms",
|
|
4596
4629
|
"optional": true,
|
|
@@ -4611,7 +4644,7 @@
|
|
|
4611
4644
|
},
|
|
4612
4645
|
"locationInModule": {
|
|
4613
4646
|
"filename": "src/basic_observability/BasicServiceMultiAZObservability.ts",
|
|
4614
|
-
"line":
|
|
4647
|
+
"line": 52
|
|
4615
4648
|
},
|
|
4616
4649
|
"name": "applicationLoadBalancers",
|
|
4617
4650
|
"optional": true,
|
|
@@ -4632,7 +4665,7 @@
|
|
|
4632
4665
|
},
|
|
4633
4666
|
"locationInModule": {
|
|
4634
4667
|
"filename": "src/basic_observability/BasicServiceMultiAZObservability.ts",
|
|
4635
|
-
"line":
|
|
4668
|
+
"line": 80
|
|
4636
4669
|
},
|
|
4637
4670
|
"name": "dashboard",
|
|
4638
4671
|
"optional": true,
|
|
@@ -4647,7 +4680,7 @@
|
|
|
4647
4680
|
},
|
|
4648
4681
|
"locationInModule": {
|
|
4649
4682
|
"filename": "src/basic_observability/BasicServiceMultiAZObservability.ts",
|
|
4650
|
-
"line":
|
|
4683
|
+
"line": 47
|
|
4651
4684
|
},
|
|
4652
4685
|
"name": "natGateways",
|
|
4653
4686
|
"optional": true,
|
|
@@ -4673,7 +4706,7 @@
|
|
|
4673
4706
|
},
|
|
4674
4707
|
"locationInModule": {
|
|
4675
4708
|
"filename": "src/basic_observability/BasicServiceMultiAZObservability.ts",
|
|
4676
|
-
"line":
|
|
4709
|
+
"line": 63
|
|
4677
4710
|
},
|
|
4678
4711
|
"name": "natGWZonalIsolatedImpactAlarms",
|
|
4679
4712
|
"optional": true,
|
|
@@ -4701,7 +4734,7 @@
|
|
|
4701
4734
|
"kind": "interface",
|
|
4702
4735
|
"locationInModule": {
|
|
4703
4736
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4704
|
-
"line":
|
|
4737
|
+
"line": 12
|
|
4705
4738
|
},
|
|
4706
4739
|
"name": "BasicServiceMultiAZObservabilityProps",
|
|
4707
4740
|
"properties": [
|
|
@@ -4714,7 +4747,7 @@
|
|
|
4714
4747
|
"immutable": true,
|
|
4715
4748
|
"locationInModule": {
|
|
4716
4749
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4717
|
-
"line":
|
|
4750
|
+
"line": 124
|
|
4718
4751
|
},
|
|
4719
4752
|
"name": "datapointsToAlarm",
|
|
4720
4753
|
"type": {
|
|
@@ -4730,7 +4763,7 @@
|
|
|
4730
4763
|
"immutable": true,
|
|
4731
4764
|
"locationInModule": {
|
|
4732
4765
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4733
|
-
"line":
|
|
4766
|
+
"line": 119
|
|
4734
4767
|
},
|
|
4735
4768
|
"name": "evaluationPeriods",
|
|
4736
4769
|
"type": {
|
|
@@ -4747,7 +4780,7 @@
|
|
|
4747
4780
|
"immutable": true,
|
|
4748
4781
|
"locationInModule": {
|
|
4749
4782
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4750
|
-
"line":
|
|
4783
|
+
"line": 50
|
|
4751
4784
|
},
|
|
4752
4785
|
"name": "faultCountPercentageThreshold",
|
|
4753
4786
|
"type": {
|
|
@@ -4763,7 +4796,7 @@
|
|
|
4763
4796
|
"immutable": true,
|
|
4764
4797
|
"locationInModule": {
|
|
4765
4798
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4766
|
-
"line":
|
|
4799
|
+
"line": 62
|
|
4767
4800
|
},
|
|
4768
4801
|
"name": "latencyStatistic",
|
|
4769
4802
|
"type": {
|
|
@@ -4779,7 +4812,7 @@
|
|
|
4779
4812
|
"immutable": true,
|
|
4780
4813
|
"locationInModule": {
|
|
4781
4814
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4782
|
-
"line":
|
|
4815
|
+
"line": 56
|
|
4783
4816
|
},
|
|
4784
4817
|
"name": "latencyThreshold",
|
|
4785
4818
|
"type": {
|
|
@@ -4795,7 +4828,7 @@
|
|
|
4795
4828
|
"immutable": true,
|
|
4796
4829
|
"locationInModule": {
|
|
4797
4830
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4798
|
-
"line":
|
|
4831
|
+
"line": 35
|
|
4799
4832
|
},
|
|
4800
4833
|
"name": "serviceName",
|
|
4801
4834
|
"type": {
|
|
@@ -4813,7 +4846,7 @@
|
|
|
4813
4846
|
"immutable": true,
|
|
4814
4847
|
"locationInModule": {
|
|
4815
4848
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4816
|
-
"line":
|
|
4849
|
+
"line": 30
|
|
4817
4850
|
},
|
|
4818
4851
|
"name": "applicationLoadBalancers",
|
|
4819
4852
|
"optional": true,
|
|
@@ -4837,7 +4870,7 @@
|
|
|
4837
4870
|
"immutable": true,
|
|
4838
4871
|
"locationInModule": {
|
|
4839
4872
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4840
|
-
"line":
|
|
4873
|
+
"line": 98
|
|
4841
4874
|
},
|
|
4842
4875
|
"name": "assetsBucketParameterName",
|
|
4843
4876
|
"optional": true,
|
|
@@ -4856,7 +4889,7 @@
|
|
|
4856
4889
|
"immutable": true,
|
|
4857
4890
|
"locationInModule": {
|
|
4858
4891
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4859
|
-
"line":
|
|
4892
|
+
"line": 114
|
|
4860
4893
|
},
|
|
4861
4894
|
"name": "assetsBucketPrefixParameterName",
|
|
4862
4895
|
"optional": true,
|
|
@@ -4874,7 +4907,7 @@
|
|
|
4874
4907
|
"immutable": true,
|
|
4875
4908
|
"locationInModule": {
|
|
4876
4909
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4877
|
-
"line":
|
|
4910
|
+
"line": 76
|
|
4878
4911
|
},
|
|
4879
4912
|
"name": "createDashboard",
|
|
4880
4913
|
"optional": true,
|
|
@@ -4892,7 +4925,7 @@
|
|
|
4892
4925
|
"immutable": true,
|
|
4893
4926
|
"locationInModule": {
|
|
4894
4927
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4895
|
-
"line":
|
|
4928
|
+
"line": 83
|
|
4896
4929
|
},
|
|
4897
4930
|
"name": "interval",
|
|
4898
4931
|
"optional": true,
|
|
@@ -4900,6 +4933,24 @@
|
|
|
4900
4933
|
"fqn": "aws-cdk-lib.Duration"
|
|
4901
4934
|
}
|
|
4902
4935
|
},
|
|
4936
|
+
{
|
|
4937
|
+
"abstract": true,
|
|
4938
|
+
"docs": {
|
|
4939
|
+
"default": "Z_SCORE",
|
|
4940
|
+
"stability": "experimental",
|
|
4941
|
+
"summary": "The method used to determine if an AZ is an outlier for latency for Application Load Balancer metrics."
|
|
4942
|
+
},
|
|
4943
|
+
"immutable": true,
|
|
4944
|
+
"locationInModule": {
|
|
4945
|
+
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4946
|
+
"line": 130
|
|
4947
|
+
},
|
|
4948
|
+
"name": "latencyOutlierCalculation",
|
|
4949
|
+
"optional": true,
|
|
4950
|
+
"type": {
|
|
4951
|
+
"fqn": "@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation"
|
|
4952
|
+
}
|
|
4953
|
+
},
|
|
4903
4954
|
{
|
|
4904
4955
|
"abstract": true,
|
|
4905
4956
|
"docs": {
|
|
@@ -4911,7 +4962,7 @@
|
|
|
4911
4962
|
"immutable": true,
|
|
4912
4963
|
"locationInModule": {
|
|
4913
4964
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4914
|
-
"line":
|
|
4965
|
+
"line": 21
|
|
4915
4966
|
},
|
|
4916
4967
|
"name": "natGateways",
|
|
4917
4968
|
"optional": true,
|
|
@@ -4939,7 +4990,7 @@
|
|
|
4939
4990
|
"immutable": true,
|
|
4940
4991
|
"locationInModule": {
|
|
4941
4992
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4942
|
-
"line":
|
|
4993
|
+
"line": 43
|
|
4943
4994
|
},
|
|
4944
4995
|
"name": "packetLossImpactPercentageThreshold",
|
|
4945
4996
|
"optional": true,
|
|
@@ -4957,7 +5008,7 @@
|
|
|
4957
5008
|
"immutable": true,
|
|
4958
5009
|
"locationInModule": {
|
|
4959
5010
|
"filename": "src/basic_observability/props/BasicServiceMultiAZObservabilityProps.ts",
|
|
4960
|
-
"line":
|
|
5011
|
+
"line": 69
|
|
4961
5012
|
},
|
|
4962
5013
|
"name": "period",
|
|
4963
5014
|
"optional": true,
|
|
@@ -10160,6 +10211,6 @@
|
|
|
10160
10211
|
"symbolId": "src/services/props/ServiceProps:ServiceProps"
|
|
10161
10212
|
}
|
|
10162
10213
|
},
|
|
10163
|
-
"version": "0.0.1-alpha.
|
|
10164
|
-
"fingerprint": "
|
|
10214
|
+
"version": "0.0.1-alpha.6",
|
|
10215
|
+
"fingerprint": "MoF6zrupanSDxXgYG+uvEAOqpqAaEZyq0k8F7DN5wTo="
|
|
10165
10216
|
}
|
package/API.md
CHANGED
|
@@ -848,6 +848,7 @@ const basicServiceMultiAZObservabilityProps: BasicServiceMultiAZObservabilityPro
|
|
|
848
848
|
| <code><a href="#@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps.property.assetsBucketPrefixParameterName">assetsBucketPrefixParameterName</a></code> | <code>string</code> | If you are not using a static bucket to deploy assets, for example you are synthing this and it gets uploaded to a bucket that uses a prefix that is unknown to you (maybe used as part of a central CI/CD system) and is provided as a parameter to your stack, specify that parameter name here. |
|
|
849
849
|
| <code><a href="#@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps.property.createDashboard">createDashboard</a></code> | <code>boolean</code> | Whether to create a dashboard displaying the metrics and alarms. |
|
|
850
850
|
| <code><a href="#@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps.property.interval">interval</a></code> | <code>aws-cdk-lib.Duration</code> | Dashboard interval. |
|
|
851
|
+
| <code><a href="#@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps.property.latencyOutlierCalculation">latencyOutlierCalculation</a></code> | <code><a href="#@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation">ApplicationLoadBalancerLatencyOutlierCalculation</a></code> | The method used to determine if an AZ is an outlier for latency for Application Load Balancer metrics. |
|
|
851
852
|
| <code><a href="#@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps.property.natGateways">natGateways</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_ec2.CfnNatGateway[]}</code> | (Optional) A map of Availability Zone name to the NAT Gateways in that AZ. |
|
|
852
853
|
| <code><a href="#@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps.property.packetLossImpactPercentageThreshold">packetLossImpactPercentageThreshold</a></code> | <code>number</code> | The amount of packet loss in a NAT GW to determine if an AZ is actually impacted, recommendation is 0.01%. |
|
|
853
854
|
| <code><a href="#@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps.property.period">period</a></code> | <code>aws-cdk-lib.Duration</code> | The period to evaluate metrics. |
|
|
@@ -1011,6 +1012,19 @@ Dashboard interval.
|
|
|
1011
1012
|
|
|
1012
1013
|
---
|
|
1013
1014
|
|
|
1015
|
+
##### `latencyOutlierCalculation`<sup>Optional</sup> <a name="latencyOutlierCalculation" id="@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps.property.latencyOutlierCalculation"></a>
|
|
1016
|
+
|
|
1017
|
+
```typescript
|
|
1018
|
+
public readonly latencyOutlierCalculation: ApplicationLoadBalancerLatencyOutlierCalculation;
|
|
1019
|
+
```
|
|
1020
|
+
|
|
1021
|
+
- *Type:* <a href="#@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation">ApplicationLoadBalancerLatencyOutlierCalculation</a>
|
|
1022
|
+
- *Default:* Z_SCORE
|
|
1023
|
+
|
|
1024
|
+
The method used to determine if an AZ is an outlier for latency for Application Load Balancer metrics.
|
|
1025
|
+
|
|
1026
|
+
---
|
|
1027
|
+
|
|
1014
1028
|
##### `natGateways`<sup>Optional</sup> <a name="natGateways" id="@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps.property.natGateways"></a>
|
|
1015
1029
|
|
|
1016
1030
|
```typescript
|
|
@@ -5043,6 +5057,40 @@ metrics this will typically just be "Sum".
|
|
|
5043
5057
|
|
|
5044
5058
|
## Enums <a name="Enums" id="Enums"></a>
|
|
5045
5059
|
|
|
5060
|
+
### ApplicationLoadBalancerLatencyOutlierCalculation <a name="ApplicationLoadBalancerLatencyOutlierCalculation" id="@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation"></a>
|
|
5061
|
+
|
|
5062
|
+
The options for calculating if an AZ is an outlier for latency for ALBs.
|
|
5063
|
+
|
|
5064
|
+
#### Members <a name="Members" id="Members"></a>
|
|
5065
|
+
|
|
5066
|
+
| **Name** | **Description** |
|
|
5067
|
+
| --- | --- |
|
|
5068
|
+
| <code><a href="#@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation.STATIC">STATIC</a></code> | This will take the latency threshold and count the number of requests per AZ that exceed this threshold and then calculate the percentage of requests exceeding this threshold belong to each AZ. |
|
|
5069
|
+
| <code><a href="#@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation.Z_SCORE">Z_SCORE</a></code> | This calculates the z score of latency in one AZ against the other AZs. |
|
|
5070
|
+
|
|
5071
|
+
---
|
|
5072
|
+
|
|
5073
|
+
##### `STATIC` <a name="STATIC" id="@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation.STATIC"></a>
|
|
5074
|
+
|
|
5075
|
+
This will take the latency threshold and count the number of requests per AZ that exceed this threshold and then calculate the percentage of requests exceeding this threshold belong to each AZ.
|
|
5076
|
+
|
|
5077
|
+
This provides a static comparison
|
|
5078
|
+
of the number of high latency requests in one AZ versus the others
|
|
5079
|
+
|
|
5080
|
+
---
|
|
5081
|
+
|
|
5082
|
+
|
|
5083
|
+
##### `Z_SCORE` <a name="Z_SCORE" id="@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierCalculation.Z_SCORE"></a>
|
|
5084
|
+
|
|
5085
|
+
This calculates the z score of latency in one AZ against the other AZs.
|
|
5086
|
+
|
|
5087
|
+
It uses
|
|
5088
|
+
the target response time of all requests to calculate the standard deviation and
|
|
5089
|
+
average for all AZs. This is the default.
|
|
5090
|
+
|
|
5091
|
+
---
|
|
5092
|
+
|
|
5093
|
+
|
|
5046
5094
|
### OutlierDetectionAlgorithm <a name="OutlierDetectionAlgorithm" id="@cdklabs/multi-az-observability.OutlierDetectionAlgorithm"></a>
|
|
5047
5095
|
|
|
5048
5096
|
Available algorithms for performing outlier detection.
|
package/cdk.json
CHANGED
|
@@ -196,5 +196,5 @@ class AvailabilityZoneMapper extends constructs_1.Construct {
|
|
|
196
196
|
}
|
|
197
197
|
exports.AvailabilityZoneMapper = AvailabilityZoneMapper;
|
|
198
198
|
_a = JSII_RTTI_SYMBOL_1;
|
|
199
|
-
AvailabilityZoneMapper[_a] = { fqn: "@cdklabs/multi-az-observability.AvailabilityZoneMapper", version: "0.0.1-alpha.
|
|
199
|
+
AvailabilityZoneMapper[_a] = { fqn: "@cdklabs/multi-az-observability.AvailabilityZoneMapper", version: "0.0.1-alpha.6" };
|
|
200
200
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXZhaWxhYmlsaXR5Wm9uZU1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hem1hcHBlci9BdmFpbGFiaWxpdHlab25lTWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0Qyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZDQU1xQjtBQUNyQixpREFRNkI7QUFDN0IsdURBT2dDO0FBQ2hDLG1EQUEwRTtBQUMxRSwyQ0FBdUM7QUFJdkM7O0dBRUc7QUFDSCxNQUFhLHNCQUNYLFNBQVEsc0JBQVM7SUFtQmpCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQW1DO1FBRW5DLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakI7Ozs7Ozs7Ozs7VUFVRTtRQUVGLElBQUksaUJBQWlCLEdBQW1CLElBQUksdUJBQWEsQ0FDdkQsSUFBSSxFQUNKLG1CQUFtQixFQUNuQjtZQUNFLElBQUksRUFBRSxZQUFZO1lBQ2xCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLG9DQUFvQztxQkFDckM7b0JBQ0QsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2FBQ0g7U0FDRixDQUNGLENBQUM7UUFFRixJQUFJLGdCQUFnQixHQUFtQixJQUFJLHVCQUFhLENBQ3RELElBQUksRUFDSixrQkFBa0IsRUFDbEI7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDMUMsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2FBQ0g7U0FDRixDQUNGLENBQUM7UUFFRixJQUFJLGFBQWEsR0FBVSxJQUFJLGNBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ3pELFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQ3ZELElBQUksRUFBRSxZQUFZO1lBQ2xCLGVBQWUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDO1NBQ3ZELENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxHQUFXLEVBQUUsQ0FBQyxZQUFZLENBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDRCQUE0QixDQUFDLEVBQ3JELE9BQU8sQ0FDUixDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHFCQUFRLENBQUMsSUFBSSxFQUFFLGdDQUFnQyxFQUFFO1lBQ25FLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsSUFBSSxFQUFFLGlCQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUMzQixPQUFPLEVBQUUsZUFBZTtZQUN4QixJQUFJLEVBQUUsYUFBYTtZQUNuQixZQUFZLEVBQUUseUJBQVksQ0FBQyxNQUFNO1lBQ2pDLE9BQU8sRUFBRSxvQkFBTyxDQUFDLE1BQU07WUFDdkIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixVQUFVLEVBQUUsR0FBRztZQUNmLFdBQVcsRUFBRTtnQkFDWCxNQUFNLEVBQUUsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUM3QixTQUFTLEVBQUUsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7YUFDcEM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzdDLFlBQVksRUFBRSxlQUFlLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO1lBQ3pELFNBQVMsRUFBRSx3QkFBYSxDQUFDLE9BQU87WUFDaEMsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztTQUNyQyxDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO1lBQ2pELElBQUksRUFBRSxZQUFZO1lBQ2xCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUNyQyxNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO29CQUNwQixTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ2pCLENBQUM7Z0JBQ0YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQztvQkFDdEQsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsU0FBUyxFQUFFO3dCQUNULGdCQUFFLENBQUMsR0FBRyxDQUNKLHdFQUF3RSxDQUN6RTs0QkFDQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVk7NEJBQzFCLElBQUk7cUJBQ1A7aUJBQ0YsQ0FBQzthQUNIO1lBQ0QsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDO1NBQ3ZCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtZQUMvRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQ3ZDLFVBQVUsRUFDUixLQUFLLEVBQUUscUJBQXFCLEtBQUssU0FBUztnQkFDeEMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixFQUFFO2dCQUNwRCxDQUFDLENBQUMsRUFBRTtTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsb0JBQTRCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLGtCQUEwQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQ0FBa0M7UUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxnQkFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDBCQUEwQixDQUFDLHFCQUErQjtRQUN4RCxJQUFJLEdBQUcsR0FBYSxFQUFFLENBQUM7UUFFdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RELEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsdUNBQXVDLENBQ3JDLHFCQUErQjtRQUUvQixJQUFJLEdBQUcsR0FBYSxFQUFFLENBQUM7UUFFdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RELEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDBDQUEwQztRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw2QkFBNkI7UUFDM0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDRDQUE0QyxDQUFDLE1BQWM7UUFDekQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw0Q0FBNEM7UUFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlELENBQUM7O0FBOU9ILHdEQStPQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBDdXN0b21SZXNvdXJjZSxcbiAgRHVyYXRpb24sXG4gIEZuLFxuICBSZWZlcmVuY2UsXG4gIFJlbW92YWxQb2xpY3ksXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEVmZmVjdCxcbiAgSU1hbmFnZWRQb2xpY3ksXG4gIElSb2xlLFxuICBNYW5hZ2VkUG9saWN5LFxuICBQb2xpY3lTdGF0ZW1lbnQsXG4gIFJvbGUsXG4gIFNlcnZpY2VQcmluY2lwYWwsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHtcbiAgQXJjaGl0ZWN0dXJlLFxuICBDb2RlLFxuICBGdW5jdGlvbixcbiAgSUZ1bmN0aW9uLFxuICBSdW50aW1lLFxuICBUcmFjaW5nLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElMb2dHcm91cCwgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi9JQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcic7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlab25lTWFwcGVyUHJvcHMgfSBmcm9tICcuL3Byb3BzL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXJQcm9wcyc7XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgdGhhdCBhbGxvd3MgeW91IHRvIG1hcCBBWiBuYW1lcyB0byBpZHMgYW5kIGJhY2tcbiAqL1xuZXhwb3J0IGNsYXNzIEF2YWlsYWJpbGl0eVpvbmVNYXBwZXJcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB7XG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSBtYXBwaW5nXG4gICAqL1xuICBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIGZvciB0aGUgZnVuY3Rpb24ncyBsb2dzXG4gICAqL1xuICBsb2dHcm91cDogSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIHJlc291cmNlIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgdG8gdXNlXG4gICAqIEZuOjpHZXRBdHQgZnVuY3Rpb25zIG9uIHRvIHJldHJpZXZlIGF2YWlsYWJpbGl0eSB6b25lXG4gICAqIG5hbWVzIGFuZCBpZHNcbiAgICovXG4gIG1hcHBlcjogQ3VzdG9tUmVzb3VyY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogQXZhaWxhYmlsaXR5Wm9uZU1hcHBlclByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLypcbiAgICBsZXQgY3VycmVudE5vZGU6IENvbnN0cnVjdCB8IHVuZGVmaW5lZCA9IHRoaXMubm9kZS5zY29wZTtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSAhPT0gdW5kZWZpbmVkICYmICEoY3VycmVudE5vZGUgaW5zdGFuY2VvZiBTdGFjaykpIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubm9kZS5zY29wZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgKGN1cnJlbnROb2RlIGFzIFN0YWNrKS5hZGRUcmFuc2Zvcm0oJ0FXUzo6TGFuZ3VhZ2VFeHRlbnNpb25zJyk7XG4gICAgfVxuICAgICovXG5cbiAgICBsZXQgeHJheU1hbmFnZWRQb2xpY3k6IElNYW5hZ2VkUG9saWN5ID0gbmV3IE1hbmFnZWRQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgJ1hyYXlNYW5hZ2VkUG9saWN5JyxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJy9hem1hcHBlci8nLFxuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICd4cmF5OlB1dFRyYWNlU2VnbWVudHMnLFxuICAgICAgICAgICAgICAneHJheTpQdXRUZWxlbWV0cnlSZWNvcmRzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdSdWxlcycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nVGFyZ2V0cycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nU3RhdGlzdGljU3VtbWFyaWVzJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBsZXQgZWMyTWFuYWdlZFBvbGljeTogSU1hbmFnZWRQb2xpY3kgPSBuZXcgTWFuYWdlZFBvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICAnRUMyTWFuYWdlZFBvbGljeScsXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICcvYXptYXBwZXIvJyxcbiAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogWydlYzI6RGVzY3JpYmVBdmFpbGFiaWxpdHlab25lcyddLFxuICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgbGV0IGV4ZWN1dGlvblJvbGU6IElSb2xlID0gbmV3IFJvbGUodGhpcywgJ2V4ZWN1dGlvblJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgcGF0aDogJy9hem1hcHBlci8nLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbeHJheU1hbmFnZWRQb2xpY3ksIGVjMk1hbmFnZWRQb2xpY3ldLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZmlsZTogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vLi4vYXptYXBwZXIvc3JjL2luZGV4LnB5JyksXG4gICAgICAndXRmLTgnLFxuICAgICk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdBdmFpbGFiaWxpdHlab25lTWFwcGVyRnVuY3Rpb24nLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLlBZVEhPTl8zXzEyLFxuICAgICAgY29kZTogQ29kZS5mcm9tSW5saW5lKGZpbGUpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgcm9sZTogZXhlY3V0aW9uUm9sZSxcbiAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygyMCksXG4gICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBSRUdJT046IEZuLnJlZignQVdTOjpSZWdpb24nKSxcbiAgICAgICAgUEFSVElUSU9OOiBGbi5yZWYoJ0FXUzo6UGFydGl0aW9uJyksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2dHcm91cCA9IG5ldyBMb2dHcm91cCh0aGlzLCAnTG9nR3JvdXAnLCB7XG4gICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke3RoaXMuZnVuY3Rpb24uZnVuY3Rpb25OYW1lfWAsXG4gICAgICByZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX0RBWSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcblxuICAgIG5ldyBNYW5hZ2VkUG9saWN5KHRoaXMsICdDbG91ZFdhdGNoTWFuYWdlZFBvbGljeScsIHtcbiAgICAgIHBhdGg6ICcvYXptYXBwZXIvJyxcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydjbG91ZHdhdGNoOlB1dE1ldHJpY0RhdGEnXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsICdsb2dzOlB1dExvZ0V2ZW50cyddLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgRm4uc3ViKFxuICAgICAgICAgICAgICAnYXJuOiR7QVdTOjpQYXJ0aXRpb259OmxvZ3M6JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH06bG9nLWdyb3VwOicsXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgICAgdGhpcy5sb2dHcm91cC5sb2dHcm91cE5hbWUgK1xuICAgICAgICAgICAgICAnOionLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICAgIHJvbGVzOiBbZXhlY3V0aW9uUm9sZV0sXG4gICAgfSk7XG5cbiAgICB0aGlzLm1hcHBlciA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcicsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5mdW5jdGlvbi5mdW5jdGlvbkFybixcbiAgICAgIHByb3BlcnRpZXM6XG4gICAgICAgIHByb3BzPy5hdmFpbGFiaWxpdHlab25lTmFtZXMgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8geyBBdmFpbGFiaWxpdHlab25lczogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzIH1cbiAgICAgICAgICA6IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEF2YWlsYWJpbGl0eSBab25lIElkIGZvciB0aGUgZ2l2ZW4gQXZhaWxhYmlsaXR5IFpvbmUgTmFtZSBpbiB0aGlzIGFjY291bnRcbiAgICogQHBhcmFtIGF2YWlsYWJpbGl0eVpvbmVOYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lSWQoYXZhaWxhYmlsaXR5Wm9uZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGVyLmdldEF0dFN0cmluZyhhdmFpbGFiaWxpdHlab25lTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQXZhaWxhYmlsaXR5IFpvbmUgTmFtZSBmb3IgdGhlIGdpdmVuIEF2YWlsYWJpbGl0eSBab25lIElkIGluIHRoaXMgYWNjb3VudFxuICAgKiBAcGFyYW0gYXZhaWxhYmlsaXR5Wm9uZUlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lTmFtZShhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGVyLmdldEF0dFN0cmluZyhhdmFpbGFiaWxpdHlab25lSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHByZWZpeCBmb3IgdGhlIHJlZ2lvbiB1c2VkIHdpdGggQXZhaWxhYmlsaXR5IFpvbmUgSWRzLCBmb3IgZXhhbXBsZVxuICAgKiBpbiB1cy1lYXN0LTEsIHRoaXMgcmV0dXJucyBcInVzZTFcIlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcmVnaW9uUHJlZml4Rm9yQXZhaWxhYmlsaXR5Wm9uZUlkcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1hcHBlci5nZXRBdHRTdHJpbmcoRm4ucmVmKCdBV1M6OlJlZ2lvbicpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IGZvciBBdmFpbGFiaWxpdHkgWm9uZSBJZHMgZm9yIHRoZSBzdXBwbGllZCBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lcyxcbiAgICogdGhleSBhcmUgcmV0dXJuZWQgaW4gdGhlIHNhbWUgb3JkZXIgdGhlIG5hbWVzIHdlcmUgcHJvdmlkZWRcbiAgICogQHBhcmFtIGF2YWlsYWJpbGl0eVpvbmVOYW1lc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZUlkc0FzQXJyYXkoYXZhaWxhYmlsaXR5Wm9uZU5hbWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdmFpbGFiaWxpdHlab25lTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlkcy5wdXNoKHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlkKGF2YWlsYWJpbGl0eVpvbmVOYW1lc1tpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBpZHM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIEF2YWlsYWJpbGl0eSBab25lIElkcyBmb3IgdGhlIHN1cHBsaWVkXG4gICAqIEF2YWlsYWJpbGl0eSBab25lIG5hbWVzLiBZb3UgY2FuIHVzZSB0aGlzIHN0cmluZyB3aXRoIEZuLlNlbGVjdCh4LCBGbi5TcGxpdChcIixcIiwgYXpzKSkgdG9cbiAgICogZ2V0IGEgc3BlY2lmaWMgQXZhaWxhYmlsaXR5IFpvbmUgSWRcbiAgICogQHBhcmFtIGF2YWlsYWJpbGl0eVpvbmVOYW1lc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZUlkc0FzQ29tbWFEZWxpbWl0ZWRMaXN0KFxuICAgIGF2YWlsYWJpbGl0eVpvbmVOYW1lczogc3RyaW5nW10sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IGlkczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZHMucHVzaCh0aGlzLmF2YWlsYWJpbGl0eVpvbmVJZChhdmFpbGFiaWxpdHlab25lTmFtZXNbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaWRzLmpvaW4oJywnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tbWEgZGVsaW1pdGVkIGxpc3Qgb2YgQXZhaWxhYmlsaXR5IFpvbmUgSWRzIGZvciB0aGUgc3VwcGxpZWRcbiAgICogQXZhaWxhYmlsaXR5IFpvbmUgbmFtZXMuIFlvdSBjYW4gdXNlIHRoaXMgc3RyaW5nIHdpdGggRm4uU2VsZWN0KHgsIEZuLlNwbGl0KFwiLFwiLCBhenMpKSB0b1xuICAgKiBnZXQgYSBzcGVjaWZpYyBBdmFpbGFiaWxpdHkgWm9uZSBJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYWxsQXZhaWxhYmlsaXR5Wm9uZUlkc0FzQ29tbWFEZWxpbWl0ZWRMaXN0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGVyLmdldEF0dFN0cmluZygnQWxsQXZhaWxhYmlsaXR5Wm9uZUlkcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSByZWZlcmVuY2UgdGhhdCBjYW4gYmUgY2FzdCB0byBhIHN0cmluZyBhcnJheSB3aXRoIGFsbCBvZiB0aGVcbiAgICogQXZhaWxhYmlsaXR5IFpvbmUgSWRzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhbGxBdmFpbGFiaWxpdHlab25lSWRzQXNBcnJheSgpOiBSZWZlcmVuY2Uge1xuICAgIHJldHVybiB0aGlzLm1hcHBlci5nZXRBdHQoJ0FsbEF2YWlsYWJpbGl0eVpvbmVJZHNBcnJheScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgbGV0dGVyIGxpa2UgXCJmXCIgb3IgXCJhXCIsIHJldHVybnMgdGhlIEF2YWlsYWJpbGl0eSBab25lIElkIGZvciB0aGF0XG4gICAqIEF2YWlsYWJpbGl0eSBab25lIG5hbWUgaW4gdGhpcyBhY2NvdW50XG4gICAqIEBwYXJhbSBsZXR0ZXJcbiAgICogQHJldHVybnNcbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGxldHRlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwZXIuZ2V0QXR0U3RyaW5nKGxldHRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbGwgb2YgdGhlIEF2YWlsYWJpbGl0eSBab25lIG5hbWVzIGluIHRoaXMgUmVnaW9uIGFzIGEgY29tbWEgZGVsaW1pdGVkXG4gICAqIGxpc3QuIFlvdSBjYW4gdXNlIHRoaXMgc3RyaW5nIHdpdGggRm4uU2VsZWN0KHgsIEZuLlNwbGl0KFwiLFwiLCBhenMpKSB0b1xuICAgKiBnZXQgYSBzcGVjaWZpYyBBdmFpbGFiaWxpdHkgWm9uZSBOYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhbGxBdmFpbGFiaWxpdHlab25lTmFtZXNBc0NvbW1hRGVsaW1pdGVkTGlzdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1hcHBlci5nZXRBdHRTdHJpbmcoJ0FsbEF2YWlsYWJpbGl0eVpvbmVOYW1lcycpO1xuICB9XG59XG4iXX0=
|