@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 @@
1
+ {"version":"2","toolVersion":"5.9.7","snippets":{"d6c731d0c6229dd65c37f28bef8d6a5c0cf4ce8724edcae8fd56141a3841bffa":{"translations":{"python":{"source":"service = Service(\n service_name=\"test\",\n availability_zone_names=vpc.availability_zones,\n base_url=\"http://www.example.com\",\n fault_count_threshold=25,\n period=Duration.seconds(60),\n load_balancer=load_balancer,\n target_groups=[target_group1, target_group2],\n default_availability_metric_details=ServiceAvailabilityMetricDetails(\n metric_namespace=\"front-end/metrics\",\n success_metric_names=[\"Success\"],\n fault_metric_names=[\"Fault\", \"Error\"],\n alarm_statistic=\"Sum\",\n unit=Unit.COUNT,\n period=Duration.seconds(60),\n evaluation_periods=5,\n datapoints_to_alarm=3,\n success_alarm_threshold=99.9,\n fault_alarm_threshold=0.1,\n graphed_fault_statistics=[\"Sum\"],\n graphed_success_statistics=[\"Sum\"]\n ),\n default_latency_metric_details=ServiceLatencyMetricDetails(\n metric_namespace=\"front-end/metrics\",\n success_metric_names=[\"SuccessLatency\"],\n fault_metric_names=[\"FaultLatency\"],\n alarm_statistic=\"p99\",\n unit=Unit.MILLISECONDS,\n period=Duration.seconds(60),\n evaluation_periods=5,\n datapoints_to_alarm=3,\n success_alarm_threshold=Duration.millis(150),\n graphed_fault_statistics=[\"p99\"],\n graphed_success_statistics=[\"p50\", \"p99\", \"tm99\"]\n ),\n default_contributor_insight_rule_details=ContributorInsightRuleDetails(\n success_latency_metric_json_path=\"$.SuccessLatency\",\n fault_metric_json_path=\"$.Faults\",\n operation_name_json_path=\"$.Operation\",\n instance_id_json_path=\"$.InstanceId\",\n availability_zone_id_json_path=\"$.AZ-ID\",\n log_groups=[log_group]\n ),\n canary_test_props=AddCanaryTestProps(\n request_count=10,\n schedule=\"rate(1 minute)\",\n load_balancer=load_balancer,\n network_configuration=NetworkConfigurationProps(\n vpc=vpc,\n subnet_selection=SubnetSelection(subnet_type=SubnetType.PRIVATE_ISOLATED)\n )\n ),\n minimum_unhealthy_targets=MinimumUnhealthyTargets(\n percentage=0.1\n )\n)\n\nride_operation = {\n \"operation_name\": \"ride\",\n \"service\": service,\n \"path\": \"/ride\",\n \"critical\": True,\n \"http_methods\": [\"GET\"],\n \"server_side_contributor_insight_rule_details\": ContributorInsightRuleDetails(\n log_groups=[log_group],\n success_latency_metric_json_path=\"$.SuccessLatency\",\n fault_metric_json_path=\"$.Faults\",\n operation_name_json_path=\"$.Operation\",\n instance_id_json_path=\"$.InstanceId\",\n availability_zone_id_json_path=\"$.AZ-ID\"\n ),\n \"server_side_availability_metric_details\": OperationAvailabilityMetricDetails(OperationAvailabilityMetricDetailsProps(\n operation_name=\"ride\",\n metric_dimensions=MetricDimensions({\"Operation\": \"ride\"}, \"AZ-ID\", \"Region\")\n ), service.default_availability_metric_details),\n \"server_side_latency_metric_details\": OperationLatencyMetricDetails(OperationLatencyMetricDetailsProps(\n operation_name=\"ride\",\n metric_dimensions=MetricDimensions({\"Operation\": \"ride\"}, \"AZ-ID\", \"Region\")\n ), service.default_latency_metric_details)\n}\n\npay_operation = {\n \"operation_name\": \"pay\",\n \"service\": service,\n \"path\": \"/pay\",\n \"critical\": True,\n \"http_methods\": [\"GET\"],\n \"server_side_contributor_insight_rule_details\": ContributorInsightRuleDetails(\n log_groups=[log_group],\n success_latency_metric_json_path=\"$.SuccessLatency\",\n fault_metric_json_path=\"$.Faults\",\n operation_name_json_path=\"$.Operation\",\n instance_id_json_path=\"$.InstanceId\",\n availability_zone_id_json_path=\"$.AZ-ID\"\n ),\n \"server_side_availability_metric_details\": OperationAvailabilityMetricDetails(OperationAvailabilityMetricDetailsProps(\n operation_name=\"pay\",\n metric_dimensions=MetricDimensions({\"Operation\": \"ride\"}, \"AZ-ID\", \"Region\")\n ), service.default_availability_metric_details),\n \"server_side_latency_metric_details\": OperationLatencyMetricDetails(OperationLatencyMetricDetailsProps(\n operation_name=\"pay\",\n metric_dimensions=MetricDimensions({\"Operation\": \"ride\"}, \"AZ-ID\", \"Region\")\n ), service.default_latency_metric_details)\n}\n\nservice.add_operation(ride_operation)\nservice.add_operation(pay_operation)","version":"2"},"csharp":{"source":"var service = new Service(new ServiceProps {\n ServiceName = \"test\",\n AvailabilityZoneNames = vpc.AvailabilityZones,\n BaseUrl = \"http://www.example.com\",\n FaultCountThreshold = 25,\n Period = Duration.Seconds(60),\n LoadBalancer = loadBalancer,\n TargetGroups = new [] { targetGroup1, targetGroup2 },\n DefaultAvailabilityMetricDetails = new ServiceAvailabilityMetricDetails(new ServiceAvailabilityMetricDetailsProps {\n MetricNamespace = \"front-end/metrics\",\n SuccessMetricNames = new [] { \"Success\" },\n FaultMetricNames = new [] { \"Fault\", \"Error\" },\n AlarmStatistic = \"Sum\",\n Unit = Unit.COUNT,\n Period = Duration.Seconds(60),\n EvaluationPeriods = 5,\n DatapointsToAlarm = 3,\n SuccessAlarmThreshold = 99.9,\n FaultAlarmThreshold = 0.1,\n GraphedFaultStatistics = new [] { \"Sum\" },\n GraphedSuccessStatistics = new [] { \"Sum\" }\n }),\n DefaultLatencyMetricDetails = new ServiceLatencyMetricDetails(new ServiceLatencyMetricDetailsProps {\n MetricNamespace = \"front-end/metrics\",\n SuccessMetricNames = new [] { \"SuccessLatency\" },\n FaultMetricNames = new [] { \"FaultLatency\" },\n AlarmStatistic = \"p99\",\n Unit = Unit.MILLISECONDS,\n Period = Duration.Seconds(60),\n EvaluationPeriods = 5,\n DatapointsToAlarm = 3,\n SuccessAlarmThreshold = Duration.Millis(150),\n GraphedFaultStatistics = new [] { \"p99\" },\n GraphedSuccessStatistics = new [] { \"p50\", \"p99\", \"tm99\" }\n }),\n DefaultContributorInsightRuleDetails = new ContributorInsightRuleDetails(new ContributorInsightRuleDetailsProps {\n SuccessLatencyMetricJsonPath = \"$.SuccessLatency\",\n FaultMetricJsonPath = \"$.Faults\",\n OperationNameJsonPath = \"$.Operation\",\n InstanceIdJsonPath = \"$.InstanceId\",\n AvailabilityZoneIdJsonPath = \"$.AZ-ID\",\n LogGroups = new [] { logGroup }\n }),\n CanaryTestProps = new AddCanaryTestProps {\n RequestCount = 10,\n Schedule = \"rate(1 minute)\",\n LoadBalancer = loadBalancer,\n NetworkConfiguration = new NetworkConfigurationProps {\n Vpc = vpc,\n SubnetSelection = new SubnetSelection { SubnetType = SubnetType.PRIVATE_ISOLATED }\n }\n },\n MinimumUnhealthyTargets = new MinimumUnhealthyTargets {\n Percentage = 0.1\n }\n});\n\nvar rideOperation = new Dictionary<string, object> {\n { \"operationName\", \"ride\" },\n { \"service\", service },\n { \"path\", \"/ride\" },\n { \"critical\", true },\n { \"httpMethods\", new [] { \"GET\" } },\n { \"serverSideContributorInsightRuleDetails\", new ContributorInsightRuleDetails(new ContributorInsightRuleDetailsProps {\n LogGroups = new [] { logGroup },\n SuccessLatencyMetricJsonPath = \"$.SuccessLatency\",\n FaultMetricJsonPath = \"$.Faults\",\n OperationNameJsonPath = \"$.Operation\",\n InstanceIdJsonPath = \"$.InstanceId\",\n AvailabilityZoneIdJsonPath = \"$.AZ-ID\"\n }) },\n { \"serverSideAvailabilityMetricDetails\", new OperationAvailabilityMetricDetails(new OperationAvailabilityMetricDetailsProps {\n OperationName = \"ride\",\n MetricDimensions = new MetricDimensions(new Dictionary<string, string> { { \"Operation\", \"ride\" } }, \"AZ-ID\", \"Region\")\n }, service.DefaultAvailabilityMetricDetails) },\n { \"serverSideLatencyMetricDetails\", new OperationLatencyMetricDetails(new OperationLatencyMetricDetailsProps {\n OperationName = \"ride\",\n MetricDimensions = new MetricDimensions(new Dictionary<string, string> { { \"Operation\", \"ride\" } }, \"AZ-ID\", \"Region\")\n }, service.DefaultLatencyMetricDetails) }\n};\n\nvar payOperation = new Dictionary<string, object> {\n { \"operationName\", \"pay\" },\n { \"service\", service },\n { \"path\", \"/pay\" },\n { \"critical\", true },\n { \"httpMethods\", new [] { \"GET\" } },\n { \"serverSideContributorInsightRuleDetails\", new ContributorInsightRuleDetails(new ContributorInsightRuleDetailsProps {\n LogGroups = new [] { logGroup },\n SuccessLatencyMetricJsonPath = \"$.SuccessLatency\",\n FaultMetricJsonPath = \"$.Faults\",\n OperationNameJsonPath = \"$.Operation\",\n InstanceIdJsonPath = \"$.InstanceId\",\n AvailabilityZoneIdJsonPath = \"$.AZ-ID\"\n }) },\n { \"serverSideAvailabilityMetricDetails\", new OperationAvailabilityMetricDetails(new OperationAvailabilityMetricDetailsProps {\n OperationName = \"pay\",\n MetricDimensions = new MetricDimensions(new Dictionary<string, string> { { \"Operation\", \"ride\" } }, \"AZ-ID\", \"Region\")\n }, service.DefaultAvailabilityMetricDetails) },\n { \"serverSideLatencyMetricDetails\", new OperationLatencyMetricDetails(new OperationLatencyMetricDetailsProps {\n OperationName = \"pay\",\n MetricDimensions = new MetricDimensions(new Dictionary<string, string> { { \"Operation\", \"ride\" } }, \"AZ-ID\", \"Region\")\n }, service.DefaultLatencyMetricDetails) }\n};\n\nservice.AddOperation(rideOperation);\nservice.AddOperation(payOperation);","version":"1"},"java":{"source":"IService service = Service.Builder.create()\n .serviceName(\"test\")\n .availabilityZoneNames(vpc.getAvailabilityZones())\n .baseUrl(\"http://www.example.com\")\n .faultCountThreshold(25)\n .period(Duration.seconds(60))\n .loadBalancer(loadBalancer)\n .targetGroups(List.of(targetGroup1, targetGroup2))\n .defaultAvailabilityMetricDetails(ServiceAvailabilityMetricDetails.Builder.create()\n .metricNamespace(\"front-end/metrics\")\n .successMetricNames(List.of(\"Success\"))\n .faultMetricNames(List.of(\"Fault\", \"Error\"))\n .alarmStatistic(\"Sum\")\n .unit(Unit.COUNT)\n .period(Duration.seconds(60))\n .evaluationPeriods(5)\n .datapointsToAlarm(3)\n .successAlarmThreshold(99.9)\n .faultAlarmThreshold(0.1)\n .graphedFaultStatistics(List.of(\"Sum\"))\n .graphedSuccessStatistics(List.of(\"Sum\"))\n .build())\n .defaultLatencyMetricDetails(ServiceLatencyMetricDetails.Builder.create()\n .metricNamespace(\"front-end/metrics\")\n .successMetricNames(List.of(\"SuccessLatency\"))\n .faultMetricNames(List.of(\"FaultLatency\"))\n .alarmStatistic(\"p99\")\n .unit(Unit.MILLISECONDS)\n .period(Duration.seconds(60))\n .evaluationPeriods(5)\n .datapointsToAlarm(3)\n .successAlarmThreshold(Duration.millis(150))\n .graphedFaultStatistics(List.of(\"p99\"))\n .graphedSuccessStatistics(List.of(\"p50\", \"p99\", \"tm99\"))\n .build())\n .defaultContributorInsightRuleDetails(ContributorInsightRuleDetails.Builder.create()\n .successLatencyMetricJsonPath(\"$.SuccessLatency\")\n .faultMetricJsonPath(\"$.Faults\")\n .operationNameJsonPath(\"$.Operation\")\n .instanceIdJsonPath(\"$.InstanceId\")\n .availabilityZoneIdJsonPath(\"$.AZ-ID\")\n .logGroups(List.of(logGroup))\n .build())\n .canaryTestProps(AddCanaryTestProps.builder()\n .requestCount(10)\n .schedule(\"rate(1 minute)\")\n .loadBalancer(loadBalancer)\n .networkConfiguration(NetworkConfigurationProps.builder()\n .vpc(vpc)\n .subnetSelection(SubnetSelection.builder().subnetType(SubnetType.PRIVATE_ISOLATED).build())\n .build())\n .build())\n .minimumUnhealthyTargets(MinimumUnhealthyTargets.builder()\n .percentage(0.1)\n .build())\n .build();\n\nOperation rideOperation = Map.of(\n \"operationName\", \"ride\",\n \"service\", service,\n \"path\", \"/ride\",\n \"critical\", true,\n \"httpMethods\", List.of(\"GET\"),\n \"serverSideContributorInsightRuleDetails\", ContributorInsightRuleDetails.Builder.create()\n .logGroups(List.of(logGroup))\n .successLatencyMetricJsonPath(\"$.SuccessLatency\")\n .faultMetricJsonPath(\"$.Faults\")\n .operationNameJsonPath(\"$.Operation\")\n .instanceIdJsonPath(\"$.InstanceId\")\n .availabilityZoneIdJsonPath(\"$.AZ-ID\")\n .build(),\n \"serverSideAvailabilityMetricDetails\", new OperationAvailabilityMetricDetails(OperationAvailabilityMetricDetailsProps.builder()\n .operationName(\"ride\")\n .metricDimensions(new MetricDimensions(Map.of(\"Operation\", \"ride\"), \"AZ-ID\", \"Region\"))\n .build(), service.getDefaultAvailabilityMetricDetails()),\n \"serverSideLatencyMetricDetails\", new OperationLatencyMetricDetails(OperationLatencyMetricDetailsProps.builder()\n .operationName(\"ride\")\n .metricDimensions(new MetricDimensions(Map.of(\"Operation\", \"ride\"), \"AZ-ID\", \"Region\"))\n .build(), service.getDefaultLatencyMetricDetails()));\n\nOperation payOperation = Map.of(\n \"operationName\", \"pay\",\n \"service\", service,\n \"path\", \"/pay\",\n \"critical\", true,\n \"httpMethods\", List.of(\"GET\"),\n \"serverSideContributorInsightRuleDetails\", ContributorInsightRuleDetails.Builder.create()\n .logGroups(List.of(logGroup))\n .successLatencyMetricJsonPath(\"$.SuccessLatency\")\n .faultMetricJsonPath(\"$.Faults\")\n .operationNameJsonPath(\"$.Operation\")\n .instanceIdJsonPath(\"$.InstanceId\")\n .availabilityZoneIdJsonPath(\"$.AZ-ID\")\n .build(),\n \"serverSideAvailabilityMetricDetails\", new OperationAvailabilityMetricDetails(OperationAvailabilityMetricDetailsProps.builder()\n .operationName(\"pay\")\n .metricDimensions(new MetricDimensions(Map.of(\"Operation\", \"ride\"), \"AZ-ID\", \"Region\"))\n .build(), service.getDefaultAvailabilityMetricDetails()),\n \"serverSideLatencyMetricDetails\", new OperationLatencyMetricDetails(OperationLatencyMetricDetailsProps.builder()\n .operationName(\"pay\")\n .metricDimensions(new MetricDimensions(Map.of(\"Operation\", \"ride\"), \"AZ-ID\", \"Region\"))\n .build(), service.getDefaultLatencyMetricDetails()));\n\nservice.addOperation(rideOperation);\nservice.addOperation(payOperation);","version":"1"},"go":{"source":"service := multi-az-observability.NewService(&ServiceProps{\n\tServiceName: jsii.String(\"test\"),\n\tAvailabilityZoneNames: vpc.AvailabilityZones,\n\tBaseUrl: jsii.String(\"http://www.example.com\"),\n\tFaultCountThreshold: jsii.Number(25),\n\tPeriod: awscdk.Duration_Seconds(jsii.Number(60)),\n\tLoadBalancer: loadBalancer,\n\tTargetGroups: []iTargetGroup{\n\t\ttargetGroup1,\n\t\ttargetGroup2,\n\t},\n\tDefaultAvailabilityMetricDetails: multi-az-observability.NewServiceAvailabilityMetricDetails(&ServiceAvailabilityMetricDetailsProps{\n\t\tMetricNamespace: jsii.String(\"front-end/metrics\"),\n\t\tSuccessMetricNames: []*string{\n\t\t\tjsii.String(\"Success\"),\n\t\t},\n\t\tFaultMetricNames: []*string{\n\t\t\tjsii.String(\"Fault\"),\n\t\t\tjsii.String(\"Error\"),\n\t\t},\n\t\tAlarmStatistic: jsii.String(\"Sum\"),\n\t\tUnit: awscdk.Unit_COUNT,\n\t\tPeriod: awscdk.Duration_*Seconds(jsii.Number(60)),\n\t\tEvaluationPeriods: jsii.Number(5),\n\t\tDatapointsToAlarm: jsii.Number(3),\n\t\tSuccessAlarmThreshold: jsii.Number(99.9),\n\t\tFaultAlarmThreshold: jsii.Number(0.1),\n\t\tGraphedFaultStatistics: []*string{\n\t\t\tjsii.String(\"Sum\"),\n\t\t},\n\t\tGraphedSuccessStatistics: []*string{\n\t\t\tjsii.String(\"Sum\"),\n\t\t},\n\t}),\n\tDefaultLatencyMetricDetails: multi-az-observability.NewServiceLatencyMetricDetails(&ServiceLatencyMetricDetailsProps{\n\t\tMetricNamespace: jsii.String(\"front-end/metrics\"),\n\t\tSuccessMetricNames: []*string{\n\t\t\tjsii.String(\"SuccessLatency\"),\n\t\t},\n\t\tFaultMetricNames: []*string{\n\t\t\tjsii.String(\"FaultLatency\"),\n\t\t},\n\t\tAlarmStatistic: jsii.String(\"p99\"),\n\t\tUnit: awscdk.Unit_MILLISECONDS,\n\t\tPeriod: awscdk.Duration_*Seconds(jsii.Number(60)),\n\t\tEvaluationPeriods: jsii.Number(5),\n\t\tDatapointsToAlarm: jsii.Number(3),\n\t\tSuccessAlarmThreshold: awscdk.Duration_Millis(jsii.Number(150)),\n\t\tGraphedFaultStatistics: []*string{\n\t\t\tjsii.String(\"p99\"),\n\t\t},\n\t\tGraphedSuccessStatistics: []*string{\n\t\t\tjsii.String(\"p50\"),\n\t\t\tjsii.String(\"p99\"),\n\t\t\tjsii.String(\"tm99\"),\n\t\t},\n\t}),\n\tDefaultContributorInsightRuleDetails: multi-az-observability.NewContributorInsightRuleDetails(&ContributorInsightRuleDetailsProps{\n\t\tSuccessLatencyMetricJsonPath: jsii.String(\"$.SuccessLatency\"),\n\t\tFaultMetricJsonPath: jsii.String(\"$.Faults\"),\n\t\tOperationNameJsonPath: jsii.String(\"$.Operation\"),\n\t\tInstanceIdJsonPath: jsii.String(\"$.InstanceId\"),\n\t\tAvailabilityZoneIdJsonPath: jsii.String(\"$.AZ-ID\"),\n\t\tLogGroups: []iLogGroup{\n\t\t\tlogGroup,\n\t\t},\n\t}),\n\tCanaryTestProps: &AddCanaryTestProps{\n\t\tRequestCount: jsii.Number(10),\n\t\tSchedule: jsii.String(\"rate(1 minute)\"),\n\t\tLoadBalancer: loadBalancer,\n\t\tNetworkConfiguration: &NetworkConfigurationProps{\n\t\t\tVpc: vpc,\n\t\t\tSubnetSelection: &SubnetSelection{\n\t\t\t\tSubnetType: awscdk.SubnetType_PRIVATE_ISOLATED,\n\t\t\t},\n\t\t},\n\t},\n\tMinimumUnhealthyTargets: &MinimumUnhealthyTargets{\n\t\tPercentage: jsii.Number(0.1),\n\t},\n})\n\nrideOperation := map[string]interface{}{\n\t\"operationName\": jsii.String(\"ride\"),\n\t\"service\": service,\n\t\"path\": jsii.String(\"/ride\"),\n\t\"critical\": jsii.Boolean(true),\n\t\"httpMethods\": []*string{\n\t\tjsii.String(\"GET\"),\n\t},\n\t\"serverSideContributorInsightRuleDetails\": multi-az-observability.NewContributorInsightRuleDetails(&ContributorInsightRuleDetailsProps{\n\t\t\"logGroups\": []*iLogGroup{\n\t\t\tlogGroup,\n\t\t},\n\t\t\"successLatencyMetricJsonPath\": jsii.String(\"$.SuccessLatency\"),\n\t\t\"faultMetricJsonPath\": jsii.String(\"$.Faults\"),\n\t\t\"operationNameJsonPath\": jsii.String(\"$.Operation\"),\n\t\t\"instanceIdJsonPath\": jsii.String(\"$.InstanceId\"),\n\t\t\"availabilityZoneIdJsonPath\": jsii.String(\"$.AZ-ID\"),\n\t}),\n\t\"serverSideAvailabilityMetricDetails\": multi-az-observability.NewOperationAvailabilityMetricDetails(&OperationAvailabilityMetricDetailsProps{\n\t\t\"operationName\": jsii.String(\"ride\"),\n\t\t\"metricDimensions\": multi-az-observability.NewMetricDimensions(map[string]*string{\n\t\t\t\"Operation\": jsii.String(\"ride\"),\n\t\t}, jsii.String(\"AZ-ID\"), jsii.String(\"Region\")),\n\t}, service.defaultAvailabilityMetricDetails),\n\t\"serverSideLatencyMetricDetails\": multi-az-observability.NewOperationLatencyMetricDetails(&OperationLatencyMetricDetailsProps{\n\t\t\"operationName\": jsii.String(\"ride\"),\n\t\t\"metricDimensions\": multi-az-observability.NewMetricDimensions(map[string]*string{\n\t\t\t\"Operation\": jsii.String(\"ride\"),\n\t\t}, jsii.String(\"AZ-ID\"), jsii.String(\"Region\")),\n\t}, service.defaultLatencyMetricDetails),\n}\n\npayOperation := map[string]interface{}{\n\t\"operationName\": jsii.String(\"pay\"),\n\t\"service\": service,\n\t\"path\": jsii.String(\"/pay\"),\n\t\"critical\": jsii.Boolean(true),\n\t\"httpMethods\": []*string{\n\t\tjsii.String(\"GET\"),\n\t},\n\t\"serverSideContributorInsightRuleDetails\": multi-az-observability.NewContributorInsightRuleDetails(&ContributorInsightRuleDetailsProps{\n\t\t\"logGroups\": []*iLogGroup{\n\t\t\tlogGroup,\n\t\t},\n\t\t\"successLatencyMetricJsonPath\": jsii.String(\"$.SuccessLatency\"),\n\t\t\"faultMetricJsonPath\": jsii.String(\"$.Faults\"),\n\t\t\"operationNameJsonPath\": jsii.String(\"$.Operation\"),\n\t\t\"instanceIdJsonPath\": jsii.String(\"$.InstanceId\"),\n\t\t\"availabilityZoneIdJsonPath\": jsii.String(\"$.AZ-ID\"),\n\t}),\n\t\"serverSideAvailabilityMetricDetails\": multi-az-observability.NewOperationAvailabilityMetricDetails(&OperationAvailabilityMetricDetailsProps{\n\t\t\"operationName\": jsii.String(\"pay\"),\n\t\t\"metricDimensions\": multi-az-observability.NewMetricDimensions(map[string]*string{\n\t\t\t\"Operation\": jsii.String(\"ride\"),\n\t\t}, jsii.String(\"AZ-ID\"), jsii.String(\"Region\")),\n\t}, service.defaultAvailabilityMetricDetails),\n\t\"serverSideLatencyMetricDetails\": multi-az-observability.NewOperationLatencyMetricDetails(&OperationLatencyMetricDetailsProps{\n\t\t\"operationName\": jsii.String(\"pay\"),\n\t\t\"metricDimensions\": multi-az-observability.NewMetricDimensions(map[string]*string{\n\t\t\t\"Operation\": jsii.String(\"ride\"),\n\t\t}, jsii.String(\"AZ-ID\"), jsii.String(\"Region\")),\n\t}, service.defaultLatencyMetricDetails),\n}\n\nservice.AddOperation(rideOperation)\nservice.AddOperation(payOperation)","version":"1"},"$":{"source":"let service: IService = new Service({\n serviceName: 'test',\n availabilityZoneNames: vpc.availabilityZones,\n baseUrl: 'http://www.example.com',\n faultCountThreshold: 25,\n period: Duration.seconds(60),\n loadBalancer: loadBalancer,\n targetGroups: [ targetGroup1, targetGroup2 ],\n defaultAvailabilityMetricDetails: new ServiceAvailabilityMetricDetails({\n metricNamespace: 'front-end/metrics',\n successMetricNames: ['Success'],\n faultMetricNames: ['Fault', 'Error'],\n alarmStatistic: 'Sum',\n unit: Unit.COUNT,\n period: Duration.seconds(60),\n evaluationPeriods: 5,\n datapointsToAlarm: 3,\n successAlarmThreshold: 99.9,\n faultAlarmThreshold: 0.1,\n graphedFaultStatistics: ['Sum'],\n graphedSuccessStatistics: ['Sum'],\n }),\n defaultLatencyMetricDetails: new ServiceLatencyMetricDetails({\n metricNamespace: 'front-end/metrics',\n successMetricNames: ['SuccessLatency'],\n faultMetricNames: ['FaultLatency'],\n alarmStatistic: 'p99',\n unit: Unit.MILLISECONDS,\n period: Duration.seconds(60),\n evaluationPeriods: 5,\n datapointsToAlarm: 3,\n successAlarmThreshold: Duration.millis(150),\n graphedFaultStatistics: ['p99'],\n graphedSuccessStatistics: ['p50', 'p99', 'tm99'],\n }),\n defaultContributorInsightRuleDetails: new ContributorInsightRuleDetails({\n successLatencyMetricJsonPath: '$.SuccessLatency',\n faultMetricJsonPath: '$.Faults',\n operationNameJsonPath: '$.Operation',\n instanceIdJsonPath: '$.InstanceId',\n availabilityZoneIdJsonPath: '$.AZ-ID',\n logGroups: [logGroup],\n }),\n canaryTestProps: {\n requestCount: 10,\n schedule: 'rate(1 minute)',\n loadBalancer: loadBalancer,\n networkConfiguration: {\n vpc: vpc,\n subnetSelection: { subnetType: SubnetType.PRIVATE_ISOLATED },\n },\n },\n minimumUnhealthyTargets: {\n percentage: 0.1\n }\n });\n\nlet rideOperation: Operation = {\n operationName: 'ride',\n service: service,\n path: '/ride',\n critical: true,\n httpMethods: ['GET'],\n serverSideContributorInsightRuleDetails: new ContributorInsightRuleDetails({\n logGroups: [logGroup],\n successLatencyMetricJsonPath: '$.SuccessLatency',\n faultMetricJsonPath: '$.Faults',\n operationNameJsonPath: '$.Operation',\n instanceIdJsonPath: '$.InstanceId',\n availabilityZoneIdJsonPath: '$.AZ-ID',\n }),\n serverSideAvailabilityMetricDetails: new OperationAvailabilityMetricDetails(\n {\n operationName: 'ride',\n metricDimensions: new MetricDimensions(\n { Operation: 'ride' },\n 'AZ-ID',\n 'Region',\n ),\n },\n service.defaultAvailabilityMetricDetails,\n ),\n serverSideLatencyMetricDetails: new OperationLatencyMetricDetails(\n {\n operationName: 'ride',\n metricDimensions: new MetricDimensions(\n { Operation: 'ride' },\n 'AZ-ID',\n 'Region',\n ),\n },\n service.defaultLatencyMetricDetails,\n ),\n};\n\nlet payOperation: Operation = {\n operationName: 'pay',\n service: service,\n path: '/pay',\n critical: true,\n httpMethods: ['GET'],\n serverSideContributorInsightRuleDetails: new ContributorInsightRuleDetails({\n logGroups: [logGroup],\n successLatencyMetricJsonPath: '$.SuccessLatency',\n faultMetricJsonPath: '$.Faults',\n operationNameJsonPath: '$.Operation',\n instanceIdJsonPath: '$.InstanceId',\n availabilityZoneIdJsonPath: '$.AZ-ID',\n }),\n serverSideAvailabilityMetricDetails: new OperationAvailabilityMetricDetails(\n {\n operationName: 'pay',\n metricDimensions: new MetricDimensions(\n { Operation: 'ride' },\n 'AZ-ID',\n 'Region',\n ),\n },\n service.defaultAvailabilityMetricDetails,\n ),\n serverSideLatencyMetricDetails: new OperationLatencyMetricDetails(\n {\n operationName: 'pay',\n metricDimensions: new MetricDimensions(\n { Operation: 'ride' },\n 'AZ-ID',\n 'Region',\n ),\n },\n service.defaultLatencyMetricDetails,\n ),\n};\n\nservice.addOperation(rideOperation);\nservice.addOperation(payOperation);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/multi-az-observability"},"field":{"field":"markdown","line":8}},"didCompile":true,"fqnsReferenced":["@cdklabs/multi-az-observability.AddCanaryTestProps","@cdklabs/multi-az-observability.ContributorInsightRuleDetails","@cdklabs/multi-az-observability.ContributorInsightRuleDetailsProps","@cdklabs/multi-az-observability.IContributorInsightRuleDetails","@cdklabs/multi-az-observability.IOperation","@cdklabs/multi-az-observability.IOperationAvailabilityMetricDetails","@cdklabs/multi-az-observability.IOperationLatencyMetricDetails","@cdklabs/multi-az-observability.IService","@cdklabs/multi-az-observability.IService#addOperation","@cdklabs/multi-az-observability.IService#defaultAvailabilityMetricDetails","@cdklabs/multi-az-observability.IService#defaultLatencyMetricDetails","@cdklabs/multi-az-observability.IServiceAvailabilityMetricDetails","@cdklabs/multi-az-observability.IServiceLatencyMetricDetails","@cdklabs/multi-az-observability.MetricDimensions","@cdklabs/multi-az-observability.MinimumUnhealthyTargets","@cdklabs/multi-az-observability.NetworkConfigurationProps","@cdklabs/multi-az-observability.Operation","@cdklabs/multi-az-observability.OperationAvailabilityMetricDetails","@cdklabs/multi-az-observability.OperationAvailabilityMetricDetailsProps","@cdklabs/multi-az-observability.OperationLatencyMetricDetails","@cdklabs/multi-az-observability.OperationLatencyMetricDetailsProps","@cdklabs/multi-az-observability.Service","@cdklabs/multi-az-observability.ServiceAvailabilityMetricDetails","@cdklabs/multi-az-observability.ServiceAvailabilityMetricDetailsProps","@cdklabs/multi-az-observability.ServiceLatencyMetricDetails","@cdklabs/multi-az-observability.ServiceLatencyMetricDetailsProps","@cdklabs/multi-az-observability.ServiceProps","aws-cdk-lib.Duration","aws-cdk-lib.Duration#millis","aws-cdk-lib.Duration#seconds","aws-cdk-lib.aws_cloudwatch.Unit","aws-cdk-lib.aws_cloudwatch.Unit#COUNT","aws-cdk-lib.aws_cloudwatch.Unit#MILLISECONDS","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_ec2.SubnetSelection","aws-cdk-lib.aws_ec2.SubnetType","aws-cdk-lib.aws_ec2.SubnetType#PRIVATE_ISOLATED","aws-cdk-lib.aws_ec2.Vpc#availabilityZones","aws-cdk-lib.aws_elasticloadbalancingv2.ILoadBalancerV2"],"fullSource":"// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n Aws,\n Duration\n} from 'aws-cdk-lib';\nimport {\n CfnNatGateway,\n SelectedSubnets,\n SubnetType,\n Vpc,\n} from 'aws-cdk-lib/aws-ec2';\nimport { ApplicationLoadBalancer, ApplicationTargetGroup } from 'aws-cdk-lib/aws-elasticloadbalancingv2';\nimport { Stats, Unit } from 'aws-cdk-lib/aws-cloudwatch';\nimport { ILogGroup, LogGroup } from 'aws-cdk-lib/aws-logs';\n\nimport { BasicServiceMultiAZObservability } from '@cdklabs/multi-az-observability';\nimport { Service } from '@cdklabs/multi-az-observability';\nimport { InstrumentedServiceMultiAZObservability } from '@cdklabs/multi-az-observability';\nimport { IOperation } from '@cdklabs/multi-az-observability';\nimport { IService } from '@cdklabs/multi-az-observability';\nimport { Operation } from '@cdklabs/multi-az-observability';\nimport { ApplicationLoadBalancerLatencyOutlierAlgorithm } from '@cdklabs/multi-az-observability';\nimport { MetricDimensions } from '@cdklabs/multi-az-observability';\nimport { OperationAvailabilityMetricDetails } from '@cdklabs/multi-az-observability';\nimport { OperationLatencyMetricDetails } from '@cdklabs/multi-az-observability';\nimport { ServiceAvailabilityMetricDetails, ServiceLatencyMetricDetails, ContributorInsightRuleDetails } from '@cdklabs/multi-az-observability';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n let stack = scope;\n let azs: string[] = [\n Aws.REGION + 'a',\n Aws.REGION + 'b',\n Aws.REGION + 'c',\n ];\n\n let vpc = new Vpc(stack, 'vpc', {\n availabilityZones: azs,\n subnetConfiguration: [\n {\n subnetType: SubnetType.PRIVATE_WITH_EGRESS,\n name: 'private_with_egress_subnets',\n cidrMask: 24,\n },\n ],\n createInternetGateway: false,\n natGateways: 0,\n restrictDefaultSecurityGroup: false,\n });\n\n let subnets: SelectedSubnets = vpc.selectSubnets({\n subnetType: SubnetType.PRIVATE_WITH_EGRESS,\n });\n\n let natGateway1 = new CfnNatGateway(stack, 'AZ1NatGateway', {\n subnetId: subnets.subnetIds[0],\n });\n let natGateway2 = new CfnNatGateway(stack, 'AZ2NatGateway', {\n subnetId: subnets.subnetIds[1],\n });\n let natGateway3 = new CfnNatGateway(stack, 'AZ3NatGateway', {\n subnetId: subnets.subnetIds[2],\n });\n\n let loadBalancer = new ApplicationLoadBalancer(stack, 'alb', {\n vpc: vpc,\n crossZoneEnabled: true,\n });\n\n\n let targetGroup1: ApplicationTargetGroup = new ApplicationTargetGroup(stack, \"tg1\", {\n\n });\n\n let targetGroup2: ApplicationTargetGroup = new ApplicationTargetGroup(stack, \"tg2\", {\n\n });\n\n let logGroup: ILogGroup = new LogGroup(stack, 'Logs', {});\n // Code snippet begins after !show marker below\n/// !show\nlet service: IService = new Service({\n serviceName: 'test',\n availabilityZoneNames: vpc.availabilityZones,\n baseUrl: 'http://www.example.com',\n faultCountThreshold: 25,\n period: Duration.seconds(60),\n loadBalancer: loadBalancer,\n targetGroups: [ targetGroup1, targetGroup2 ],\n defaultAvailabilityMetricDetails: new ServiceAvailabilityMetricDetails({\n metricNamespace: 'front-end/metrics',\n successMetricNames: ['Success'],\n faultMetricNames: ['Fault', 'Error'],\n alarmStatistic: 'Sum',\n unit: Unit.COUNT,\n period: Duration.seconds(60),\n evaluationPeriods: 5,\n datapointsToAlarm: 3,\n successAlarmThreshold: 99.9,\n faultAlarmThreshold: 0.1,\n graphedFaultStatistics: ['Sum'],\n graphedSuccessStatistics: ['Sum'],\n }),\n defaultLatencyMetricDetails: new ServiceLatencyMetricDetails({\n metricNamespace: 'front-end/metrics',\n successMetricNames: ['SuccessLatency'],\n faultMetricNames: ['FaultLatency'],\n alarmStatistic: 'p99',\n unit: Unit.MILLISECONDS,\n period: Duration.seconds(60),\n evaluationPeriods: 5,\n datapointsToAlarm: 3,\n successAlarmThreshold: Duration.millis(150),\n graphedFaultStatistics: ['p99'],\n graphedSuccessStatistics: ['p50', 'p99', 'tm99'],\n }),\n defaultContributorInsightRuleDetails: new ContributorInsightRuleDetails({\n successLatencyMetricJsonPath: '$.SuccessLatency',\n faultMetricJsonPath: '$.Faults',\n operationNameJsonPath: '$.Operation',\n instanceIdJsonPath: '$.InstanceId',\n availabilityZoneIdJsonPath: '$.AZ-ID',\n logGroups: [logGroup],\n }),\n canaryTestProps: {\n requestCount: 10,\n schedule: 'rate(1 minute)',\n loadBalancer: loadBalancer,\n networkConfiguration: {\n vpc: vpc,\n subnetSelection: { subnetType: SubnetType.PRIVATE_ISOLATED },\n },\n },\n minimumUnhealthyTargets: {\n percentage: 0.1\n }\n });\n\nlet rideOperation: Operation = {\n operationName: 'ride',\n service: service,\n path: '/ride',\n critical: true,\n httpMethods: ['GET'],\n serverSideContributorInsightRuleDetails: new ContributorInsightRuleDetails({\n logGroups: [logGroup],\n successLatencyMetricJsonPath: '$.SuccessLatency',\n faultMetricJsonPath: '$.Faults',\n operationNameJsonPath: '$.Operation',\n instanceIdJsonPath: '$.InstanceId',\n availabilityZoneIdJsonPath: '$.AZ-ID',\n }),\n serverSideAvailabilityMetricDetails: new OperationAvailabilityMetricDetails(\n {\n operationName: 'ride',\n metricDimensions: new MetricDimensions(\n { Operation: 'ride' },\n 'AZ-ID',\n 'Region',\n ),\n },\n service.defaultAvailabilityMetricDetails,\n ),\n serverSideLatencyMetricDetails: new OperationLatencyMetricDetails(\n {\n operationName: 'ride',\n metricDimensions: new MetricDimensions(\n { Operation: 'ride' },\n 'AZ-ID',\n 'Region',\n ),\n },\n service.defaultLatencyMetricDetails,\n ),\n};\n\nlet payOperation: Operation = {\n operationName: 'pay',\n service: service,\n path: '/pay',\n critical: true,\n httpMethods: ['GET'],\n serverSideContributorInsightRuleDetails: new ContributorInsightRuleDetails({\n logGroups: [logGroup],\n successLatencyMetricJsonPath: '$.SuccessLatency',\n faultMetricJsonPath: '$.Faults',\n operationNameJsonPath: '$.Operation',\n instanceIdJsonPath: '$.InstanceId',\n availabilityZoneIdJsonPath: '$.AZ-ID',\n }),\n serverSideAvailabilityMetricDetails: new OperationAvailabilityMetricDetails(\n {\n operationName: 'pay',\n metricDimensions: new MetricDimensions(\n { Operation: 'ride' },\n 'AZ-ID',\n 'Region',\n ),\n },\n service.defaultAvailabilityMetricDetails,\n ),\n serverSideLatencyMetricDetails: new OperationLatencyMetricDetails(\n {\n operationName: 'pay',\n metricDimensions: new MetricDimensions(\n { Operation: 'ride' },\n 'AZ-ID',\n 'Region',\n ),\n },\n service.defaultLatencyMetricDetails,\n ),\n};\n\nservice.addOperation(rideOperation);\nservice.addOperation(payOperation);\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"9":13,"11":55,"80":149,"112":2,"184":3,"210":14,"211":20,"212":14,"214":6,"215":14,"244":3,"245":2,"261":3,"262":3,"304":89},"fqnsFingerprint":"d7bf974337b7acf92cf4bf31c641ee864b91e311214c027fa842ca3862b1510b"},"8f8a40601c508a0b17d63f904d6925eb8577c14f5863523571474b238a4526d2":{"translations":{"python":{"source":"InstrumentedServiceMultiAZObservability(stack, \"MAZObservability\",\n create_dashboards=True,\n service=service,\n interval=Duration.minutes(60)\n)","version":"2"},"csharp":{"source":"new InstrumentedServiceMultiAZObservability(stack, \"MAZObservability\", new InstrumentedServiceMultiAZObservabilityProps {\n CreateDashboards = true,\n Service = service,\n Interval = Duration.Minutes(60)\n});","version":"1"},"java":{"source":"InstrumentedServiceMultiAZObservability.Builder.create(stack, \"MAZObservability\")\n .createDashboards(true)\n .service(service)\n .interval(Duration.minutes(60))\n .build();","version":"1"},"go":{"source":"multi-az-observability.NewInstrumentedServiceMultiAZObservability(stack, jsii.String(\"MAZObservability\"), &InstrumentedServiceMultiAZObservabilityProps{\n\tCreateDashboards: jsii.Boolean(true),\n\tService: service,\n\tInterval: awscdk.Duration_Minutes(jsii.Number(60)),\n})","version":"1"},"$":{"source":"new InstrumentedServiceMultiAZObservability(stack, 'MAZObservability', {\n createDashboards: true,\n service: service,\n interval: Duration.minutes(60)\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/multi-az-observability"},"field":{"field":"markdown","line":148}},"didCompile":true,"fqnsReferenced":["@cdklabs/multi-az-observability.AddCanaryTestProps","@cdklabs/multi-az-observability.IContributorInsightRuleDetails","@cdklabs/multi-az-observability.IService","@cdklabs/multi-az-observability.IServiceAvailabilityMetricDetails","@cdklabs/multi-az-observability.IServiceLatencyMetricDetails","@cdklabs/multi-az-observability.InstrumentedServiceMultiAZObservability","@cdklabs/multi-az-observability.InstrumentedServiceMultiAZObservabilityProps","@cdklabs/multi-az-observability.MinimumUnhealthyTargets","@cdklabs/multi-az-observability.NetworkConfigurationProps","aws-cdk-lib.Duration","aws-cdk-lib.Duration#minutes","aws-cdk-lib.aws_cloudwatch.Unit","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_ec2.SubnetSelection","aws-cdk-lib.aws_ec2.SubnetType","aws-cdk-lib.aws_elasticloadbalancingv2.ILoadBalancerV2"],"fullSource":"// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n Aws,\n Duration\n} from 'aws-cdk-lib';\nimport {\n CfnNatGateway,\n SelectedSubnets,\n SubnetType,\n Vpc,\n} from 'aws-cdk-lib/aws-ec2';\nimport { ApplicationLoadBalancer, ApplicationTargetGroup } from 'aws-cdk-lib/aws-elasticloadbalancingv2';\nimport { Stats, Unit } from 'aws-cdk-lib/aws-cloudwatch';\nimport { ILogGroup, LogGroup } from 'aws-cdk-lib/aws-logs';\n\nimport { BasicServiceMultiAZObservability } from '@cdklabs/multi-az-observability';\nimport { Service } from '@cdklabs/multi-az-observability';\nimport { InstrumentedServiceMultiAZObservability } from '@cdklabs/multi-az-observability';\nimport { IOperation } from '@cdklabs/multi-az-observability';\nimport { IService } from '@cdklabs/multi-az-observability';\nimport { Operation } from '@cdklabs/multi-az-observability';\nimport { ApplicationLoadBalancerLatencyOutlierAlgorithm } from '@cdklabs/multi-az-observability';\nimport { MetricDimensions } from '@cdklabs/multi-az-observability';\nimport { OperationAvailabilityMetricDetails } from '@cdklabs/multi-az-observability';\nimport { OperationLatencyMetricDetails } from '@cdklabs/multi-az-observability';\nimport { ServiceAvailabilityMetricDetails, ServiceLatencyMetricDetails, ContributorInsightRuleDetails } from '@cdklabs/multi-az-observability';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n let stack = scope;\n let azs: string[] = [\n Aws.REGION + 'a',\n Aws.REGION + 'b',\n Aws.REGION + 'c',\n ];\n\n let vpc = new Vpc(stack, 'vpc', {\n availabilityZones: azs,\n subnetConfiguration: [\n {\n subnetType: SubnetType.PRIVATE_WITH_EGRESS,\n name: 'private_with_egress_subnets',\n cidrMask: 24,\n },\n ],\n createInternetGateway: false,\n natGateways: 0,\n restrictDefaultSecurityGroup: false,\n });\n\n let subnets: SelectedSubnets = vpc.selectSubnets({\n subnetType: SubnetType.PRIVATE_WITH_EGRESS,\n });\n\n let natGateway1 = new CfnNatGateway(stack, 'AZ1NatGateway', {\n subnetId: subnets.subnetIds[0],\n });\n let natGateway2 = new CfnNatGateway(stack, 'AZ2NatGateway', {\n subnetId: subnets.subnetIds[1],\n });\n let natGateway3 = new CfnNatGateway(stack, 'AZ3NatGateway', {\n subnetId: subnets.subnetIds[2],\n });\n\n\n let loadBalancer = new ApplicationLoadBalancer(stack, 'alb', {\n vpc: vpc,\n crossZoneEnabled: true,\n });\n\n\n let targetGroup1: ApplicationTargetGroup = new ApplicationTargetGroup(stack, \"tg1\", {\n\n });\n\n let targetGroup2: ApplicationTargetGroup = new ApplicationTargetGroup(stack, \"tg2\", {\n\n });\n\n let logGroup: ILogGroup = new LogGroup(stack, 'Logs', {});\n \n let service: IService = new Service({\n serviceName: 'test',\n availabilityZoneNames: vpc.availabilityZones,\n baseUrl: 'http://www.example.com',\n faultCountThreshold: 25,\n period: Duration.seconds(60),\n loadBalancer: loadBalancer,\n targetGroups: [ targetGroup1, targetGroup2 ],\n defaultAvailabilityMetricDetails: {\n metricNamespace: 'front-end/metrics',\n successMetricNames: ['Success'],\n faultMetricNames: ['Fault', 'Error'],\n alarmStatistic: 'Sum',\n unit: Unit.COUNT,\n period: Duration.seconds(60),\n evaluationPeriods: 5,\n datapointsToAlarm: 3,\n successAlarmThreshold: 99.9,\n faultAlarmThreshold: 0.1,\n graphedFaultStatistics: ['Sum'],\n graphedSuccessStatistics: ['Sum'],\n },\n defaultLatencyMetricDetails: {\n metricNamespace: 'front-end/metrics',\n successMetricNames: ['SuccessLatency'],\n faultMetricNames: ['FaultLatency'],\n alarmStatistic: 'p99',\n unit: Unit.MILLISECONDS,\n period: Duration.seconds(60),\n evaluationPeriods: 5,\n datapointsToAlarm: 3,\n successAlarmThreshold: Duration.millis(150),\n graphedFaultStatistics: ['p99'],\n graphedSuccessStatistics: ['p50', 'p99', 'tm99'],\n },\n defaultContributorInsightRuleDetails: {\n successLatencyMetricJsonPath: '$.SuccessLatency',\n faultMetricJsonPath: '$.Faults',\n operationNameJsonPath: '$.Operation',\n instanceIdJsonPath: '$.InstanceId',\n availabilityZoneIdJsonPath: '$.AZ-ID',\n logGroups: [logGroup],\n },\n canaryTestProps: {\n requestCount: 10,\n schedule: 'rate(1 minute)',\n loadBalancer: loadBalancer,\n networkConfiguration: {\n vpc: vpc,\n subnetSelection: { subnetType: SubnetType.PRIVATE_ISOLATED },\n },\n },\n minimumUnhealthyTargets: {\n percentage: 0.1\n }\n });\n \n // Code snippet begins after !show marker below\n/// !show\nnew InstrumentedServiceMultiAZObservability(stack, 'MAZObservability', {\n createDashboards: true,\n service: service,\n interval: Duration.minutes(60)\n});\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"9":1,"11":1,"80":8,"112":1,"211":1,"212":1,"214":1,"215":1,"245":1,"304":3},"fqnsFingerprint":"44ff012ac81c7ee07b82b44d7c2480e0673305f1fd2f1f437ab66a70c4ed001d"},"1b1b41f6e5a09b1d72d9908a4dbaee85d8c1d07ab57bd6735674bf95da7e3271":{"translations":{"python":{"source":"BasicServiceMultiAZObservability(stack, \"MAZObservability\",\n application_load_balancer_props=ApplicationLoadBalancerDetectionProps(\n alb_target_group_map=[AlbTargetGroupMap(\n application_load_balancer=ApplicationLoadBalancer(stack, \"alb\",\n vpc=vpc,\n cross_zone_enabled=True\n ),\n target_groups=[target_group1, target_group2\n ]\n )\n ],\n fault_count_percent_threshold=1,\n latency_statistic=Stats.percentile(99),\n latency_threshold=Duration.millis(200),\n latency_outlier_algorithm=ApplicationLoadBalancerLatencyOutlierAlgorithm.STATIC,\n latency_outlier_threshold=45\n ),\n nat_gateway_props=NatGatewayDetectionProps(\n nat_gateways={\n \"us-east-1a\": [nat_gateway1],\n \"us-east-1b\": [nat_gateway2],\n \"us-east-1c\": [nat_gateway3]\n },\n packet_loss_percent_threshold=0.01\n ),\n service_name=\"test\",\n period=Duration.seconds(60),\n create_dashboard=True,\n evaluation_periods=5,\n datapoints_to_alarm=3\n)","version":"2"},"csharp":{"source":"new BasicServiceMultiAZObservability(stack, \"MAZObservability\", new BasicServiceMultiAZObservabilityProps {\n ApplicationLoadBalancerProps = new ApplicationLoadBalancerDetectionProps {\n AlbTargetGroupMap = new [] { new AlbTargetGroupMap {\n ApplicationLoadBalancer = new ApplicationLoadBalancer(stack, \"alb\", new ApplicationLoadBalancerProps {\n Vpc = vpc,\n CrossZoneEnabled = true\n }),\n TargetGroups = new [] { targetGroup1, targetGroup2 }\n } },\n FaultCountPercentThreshold = 1,\n LatencyStatistic = Stats.Percentile(99),\n LatencyThreshold = Duration.Millis(200),\n LatencyOutlierAlgorithm = ApplicationLoadBalancerLatencyOutlierAlgorithm.STATIC,\n LatencyOutlierThreshold = 45\n },\n NatGatewayProps = new NatGatewayDetectionProps {\n NatGateways = new Dictionary<string, CfnNatGateway[]> {\n { \"us-east-1a\", new [] { natGateway1 } },\n { \"us-east-1b\", new [] { natGateway2 } },\n { \"us-east-1c\", new [] { natGateway3 } }\n },\n PacketLossPercentThreshold = 0.01\n },\n ServiceName = \"test\",\n Period = Duration.Seconds(60),\n CreateDashboard = true,\n EvaluationPeriods = 5,\n DatapointsToAlarm = 3\n});","version":"1"},"java":{"source":"BasicServiceMultiAZObservability.Builder.create(stack, \"MAZObservability\")\n .applicationLoadBalancerProps(ApplicationLoadBalancerDetectionProps.builder()\n .albTargetGroupMap(List.of(AlbTargetGroupMap.builder()\n .applicationLoadBalancer(ApplicationLoadBalancer.Builder.create(stack, \"alb\")\n .vpc(vpc)\n .crossZoneEnabled(true)\n .build())\n .targetGroups(List.of(targetGroup1, targetGroup2))\n .build()))\n .faultCountPercentThreshold(1)\n .latencyStatistic(Stats.percentile(99))\n .latencyThreshold(Duration.millis(200))\n .latencyOutlierAlgorithm(ApplicationLoadBalancerLatencyOutlierAlgorithm.STATIC)\n .latencyOutlierThreshold(45)\n .build())\n .natGatewayProps(NatGatewayDetectionProps.builder()\n .natGateways(Map.of(\n \"us-east-1a\", List.of(natGateway1),\n \"us-east-1b\", List.of(natGateway2),\n \"us-east-1c\", List.of(natGateway3)))\n .packetLossPercentThreshold(0.01)\n .build())\n .serviceName(\"test\")\n .period(Duration.seconds(60))\n .createDashboard(true)\n .evaluationPeriods(5)\n .datapointsToAlarm(3)\n .build();","version":"1"},"go":{"source":"multi-az-observability.NewBasicServiceMultiAZObservability(stack, jsii.String(\"MAZObservability\"), &BasicServiceMultiAZObservabilityProps{\n\tApplicationLoadBalancerProps: &ApplicationLoadBalancerDetectionProps{\n\t\tAlbTargetGroupMap: []albTargetGroupMap{\n\t\t\t&albTargetGroupMap{\n\t\t\t\tApplicationLoadBalancer: awscdk.NewApplicationLoadBalancer(stack, jsii.String(\"alb\"), &ApplicationLoadBalancerProps{\n\t\t\t\t\tVpc: vpc,\n\t\t\t\t\tCrossZoneEnabled: jsii.Boolean(true),\n\t\t\t\t}),\n\t\t\t\tTargetGroups: []iTargetGroup{\n\t\t\t\t\ttargetGroup1,\n\t\t\t\t\ttargetGroup2,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tFaultCountPercentThreshold: jsii.Number(1),\n\t\tLatencyStatistic: awscdk.Stats_Percentile(jsii.Number(99)),\n\t\tLatencyThreshold: awscdk.Duration_Millis(jsii.Number(200)),\n\t\tLatencyOutlierAlgorithm: multi-az-observability.ApplicationLoadBalancerLatencyOutlierAlgorithm_STATIC,\n\t\tLatencyOutlierThreshold: jsii.Number(45),\n\t},\n\tNatGatewayProps: &NatGatewayDetectionProps{\n\t\tNatGateways: map[string][]cfnNatGateway{\n\t\t\t\"us-east-1a\": []*cfnNatGateway{\n\t\t\t\tnatGateway1,\n\t\t\t},\n\t\t\t\"us-east-1b\": []*cfnNatGateway{\n\t\t\t\tnatGateway2,\n\t\t\t},\n\t\t\t\"us-east-1c\": []*cfnNatGateway{\n\t\t\t\tnatGateway3,\n\t\t\t},\n\t\t},\n\t\tPacketLossPercentThreshold: jsii.Number(0.01),\n\t},\n\tServiceName: jsii.String(\"test\"),\n\tPeriod: awscdk.Duration_Seconds(jsii.Number(60)),\n\tCreateDashboard: jsii.Boolean(true),\n\tEvaluationPeriods: jsii.Number(5),\n\tDatapointsToAlarm: jsii.Number(3),\n})","version":"1"},"$":{"source":"new BasicServiceMultiAZObservability(stack, 'MAZObservability', {\n applicationLoadBalancerProps: {\n albTargetGroupMap: [\n {\n applicationLoadBalancer: new ApplicationLoadBalancer(stack, 'alb', {\n vpc: vpc,\n crossZoneEnabled: true,\n }),\n targetGroups: [\n targetGroup1,\n targetGroup2\n ]\n }\n ],\n faultCountPercentThreshold: 1,\n latencyStatistic: Stats.percentile(99),\n latencyThreshold: Duration.millis(200),\n latencyOutlierAlgorithm: ApplicationLoadBalancerLatencyOutlierAlgorithm.STATIC,\n latencyOutlierThreshold: 45\n },\n natGatewayProps: {\n natGateways: {\n \"us-east-1a\": [ natGateway1 ],\n \"us-east-1b\": [ natGateway2 ],\n \"us-east-1c\": [ natGateway3 ]\n },\n packetLossPercentThreshold: 0.01\n },\n serviceName: 'test',\n period: Duration.seconds(60),\n createDashboard: true,\n evaluationPeriods: 5,\n datapointsToAlarm: 3,\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/multi-az-observability"},"field":{"field":"markdown","line":160}},"didCompile":true,"fqnsReferenced":["@cdklabs/multi-az-observability.ApplicationLoadBalancerDetectionProps","@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierAlgorithm","@cdklabs/multi-az-observability.ApplicationLoadBalancerLatencyOutlierAlgorithm#STATIC","@cdklabs/multi-az-observability.BasicServiceMultiAZObservability","@cdklabs/multi-az-observability.BasicServiceMultiAZObservabilityProps","@cdklabs/multi-az-observability.NatGatewayDetectionProps","aws-cdk-lib.Duration","aws-cdk-lib.Duration#millis","aws-cdk-lib.Duration#seconds","aws-cdk-lib.aws_cloudwatch.Stats#percentile","aws-cdk-lib.aws_ec2.IVpc","aws-cdk-lib.aws_ec2.SubnetType","aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer","aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancerProps","aws-cdk-lib.aws_elasticloadbalancingv2.IApplicationLoadBalancer"],"fullSource":"// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n Aws,\n Duration\n} from 'aws-cdk-lib';\nimport {\n CfnNatGateway,\n SelectedSubnets,\n SubnetType,\n Vpc,\n} from 'aws-cdk-lib/aws-ec2';\nimport { ApplicationLoadBalancer, ApplicationTargetGroup } from 'aws-cdk-lib/aws-elasticloadbalancingv2';\nimport { Stats, Unit } from 'aws-cdk-lib/aws-cloudwatch';\nimport { ILogGroup, LogGroup } from 'aws-cdk-lib/aws-logs';\n\nimport { BasicServiceMultiAZObservability } from '@cdklabs/multi-az-observability';\nimport { Service } from '@cdklabs/multi-az-observability';\nimport { InstrumentedServiceMultiAZObservability } from '@cdklabs/multi-az-observability';\nimport { IOperation } from '@cdklabs/multi-az-observability';\nimport { IService } from '@cdklabs/multi-az-observability';\nimport { Operation } from '@cdklabs/multi-az-observability';\nimport { ApplicationLoadBalancerLatencyOutlierAlgorithm } from '@cdklabs/multi-az-observability';\nimport { MetricDimensions } from '@cdklabs/multi-az-observability';\nimport { OperationAvailabilityMetricDetails } from '@cdklabs/multi-az-observability';\nimport { OperationLatencyMetricDetails } from '@cdklabs/multi-az-observability';\nimport { ServiceAvailabilityMetricDetails, ServiceLatencyMetricDetails, ContributorInsightRuleDetails } from '@cdklabs/multi-az-observability';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n let stack = scope;\n let azs: string[] = [\n Aws.REGION + 'a',\n Aws.REGION + 'b',\n Aws.REGION + 'c',\n ];\n\n let vpc = new Vpc(stack, 'vpc', {\n availabilityZones: azs,\n subnetConfiguration: [\n {\n subnetType: SubnetType.PRIVATE_WITH_EGRESS,\n name: 'private_with_egress_subnets',\n cidrMask: 24,\n },\n ],\n createInternetGateway: false,\n natGateways: 0,\n restrictDefaultSecurityGroup: false,\n });\n\n let subnets: SelectedSubnets = vpc.selectSubnets({\n subnetType: SubnetType.PRIVATE_WITH_EGRESS,\n });\n\n let natGateway1 = new CfnNatGateway(stack, 'AZ1NatGateway', {\n subnetId: subnets.subnetIds[0],\n });\n let natGateway2 = new CfnNatGateway(stack, 'AZ2NatGateway', {\n subnetId: subnets.subnetIds[1],\n });\n let natGateway3 = new CfnNatGateway(stack, 'AZ3NatGateway', {\n subnetId: subnets.subnetIds[2],\n });\n\n let loadBalancer = new ApplicationLoadBalancer(stack, 'alb', {\n vpc: vpc,\n crossZoneEnabled: true,\n });\n\n\n let targetGroup1: ApplicationTargetGroup = new ApplicationTargetGroup(stack, \"tg1\", {\n\n });\n\n let targetGroup2: ApplicationTargetGroup = new ApplicationTargetGroup(stack, \"tg2\", {\n\n });\n\n let logGroup: ILogGroup = new LogGroup(stack, 'Logs', {});\n // Code snippet begins after !show marker below\n/// !show\nnew BasicServiceMultiAZObservability(stack, 'MAZObservability', {\n applicationLoadBalancerProps: {\n albTargetGroupMap: [\n {\n applicationLoadBalancer: new ApplicationLoadBalancer(stack, 'alb', {\n vpc: vpc,\n crossZoneEnabled: true,\n }),\n targetGroups: [\n targetGroup1,\n targetGroup2\n ]\n }\n ],\n faultCountPercentThreshold: 1,\n latencyStatistic: Stats.percentile(99),\n latencyThreshold: Duration.millis(200),\n latencyOutlierAlgorithm: ApplicationLoadBalancerLatencyOutlierAlgorithm.STATIC,\n latencyOutlierThreshold: 45\n },\n natGatewayProps: {\n natGateways: {\n \"us-east-1a\": [ natGateway1 ],\n \"us-east-1b\": [ natGateway2 ],\n \"us-east-1c\": [ natGateway3 ]\n },\n packetLossPercentThreshold: 0.01\n },\n serviceName: 'test',\n period: Duration.seconds(60),\n createDashboard: true,\n evaluationPeriods: 5,\n datapointsToAlarm: 3,\n});\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"9":8,"11":6,"80":37,"112":2,"210":5,"211":6,"212":4,"214":3,"215":2,"245":1,"304":22},"fqnsFingerprint":"6e2510bd797b000f375170c033b0b2965832deabf6aeea65ee51714f0c1f1777"}}}