@cdklabs/multi-az-observability 0.0.1-alpha.6 → 0.0.1-alpha.60

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.
Files changed (188) hide show
  1. package/.jsii +2826 -1008
  2. package/.jsii.tabl.json +1 -0
  3. package/API.md +5406 -1585
  4. package/README.md +176 -152
  5. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +18 -14
  6. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +98 -60
  7. package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.d.ts +3 -3
  8. package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.js +2 -2
  9. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +6 -15
  10. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +2 -10
  11. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +11 -3
  12. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +29 -13
  13. package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.d.ts +0 -8
  14. package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.js +1 -1
  15. package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +26 -23
  16. package/lib/alarmsandrules/IOperationAlarmsAndRules.js +1 -1
  17. package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.js +1 -1
  18. package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +19 -15
  19. package/lib/alarmsandrules/IServiceAlarmsAndRules.js +1 -1
  20. package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +21 -18
  21. package/lib/alarmsandrules/OperationAlarmsAndRules.js +60 -72
  22. package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.d.ts +5 -5
  23. package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.js +2 -3
  24. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +21 -13
  25. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +48 -29
  26. package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +19 -15
  27. package/lib/alarmsandrules/ServiceAlarmsAndRules.js +34 -136
  28. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +4 -3
  29. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +1 -1
  30. package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.d.ts +6 -44
  31. package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.js +1 -1
  32. package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.d.ts +39 -7
  33. package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.js +1 -1
  34. package/lib/azmapper/AvailabilityZoneMapper.js +8 -9
  35. package/lib/basic_observability/BasicServiceDashboard.d.ts +0 -3
  36. package/lib/basic_observability/BasicServiceDashboard.js +24 -112
  37. package/lib/basic_observability/BasicServiceMultiAZObservability.d.ts +8 -9
  38. package/lib/basic_observability/BasicServiceMultiAZObservability.js +97 -349
  39. package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.d.ts +66 -0
  40. package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.js +3 -0
  41. package/lib/basic_observability/props/BasicServiceDashboardProps.d.ts +27 -13
  42. package/lib/basic_observability/props/BasicServiceDashboardProps.js +1 -1
  43. package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.d.ts +10 -44
  44. package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.js +1 -1
  45. package/lib/basic_observability/props/NatGatewayDetectionProps.d.ts +31 -0
  46. package/lib/basic_observability/props/NatGatewayDetectionProps.js +3 -0
  47. package/lib/canaries/CanaryFunction.js +14 -13
  48. package/lib/canaries/CanaryTest.js +4 -4
  49. package/lib/canaries/src/canary.zip +0 -0
  50. package/lib/dashboards/ContributorInsightsWidget.d.ts +1 -1
  51. package/lib/dashboards/ContributorInsightsWidget.js +13 -17
  52. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.d.ts +2 -6
  53. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +436 -510
  54. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +2 -10
  55. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +420 -416
  56. package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.d.ts +3 -66
  57. package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.js +1 -1
  58. package/lib/dashboards/props/OperationAvailabilityWidgetProps.d.ts +7 -2
  59. package/lib/dashboards/props/OperationAvailabilityWidgetProps.js +1 -1
  60. package/lib/dashboards/props/OperationLatencyWidgetProps.d.ts +7 -2
  61. package/lib/dashboards/props/OperationLatencyWidgetProps.js +1 -1
  62. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +8 -8
  63. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +1 -1
  64. package/lib/index.d.ts +56 -25
  65. package/lib/index.js +37 -19
  66. package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +79 -2
  67. package/lib/metrics/ApplicationLoadBalancerMetrics.js +883 -26
  68. package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +23 -0
  69. package/lib/metrics/AvailabilityAndLatencyMetrics.js +125 -31
  70. package/lib/metrics/NatGatewayMetrics.d.ts +113 -0
  71. package/lib/metrics/NatGatewayMetrics.js +357 -0
  72. package/lib/metrics/RegionalAvailabilityMetrics.js +9 -10
  73. package/lib/metrics/RegionalLatencyMetrics.d.ts +1 -1
  74. package/lib/metrics/RegionalLatencyMetrics.js +27 -20
  75. package/lib/metrics/ZonalAvailabilityMetrics.d.ts +2 -8
  76. package/lib/metrics/ZonalAvailabilityMetrics.js +13 -28
  77. package/lib/metrics/ZonalLatencyMetrics.d.ts +2 -1
  78. package/lib/metrics/ZonalLatencyMetrics.js +33 -23
  79. package/lib/metrics/props/AvailabilityAndLatencyMetricProps.d.ts +4 -0
  80. package/lib/metrics/props/AvailabilityAndLatencyMetricProps.js +1 -1
  81. package/lib/metrics/props/LatencyMetricProps.d.ts +6 -0
  82. package/lib/metrics/props/LatencyMetricProps.js +1 -1
  83. package/lib/metrics/props/ZonalAvailabilityMetricProps.d.ts +4 -0
  84. package/lib/metrics/props/ZonalAvailabilityMetricProps.js +1 -1
  85. package/lib/metrics/props/ZonalLatencyMetricProps.d.ts +4 -0
  86. package/lib/metrics/props/ZonalLatencyMetricProps.js +1 -1
  87. package/lib/monitoring/src/monitoring-layer.zip +0 -0
  88. package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.d.ts +10 -0
  89. package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.js +15 -0
  90. package/lib/{basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.d.ts → outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.d.ts} +1 -1
  91. package/lib/outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.js +23 -0
  92. package/lib/outlier-detection/LatencyOutlierMetricAggregation.d.ts +22 -0
  93. package/lib/outlier-detection/LatencyOutlierMetricAggregation.js +27 -0
  94. package/lib/outlier-detection/OutlierDetectionFunction.js +7 -6
  95. package/lib/outlier-detection/PacketLossOutlierAlgorithm.d.ts +10 -0
  96. package/lib/outlier-detection/PacketLossOutlierAlgorithm.js +15 -0
  97. package/lib/outlier-detection/src/outlier-detection.zip +0 -0
  98. package/lib/outlier-detection/src/scipy-layer.zip +0 -0
  99. package/lib/services/CanaryMetrics.d.ts +4 -3
  100. package/lib/services/CanaryMetrics.js +3 -4
  101. package/lib/services/CanaryTestAvailabilityMetricsOverride.d.ts +21 -0
  102. package/lib/services/CanaryTestAvailabilityMetricsOverride.js +23 -0
  103. package/lib/services/CanaryTestLatencyMetricsOverride.d.ts +15 -0
  104. package/lib/services/CanaryTestLatencyMetricsOverride.js +20 -0
  105. package/lib/services/CanaryTestMetricsOverride.d.ts +1 -13
  106. package/lib/services/CanaryTestMetricsOverride.js +2 -4
  107. package/lib/services/ContributorInsightRuleDetails.js +1 -1
  108. package/lib/services/ICanaryMetrics.d.ts +4 -3
  109. package/lib/services/ICanaryMetrics.js +1 -1
  110. package/lib/services/ICanaryTestAvailabilityMetricsOverride.d.ts +23 -0
  111. package/lib/services/ICanaryTestAvailabilityMetricsOverride.js +3 -0
  112. package/lib/services/ICanaryTestLatencyMetricsOverride.d.ts +13 -0
  113. package/lib/services/ICanaryTestLatencyMetricsOverride.js +3 -0
  114. package/lib/services/ICanaryTestMetricsOverride.d.ts +0 -12
  115. package/lib/services/ICanaryTestMetricsOverride.js +1 -1
  116. package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +13 -3
  117. package/lib/services/IInstrumentedServiceMultiAZObservability.js +1 -1
  118. package/lib/services/IOperation.d.ts +8 -6
  119. package/lib/services/IOperation.js +1 -1
  120. package/lib/services/IOperationAvailabilityMetricDetails.d.ts +18 -0
  121. package/lib/services/IOperationAvailabilityMetricDetails.js +3 -0
  122. package/lib/services/IOperationLatencyMetricDetails.d.ts +12 -0
  123. package/lib/services/IOperationLatencyMetricDetails.js +3 -0
  124. package/lib/services/IOperationMetricDetails.d.ts +0 -12
  125. package/lib/services/IOperationMetricDetails.js +1 -1
  126. package/lib/services/IService.d.ts +18 -4
  127. package/lib/services/IService.js +1 -1
  128. package/lib/services/IServiceAvailabilityMetricDetails.d.ts +18 -0
  129. package/lib/services/IServiceAvailabilityMetricDetails.js +3 -0
  130. package/lib/services/IServiceLatencyMetricDetails.d.ts +12 -0
  131. package/lib/services/IServiceLatencyMetricDetails.js +3 -0
  132. package/lib/services/IServiceMetricDetails.d.ts +0 -12
  133. package/lib/services/IServiceMetricDetails.js +1 -1
  134. package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +15 -3
  135. package/lib/services/InstrumentedServiceMultiAZObservability.js +252 -228
  136. package/lib/services/Operation.d.ts +8 -6
  137. package/lib/services/Operation.js +4 -3
  138. package/lib/services/OperationAvailabilityMetricDetails.d.ts +22 -0
  139. package/lib/services/OperationAvailabilityMetricDetails.js +24 -0
  140. package/lib/services/OperationLatencyMetricDetails.d.ts +16 -0
  141. package/lib/services/OperationLatencyMetricDetails.js +21 -0
  142. package/lib/services/OperationMetricDetails.d.ts +1 -13
  143. package/lib/services/OperationMetricDetails.js +2 -8
  144. package/lib/services/Service.d.ts +18 -4
  145. package/lib/services/Service.js +4 -2
  146. package/lib/services/ServiceAvailabilityMetricDetails.d.ts +21 -0
  147. package/lib/services/ServiceAvailabilityMetricDetails.js +20 -0
  148. package/lib/services/ServiceLatencyMetricDetails.d.ts +15 -0
  149. package/lib/services/ServiceLatencyMetricDetails.js +19 -0
  150. package/lib/services/ServiceMetricDetails.d.ts +1 -13
  151. package/lib/services/ServiceMetricDetails.js +2 -4
  152. package/lib/services/props/CanaryMetricProps.d.ts +4 -3
  153. package/lib/services/props/CanaryMetricProps.js +1 -1
  154. package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.d.ts +22 -0
  155. package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.js +3 -0
  156. package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.d.ts +14 -0
  157. package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.js +3 -0
  158. package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +0 -16
  159. package/lib/services/props/CanaryTestMetricsOverrideProps.js +1 -1
  160. package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.d.ts +50 -5
  161. package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.js +1 -1
  162. package/lib/services/props/MetricDimensions.js +1 -1
  163. package/lib/services/props/OperationAvailabilityMetricDetailsProps.d.ts +22 -0
  164. package/lib/services/props/OperationAvailabilityMetricDetailsProps.js +3 -0
  165. package/lib/services/props/OperationLatencyMetricDetailsProps.d.ts +14 -0
  166. package/lib/services/props/OperationLatencyMetricDetailsProps.js +3 -0
  167. package/lib/services/props/OperationMetricDetailsProps.d.ts +0 -16
  168. package/lib/services/props/OperationMetricDetailsProps.js +1 -1
  169. package/lib/services/props/OperationProps.d.ts +4 -3
  170. package/lib/services/props/OperationProps.js +1 -1
  171. package/lib/services/props/ServiceAvailabilityMetricDetailsProps.d.ts +18 -0
  172. package/lib/services/props/ServiceAvailabilityMetricDetailsProps.js +3 -0
  173. package/lib/services/props/ServiceLatencyMetricDetailsProps.d.ts +12 -0
  174. package/lib/services/props/ServiceLatencyMetricDetailsProps.js +3 -0
  175. package/lib/services/props/ServiceMetricDetailsProps.d.ts +0 -12
  176. package/lib/services/props/ServiceMetricDetailsProps.js +1 -1
  177. package/lib/services/props/ServiceProps.d.ts +18 -4
  178. package/lib/services/props/ServiceProps.js +1 -1
  179. package/lib/utilities/MetricsHelper.d.ts +17 -9
  180. package/lib/utilities/MetricsHelper.js +34 -10
  181. package/lib/utilities/MinimumUnhealthyTargets.d.ts +25 -0
  182. package/lib/utilities/MinimumUnhealthyTargets.js +3 -0
  183. package/package.json +14 -14
  184. package/rosetta/default.ts-fixture +72 -0
  185. package/rosetta/service.ts-fixture +144 -0
  186. package/lib/basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.js +0 -23
  187. package/lib/services/IBasicServiceMultiAZObservability.d.ts +0 -45
  188. package/lib/services/IBasicServiceMultiAZObservability.js +0 -3
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The minimum unhealthy targets for an AZ to be considered impaired instead
3
+ * of individual targets in the zone. You must specify either count or percentage,
4
+ * if you specify both, only count will be used.
5
+ */
6
+ export interface MinimumUnhealthyTargets {
7
+ /**
8
+ * The minimum number of targets that must be unhealthy. If the number of
9
+ * unhealthy targets is equal to this, or greater, the impact ot a single AZ
10
+ * is not considered ot be from a "single" target. You must specify either count or percentage,
11
+ * if you specify both, only count will be used.
12
+ *
13
+ * @default This value is not used
14
+ */
15
+ readonly count?: number;
16
+ /**
17
+ * The minimum percentage of targets that must be unhealthy. If the percentage
18
+ * of unhealthy targets is equal to this, or greater, the impact to a single AZ
19
+ * is not considered to be from a "single" target. You must specify either count or percentage,
20
+ * if you specify both, only count will be used.
21
+ *
22
+ * @default This value is not used
23
+ */
24
+ readonly percentage?: number;
25
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bVVuaGVhbHRoeVRhcmdldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbGl0aWVzL01pbmltdW1VbmhlYWx0aHlUYXJnZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBtaW5pbXVtIHVuaGVhbHRoeSB0YXJnZXRzIGZvciBhbiBBWiB0byBiZSBjb25zaWRlcmVkIGltcGFpcmVkIGluc3RlYWRcbiAqIG9mIGluZGl2aWR1YWwgdGFyZ2V0cyBpbiB0aGUgem9uZS4gWW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgY291bnQgb3IgcGVyY2VudGFnZSxcbiAqIGlmIHlvdSBzcGVjaWZ5IGJvdGgsIG9ubHkgY291bnQgd2lsbCBiZSB1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltdW1VbmhlYWx0aHlUYXJnZXRzIHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiB0YXJnZXRzIHRoYXQgbXVzdCBiZSB1bmhlYWx0aHkuIElmIHRoZSBudW1iZXIgb2ZcbiAgICogdW5oZWFsdGh5IHRhcmdldHMgaXMgZXF1YWwgdG8gdGhpcywgb3IgZ3JlYXRlciwgdGhlIGltcGFjdCBvdCBhIHNpbmdsZSBBWlxuICAgKiBpcyBub3QgY29uc2lkZXJlZCBvdCBiZSBmcm9tIGEgXCJzaW5nbGVcIiB0YXJnZXQuIFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGNvdW50IG9yIHBlcmNlbnRhZ2UsXG4gICAqIGlmIHlvdSBzcGVjaWZ5IGJvdGgsIG9ubHkgY291bnQgd2lsbCBiZSB1c2VkLlxuICAgKiBcbiAgICogQGRlZmF1bHQgVGhpcyB2YWx1ZSBpcyBub3QgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgY291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHBlcmNlbnRhZ2Ugb2YgdGFyZ2V0cyB0aGF0IG11c3QgYmUgdW5oZWFsdGh5LiBJZiB0aGUgcGVyY2VudGFnZVxuICAgKiBvZiB1bmhlYWx0aHkgdGFyZ2V0cyBpcyBlcXVhbCB0byB0aGlzLCBvciBncmVhdGVyLCB0aGUgaW1wYWN0IHRvIGEgc2luZ2xlIEFaXG4gICAqIGlzIG5vdCBjb25zaWRlcmVkIHRvIGJlIGZyb20gYSBcInNpbmdsZVwiIHRhcmdldC4gWW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgY291bnQgb3IgcGVyY2VudGFnZSxcbiAgICogaWYgeW91IHNwZWNpZnkgYm90aCwgb25seSBjb3VudCB3aWxsIGJlIHVzZWQuXG4gICAqIFxuICAgKiBAZGVmYXVsdCBUaGlzIHZhbHVlIGlzIG5vdCB1c2VkXG4gICAqL1xuICByZWFkb25seSBwZXJjZW50YWdlPzogbnVtYmVyO1xufSJdfQ==
package/package.json CHANGED
@@ -52,26 +52,26 @@
52
52
  "@aws-cdk/integ-tests-alpha": "latest",
53
53
  "@types/jest": "^29.5.14",
54
54
  "@types/node": "^18",
55
- "aws-cdk-lib": "2.170.0",
56
- "cdk-nag": "^2.35.20",
57
- "cdklabs-projen-project-types": "^0.1.211",
55
+ "aws-cdk-lib": "2.189.1",
56
+ "cdk-nag": "^2.37.44",
57
+ "cdklabs-projen-project-types": "^0.3.5",
58
58
  "commit-and-tag-version": "^12",
59
59
  "constructs": "10.0.5",
60
60
  "jest": "^29.7.0",
61
- "jest-junit": "^15",
62
- "jsii": "~5.5.0",
63
- "jsii-diff": "^1.106.0",
61
+ "jest-junit": "^16",
62
+ "jsii": "5.8.0",
63
+ "jsii-diff": "^1.115.0",
64
64
  "jsii-docgen": "^10.5.0",
65
- "jsii-pacmak": "^1.106.0",
66
- "jsii-rosetta": "~5.7.4",
67
- "prettier": "^3.5.1",
68
- "projen": "^0.90.5",
69
- "ts-jest": "^29.2.5",
65
+ "jsii-pacmak": "^1.115.0",
66
+ "jsii-rosetta": "~5.9.7",
67
+ "prettier": "^3.6.2",
68
+ "projen": "^0.96.3",
69
+ "ts-jest": "^29.4.4",
70
70
  "ts-node": "^10.9.2",
71
- "typescript": "^5.7.3"
71
+ "typescript": "^5.9.3"
72
72
  },
73
73
  "peerDependencies": {
74
- "aws-cdk-lib": "^2.170.0",
74
+ "aws-cdk-lib": "^2.189.1",
75
75
  "constructs": "^10.0.5"
76
76
  },
77
77
  "keywords": [
@@ -92,7 +92,7 @@
92
92
  "publishConfig": {
93
93
  "access": "public"
94
94
  },
95
- "version": "0.0.1-alpha.6",
95
+ "version": "0.0.1-alpha.60",
96
96
  "jest": {
97
97
  "coverageProvider": "v8",
98
98
  "roots": [
@@ -2,12 +2,84 @@
2
2
  import { Construct } from 'constructs';
3
3
  import {
4
4
  Stack,
5
+ Aws,
6
+ Duration
5
7
  } from 'aws-cdk-lib';
8
+ import {
9
+ CfnNatGateway,
10
+ SelectedSubnets,
11
+ SubnetType,
12
+ Vpc,
13
+ } from 'aws-cdk-lib/aws-ec2';
14
+ import { ApplicationLoadBalancer, ApplicationTargetGroup } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
15
+ import { Stats, Unit } from 'aws-cdk-lib/aws-cloudwatch';
16
+ import { ILogGroup, LogGroup } from 'aws-cdk-lib/aws-logs';
17
+
18
+ import { BasicServiceMultiAZObservability } from '@cdklabs/multi-az-observability';
19
+ import { Service } from '@cdklabs/multi-az-observability';
20
+ import { InstrumentedServiceMultiAZObservability } from '@cdklabs/multi-az-observability';
21
+ import { IOperation } from '@cdklabs/multi-az-observability';
22
+ import { IService } from '@cdklabs/multi-az-observability';
23
+ import { Operation } from '@cdklabs/multi-az-observability';
24
+ import { ApplicationLoadBalancerLatencyOutlierAlgorithm } from '@cdklabs/multi-az-observability';
25
+ import { MetricDimensions } from '@cdklabs/multi-az-observability';
26
+ import { OperationAvailabilityMetricDetails } from '@cdklabs/multi-az-observability';
27
+ import { OperationLatencyMetricDetails } from '@cdklabs/multi-az-observability';
28
+ import { ServiceAvailabilityMetricDetails, ServiceLatencyMetricDetails, ContributorInsightRuleDetails } from '@cdklabs/multi-az-observability';
6
29
 
7
30
  class Fixture extends Stack {
8
31
  constructor(scope: Construct, id: string) {
9
32
  super(scope, id);
33
+ let stack = scope;
34
+ let azs: string[] = [
35
+ Aws.REGION + 'a',
36
+ Aws.REGION + 'b',
37
+ Aws.REGION + 'c',
38
+ ];
39
+
40
+ let vpc = new Vpc(stack, 'vpc', {
41
+ availabilityZones: azs,
42
+ subnetConfiguration: [
43
+ {
44
+ subnetType: SubnetType.PRIVATE_WITH_EGRESS,
45
+ name: 'private_with_egress_subnets',
46
+ cidrMask: 24,
47
+ },
48
+ ],
49
+ createInternetGateway: false,
50
+ natGateways: 0,
51
+ restrictDefaultSecurityGroup: false,
52
+ });
53
+
54
+ let subnets: SelectedSubnets = vpc.selectSubnets({
55
+ subnetType: SubnetType.PRIVATE_WITH_EGRESS,
56
+ });
57
+
58
+ let natGateway1 = new CfnNatGateway(stack, 'AZ1NatGateway', {
59
+ subnetId: subnets.subnetIds[0],
60
+ });
61
+ let natGateway2 = new CfnNatGateway(stack, 'AZ2NatGateway', {
62
+ subnetId: subnets.subnetIds[1],
63
+ });
64
+ let natGateway3 = new CfnNatGateway(stack, 'AZ3NatGateway', {
65
+ subnetId: subnets.subnetIds[2],
66
+ });
67
+
68
+ let loadBalancer = new ApplicationLoadBalancer(stack, 'alb', {
69
+ vpc: vpc,
70
+ crossZoneEnabled: true,
71
+ });
72
+
73
+
74
+ let targetGroup1: ApplicationTargetGroup = new ApplicationTargetGroup(stack, "tg1", {
75
+
76
+ });
77
+
78
+ let targetGroup2: ApplicationTargetGroup = new ApplicationTargetGroup(stack, "tg2", {
79
+
80
+ });
10
81
 
82
+ let logGroup: ILogGroup = new LogGroup(stack, 'Logs', {});
11
83
  /// here
12
84
  }
13
85
  }
@@ -0,0 +1,144 @@
1
+ // Fixture with packages imported, but nothing else
2
+ import { Construct } from 'constructs';
3
+ import {
4
+ Stack,
5
+ Aws,
6
+ Duration
7
+ } from 'aws-cdk-lib';
8
+ import {
9
+ CfnNatGateway,
10
+ SelectedSubnets,
11
+ SubnetType,
12
+ Vpc,
13
+ } from 'aws-cdk-lib/aws-ec2';
14
+ import { ApplicationLoadBalancer, ApplicationTargetGroup } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
15
+ import { Stats, Unit } from 'aws-cdk-lib/aws-cloudwatch';
16
+ import { ILogGroup, LogGroup } from 'aws-cdk-lib/aws-logs';
17
+
18
+ import { BasicServiceMultiAZObservability } from '@cdklabs/multi-az-observability';
19
+ import { Service } from '@cdklabs/multi-az-observability';
20
+ import { InstrumentedServiceMultiAZObservability } from '@cdklabs/multi-az-observability';
21
+ import { IOperation } from '@cdklabs/multi-az-observability';
22
+ import { IService } from '@cdklabs/multi-az-observability';
23
+ import { Operation } from '@cdklabs/multi-az-observability';
24
+ import { ApplicationLoadBalancerLatencyOutlierAlgorithm } from '@cdklabs/multi-az-observability';
25
+ import { MetricDimensions } from '@cdklabs/multi-az-observability';
26
+ import { OperationAvailabilityMetricDetails } from '@cdklabs/multi-az-observability';
27
+ import { OperationLatencyMetricDetails } from '@cdklabs/multi-az-observability';
28
+ import { ServiceAvailabilityMetricDetails, ServiceLatencyMetricDetails, ContributorInsightRuleDetails } from '@cdklabs/multi-az-observability';
29
+
30
+ class Fixture extends Stack {
31
+ constructor(scope: Construct, id: string) {
32
+ super(scope, id);
33
+ let stack = scope;
34
+ let azs: string[] = [
35
+ Aws.REGION + 'a',
36
+ Aws.REGION + 'b',
37
+ Aws.REGION + 'c',
38
+ ];
39
+
40
+ let vpc = new Vpc(stack, 'vpc', {
41
+ availabilityZones: azs,
42
+ subnetConfiguration: [
43
+ {
44
+ subnetType: SubnetType.PRIVATE_WITH_EGRESS,
45
+ name: 'private_with_egress_subnets',
46
+ cidrMask: 24,
47
+ },
48
+ ],
49
+ createInternetGateway: false,
50
+ natGateways: 0,
51
+ restrictDefaultSecurityGroup: false,
52
+ });
53
+
54
+ let subnets: SelectedSubnets = vpc.selectSubnets({
55
+ subnetType: SubnetType.PRIVATE_WITH_EGRESS,
56
+ });
57
+
58
+ let natGateway1 = new CfnNatGateway(stack, 'AZ1NatGateway', {
59
+ subnetId: subnets.subnetIds[0],
60
+ });
61
+ let natGateway2 = new CfnNatGateway(stack, 'AZ2NatGateway', {
62
+ subnetId: subnets.subnetIds[1],
63
+ });
64
+ let natGateway3 = new CfnNatGateway(stack, 'AZ3NatGateway', {
65
+ subnetId: subnets.subnetIds[2],
66
+ });
67
+
68
+
69
+ let loadBalancer = new ApplicationLoadBalancer(stack, 'alb', {
70
+ vpc: vpc,
71
+ crossZoneEnabled: true,
72
+ });
73
+
74
+
75
+ let targetGroup1: ApplicationTargetGroup = new ApplicationTargetGroup(stack, "tg1", {
76
+
77
+ });
78
+
79
+ let targetGroup2: ApplicationTargetGroup = new ApplicationTargetGroup(stack, "tg2", {
80
+
81
+ });
82
+
83
+ let logGroup: ILogGroup = new LogGroup(stack, 'Logs', {});
84
+
85
+ let service: IService = new Service({
86
+ serviceName: 'test',
87
+ availabilityZoneNames: vpc.availabilityZones,
88
+ baseUrl: 'http://www.example.com',
89
+ faultCountThreshold: 25,
90
+ period: Duration.seconds(60),
91
+ loadBalancer: loadBalancer,
92
+ targetGroups: [ targetGroup1, targetGroup2 ],
93
+ defaultAvailabilityMetricDetails: {
94
+ metricNamespace: 'front-end/metrics',
95
+ successMetricNames: ['Success'],
96
+ faultMetricNames: ['Fault', 'Error'],
97
+ alarmStatistic: 'Sum',
98
+ unit: Unit.COUNT,
99
+ period: Duration.seconds(60),
100
+ evaluationPeriods: 5,
101
+ datapointsToAlarm: 3,
102
+ successAlarmThreshold: 99.9,
103
+ faultAlarmThreshold: 0.1,
104
+ graphedFaultStatistics: ['Sum'],
105
+ graphedSuccessStatistics: ['Sum'],
106
+ },
107
+ defaultLatencyMetricDetails: {
108
+ metricNamespace: 'front-end/metrics',
109
+ successMetricNames: ['SuccessLatency'],
110
+ faultMetricNames: ['FaultLatency'],
111
+ alarmStatistic: 'p99',
112
+ unit: Unit.MILLISECONDS,
113
+ period: Duration.seconds(60),
114
+ evaluationPeriods: 5,
115
+ datapointsToAlarm: 3,
116
+ successAlarmThreshold: Duration.millis(150),
117
+ graphedFaultStatistics: ['p99'],
118
+ graphedSuccessStatistics: ['p50', 'p99', 'tm99'],
119
+ },
120
+ defaultContributorInsightRuleDetails: {
121
+ successLatencyMetricJsonPath: '$.SuccessLatency',
122
+ faultMetricJsonPath: '$.Faults',
123
+ operationNameJsonPath: '$.Operation',
124
+ instanceIdJsonPath: '$.InstanceId',
125
+ availabilityZoneIdJsonPath: '$.AZ-ID',
126
+ logGroups: [logGroup],
127
+ },
128
+ canaryTestProps: {
129
+ requestCount: 10,
130
+ schedule: 'rate(1 minute)',
131
+ loadBalancer: loadBalancer,
132
+ networkConfiguration: {
133
+ vpc: vpc,
134
+ subnetSelection: { subnetType: SubnetType.PRIVATE_ISOLATED },
135
+ },
136
+ },
137
+ minimumUnhealthyTargets: {
138
+ percentage: 0.1
139
+ }
140
+ });
141
+
142
+ /// here
143
+ }
144
+ }
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApplicationLoadBalancerLatencyOutlierCalculation = void 0;
4
- /**
5
- * The options for calculating if an AZ is an outlier for latency for ALBs
6
- */
7
- var ApplicationLoadBalancerLatencyOutlierCalculation;
8
- (function (ApplicationLoadBalancerLatencyOutlierCalculation) {
9
- /**
10
- * This will take the latency threshold and count the number of requests per AZ
11
- * that exceed this threshold and then calculate the percentage of requests
12
- * exceeding this threshold belong to each AZ. This provides a static comparison
13
- * of the number of high latency requests in one AZ versus the others
14
- */
15
- ApplicationLoadBalancerLatencyOutlierCalculation["STATIC"] = "STATIC";
16
- /**
17
- * This calculates the z score of latency in one AZ against the other AZs. It uses
18
- * the target response time of all requests to calculate the standard deviation and
19
- * average for all AZs. This is the default.
20
- */
21
- ApplicationLoadBalancerLatencyOutlierCalculation["Z_SCORE"] = "Z_SCORE";
22
- })(ApplicationLoadBalancerLatencyOutlierCalculation || (exports.ApplicationLoadBalancerLatencyOutlierCalculation = ApplicationLoadBalancerLatencyOutlierCalculation = {}));
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckNhbGN1bGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckNhbGN1bGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxnREFnQlg7QUFoQkQsV0FBWSxnREFBZ0Q7SUFFeEQ7Ozs7O09BS0c7SUFDSCxxRUFBaUIsQ0FBQTtJQUVqQjs7OztPQUlHO0lBQ0gsdUVBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQWhCVyxnREFBZ0QsZ0VBQWhELGdEQUFnRCxRQWdCM0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBvcHRpb25zIGZvciBjYWxjdWxhdGluZyBpZiBhbiBBWiBpcyBhbiBvdXRsaWVyIGZvciBsYXRlbmN5IGZvciBBTEJzXG4gKi9cbmV4cG9ydCBlbnVtIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU91dGxpZXJDYWxjdWxhdGlvblxue1xuICAgIC8qKlxuICAgICAqIFRoaXMgd2lsbCB0YWtlIHRoZSBsYXRlbmN5IHRocmVzaG9sZCBhbmQgY291bnQgdGhlIG51bWJlciBvZiByZXF1ZXN0cyBwZXIgQVogXG4gICAgICogdGhhdCBleGNlZWQgdGhpcyB0aHJlc2hvbGQgYW5kIHRoZW4gY2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlIG9mIHJlcXVlc3RzXG4gICAgICogZXhjZWVkaW5nIHRoaXMgdGhyZXNob2xkIGJlbG9uZyB0byBlYWNoIEFaLiBUaGlzIHByb3ZpZGVzIGEgc3RhdGljIGNvbXBhcmlzb25cbiAgICAgKiBvZiB0aGUgbnVtYmVyIG9mIGhpZ2ggbGF0ZW5jeSByZXF1ZXN0cyBpbiBvbmUgQVogdmVyc3VzIHRoZSBvdGhlcnNcbiAgICAgKi9cbiAgICBTVEFUSUMgPSBcIlNUQVRJQ1wiLFxuXG4gICAgLyoqXG4gICAgICogVGhpcyBjYWxjdWxhdGVzIHRoZSB6IHNjb3JlIG9mIGxhdGVuY3kgaW4gb25lIEFaIGFnYWluc3QgdGhlIG90aGVyIEFacy4gSXQgdXNlc1xuICAgICAqIHRoZSB0YXJnZXQgcmVzcG9uc2UgdGltZSBvZiBhbGwgcmVxdWVzdHMgdG8gY2FsY3VsYXRlIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gYW5kXG4gICAgICogYXZlcmFnZSBmb3IgYWxsIEFacy4gVGhpcyBpcyB0aGUgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBaX1NDT1JFPSBcIlpfU0NPUkVcIlxufSJdfQ==
@@ -1,45 +0,0 @@
1
- import { IAlarm } from 'aws-cdk-lib/aws-cloudwatch';
2
- import { CfnNatGateway } from 'aws-cdk-lib/aws-ec2';
3
- import { IApplicationLoadBalancer } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
4
- import { IConstruct } from 'constructs';
5
- /**
6
- * Properties of a basic service
7
- */
8
- export interface IBasicServiceMultiAZObservability extends IConstruct {
9
- /**
10
- * The NAT Gateways being used in the service, each set of NAT Gateways
11
- * are keyed by their Availability Zone Id
12
- */
13
- natGateways?: {
14
- [key: string]: CfnNatGateway[];
15
- };
16
- /**
17
- * The application load balancers being used by the service
18
- */
19
- applicationLoadBalancers?: IApplicationLoadBalancer[];
20
- /**
21
- * The name of the service
22
- */
23
- serviceName: string;
24
- /**
25
- * The alarms indicating if an AZ is an outlier for NAT GW
26
- * packet loss and has isolated impact
27
- */
28
- natGWZonalIsolatedImpactAlarms?: {
29
- [key: string]: IAlarm;
30
- };
31
- /**
32
- * The alarms indicating if an AZ is an outlier for ALB
33
- * faults and has isolated impact
34
- */
35
- albZonalIsolatedImpactAlarms?: {
36
- [key: string]: IAlarm;
37
- };
38
- /**
39
- * The alarms indicating if an AZ has isolated impact
40
- * from either ALB or NAT GW metrics
41
- */
42
- aggregateZonalIsolatedImpactAlarms: {
43
- [key: string]: IAlarm;
44
- };
45
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0lCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ2ZuTmF0R2F0ZXdheSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgYSBiYXNpYyBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5IGV4dGVuZHMgSUNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgTkFUIEdhdGV3YXlzIGJlaW5nIHVzZWQgaW4gdGhlIHNlcnZpY2UsIGVhY2ggc2V0IG9mIE5BVCBHYXRld2F5c1xuICAgKiBhcmUga2V5ZWQgYnkgdGhlaXIgQXZhaWxhYmlsaXR5IFpvbmUgSWRcbiAgICovXG4gIG5hdEdhdGV3YXlzPzogeyBba2V5OiBzdHJpbmddOiBDZm5OYXRHYXRld2F5W10gfTtcblxuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIGxvYWQgYmFsYW5jZXJzIGJlaW5nIHVzZWQgYnkgdGhlIHNlcnZpY2VcbiAgICovXG4gIGFwcGxpY2F0aW9uTG9hZEJhbGFuY2Vycz86IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VydmljZVxuICAgKi9cbiAgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFsYXJtcyBpbmRpY2F0aW5nIGlmIGFuIEFaIGlzIGFuIG91dGxpZXIgZm9yIE5BVCBHV1xuICAgKiBwYWNrZXQgbG9zcyBhbmQgaGFzIGlzb2xhdGVkIGltcGFjdFxuICAgKi9cbiAgbmF0R1dab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zPzogeyBba2V5OiBzdHJpbmddOiBJQWxhcm0gfTtcblxuICAvKipcbiAgICogVGhlIGFsYXJtcyBpbmRpY2F0aW5nIGlmIGFuIEFaIGlzIGFuIG91dGxpZXIgZm9yIEFMQlxuICAgKiBmYXVsdHMgYW5kIGhhcyBpc29sYXRlZCBpbXBhY3RcbiAgICovXG4gIGFsYlpvbmFsSXNvbGF0ZWRJbXBhY3RBbGFybXM/OiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgYWxhcm1zIGluZGljYXRpbmcgaWYgYW4gQVogaGFzIGlzb2xhdGVkIGltcGFjdFxuICAgKiBmcm9tIGVpdGhlciBBTEIgb3IgTkFUIEdXIG1ldHJpY3NcbiAgICovXG4gIGFnZ3JlZ2F0ZVpvbmFsSXNvbGF0ZWRJbXBhY3RBbGFybXM6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH07XG59XG4iXX0=