@cdklabs/multi-az-observability 0.0.0-alpha.0

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 (212) hide show
  1. package/.jsii +10177 -0
  2. package/API.md +5119 -0
  3. package/LICENSE +202 -0
  4. package/README.md +175 -0
  5. package/cdk.json +68 -0
  6. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +214 -0
  7. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +763 -0
  8. package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.d.ts +22 -0
  9. package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.js +21 -0
  10. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +34 -0
  11. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +39 -0
  12. package/lib/alarmsandrules/CanaryOperationRegionalAlarmsAndRules.d.ts +7 -0
  13. package/lib/alarmsandrules/CanaryOperationRegionalAlarmsAndRules.js +11 -0
  14. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +16 -0
  15. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +17 -0
  16. package/lib/alarmsandrules/IBaseOperationRegionalAlarmsAndRules.d.ts +18 -0
  17. package/lib/alarmsandrules/IBaseOperationRegionalAlarmsAndRules.js +3 -0
  18. package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.d.ts +30 -0
  19. package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.js +3 -0
  20. package/lib/alarmsandrules/ICanaryOperationRegionalAlarmsAndRules.d.ts +6 -0
  21. package/lib/alarmsandrules/ICanaryOperationRegionalAlarmsAndRules.js +3 -0
  22. package/lib/alarmsandrules/ICanaryOperationZonalAlarmsAndRules.d.ts +12 -0
  23. package/lib/alarmsandrules/ICanaryOperationZonalAlarmsAndRules.js +3 -0
  24. package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +55 -0
  25. package/lib/alarmsandrules/IOperationAlarmsAndRules.js +3 -0
  26. package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.d.ts +15 -0
  27. package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.js +3 -0
  28. package/lib/alarmsandrules/IServerSideOperationZonalAlarmsAndRules.d.ts +36 -0
  29. package/lib/alarmsandrules/IServerSideOperationZonalAlarmsAndRules.js +3 -0
  30. package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +44 -0
  31. package/lib/alarmsandrules/IServiceAlarmsAndRules.js +3 -0
  32. package/lib/alarmsandrules/InsightRuleBody.d.ts +67 -0
  33. package/lib/alarmsandrules/InsightRuleBody.js +46 -0
  34. package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +59 -0
  35. package/lib/alarmsandrules/OperationAlarmsAndRules.js +135 -0
  36. package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.d.ts +19 -0
  37. package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.js +22 -0
  38. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +40 -0
  39. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +46 -0
  40. package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +48 -0
  41. package/lib/alarmsandrules/ServiceAlarmsAndRules.js +166 -0
  42. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +24 -0
  43. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +3 -0
  44. package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.d.ts +62 -0
  45. package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.js +3 -0
  46. package/lib/alarmsandrules/props/CanaryOperationRegionalAlarmsAndRulesProps.d.ts +6 -0
  47. package/lib/alarmsandrules/props/CanaryOperationRegionalAlarmsAndRulesProps.js +3 -0
  48. package/lib/alarmsandrules/props/CanaryOperationZonalAlarmsAndRulesProps.d.ts +6 -0
  49. package/lib/alarmsandrules/props/CanaryOperationZonalAlarmsAndRulesProps.js +3 -0
  50. package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.d.ts +45 -0
  51. package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.js +3 -0
  52. package/lib/alarmsandrules/props/ServerSideOperationRegionalAlarmsAndRulesProps.d.ts +6 -0
  53. package/lib/alarmsandrules/props/ServerSideOperationRegionalAlarmsAndRulesProps.js +3 -0
  54. package/lib/alarmsandrules/props/ServerSideOperationZonalAlarmsAndRulesProps.d.ts +6 -0
  55. package/lib/alarmsandrules/props/ServerSideOperationZonalAlarmsAndRulesProps.js +3 -0
  56. package/lib/alarmsandrules/props/ServiceAlarmsAndRulesProps.d.ts +13 -0
  57. package/lib/alarmsandrules/props/ServiceAlarmsAndRulesProps.js +3 -0
  58. package/lib/azmapper/AvailabilityZoneMapper.d.ts +86 -0
  59. package/lib/azmapper/AvailabilityZoneMapper.js +200 -0
  60. package/lib/azmapper/IAvailabilityZoneMapper.d.ts +86 -0
  61. package/lib/azmapper/IAvailabilityZoneMapper.js +3 -0
  62. package/lib/azmapper/props/AvailabilityZoneMapperProps.d.ts +13 -0
  63. package/lib/azmapper/props/AvailabilityZoneMapperProps.js +3 -0
  64. package/lib/azmapper/src/index.py +107 -0
  65. package/lib/canaries/CanaryFunction.d.ts +16 -0
  66. package/lib/canaries/CanaryFunction.js +152 -0
  67. package/lib/canaries/CanaryTest.d.ts +10 -0
  68. package/lib/canaries/CanaryTest.js +84 -0
  69. package/lib/canaries/ICanaryFunction.d.ts +6 -0
  70. package/lib/canaries/ICanaryFunction.js +3 -0
  71. package/lib/canaries/props/AddCanaryTestProps.d.ts +66 -0
  72. package/lib/canaries/props/AddCanaryTestProps.js +3 -0
  73. package/lib/canaries/props/CanaryFunctionProps.d.ts +29 -0
  74. package/lib/canaries/props/CanaryFunctionProps.js +3 -0
  75. package/lib/canaries/props/CanaryTestProps.d.ts +21 -0
  76. package/lib/canaries/props/CanaryTestProps.js +3 -0
  77. package/lib/canaries/props/NetworkConfigurationProps.d.ts +16 -0
  78. package/lib/canaries/props/NetworkConfigurationProps.js +3 -0
  79. package/lib/canaries/src/canary.zip +0 -0
  80. package/lib/dashboards/BasicServiceDashboard.d.ts +10 -0
  81. package/lib/dashboards/BasicServiceDashboard.js +130 -0
  82. package/lib/dashboards/ContributorInsightsWidget.d.ts +22 -0
  83. package/lib/dashboards/ContributorInsightsWidget.js +55 -0
  84. package/lib/dashboards/IOperationAvailabilityAndLatencyDashboard.d.ts +10 -0
  85. package/lib/dashboards/IOperationAvailabilityAndLatencyDashboard.js +3 -0
  86. package/lib/dashboards/IServiceAvailabilityAndLatencyDashboard.d.ts +10 -0
  87. package/lib/dashboards/IServiceAvailabilityAndLatencyDashboard.js +3 -0
  88. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.d.ts +20 -0
  89. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +588 -0
  90. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +24 -0
  91. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +475 -0
  92. package/lib/dashboards/props/BasicServiceDashboardProps.d.ts +23 -0
  93. package/lib/dashboards/props/BasicServiceDashboardProps.js +3 -0
  94. package/lib/dashboards/props/ContributorInsightWidgetProps.d.ts +31 -0
  95. package/lib/dashboards/props/ContributorInsightWidgetProps.js +3 -0
  96. package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.d.ts +84 -0
  97. package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.js +3 -0
  98. package/lib/dashboards/props/OperationAvailabilityWidgetProps.d.ts +37 -0
  99. package/lib/dashboards/props/OperationAvailabilityWidgetProps.js +3 -0
  100. package/lib/dashboards/props/OperationLatencyWidgetProps.d.ts +37 -0
  101. package/lib/dashboards/props/OperationLatencyWidgetProps.js +3 -0
  102. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +30 -0
  103. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +3 -0
  104. package/lib/index.d.ts +35 -0
  105. package/lib/index.js +30 -0
  106. package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +36 -0
  107. package/lib/metrics/ApplicationLoadBalancerMetrics.js +150 -0
  108. package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +61 -0
  109. package/lib/metrics/AvailabilityAndLatencyMetrics.js +212 -0
  110. package/lib/metrics/NetworkLoadBalancerMetrics.d.ts +19 -0
  111. package/lib/metrics/NetworkLoadBalancerMetrics.js +48 -0
  112. package/lib/metrics/RegionalAvailabilityMetrics.d.ts +19 -0
  113. package/lib/metrics/RegionalAvailabilityMetrics.js +71 -0
  114. package/lib/metrics/RegionalLatencyMetrics.d.ts +33 -0
  115. package/lib/metrics/RegionalLatencyMetrics.js +69 -0
  116. package/lib/metrics/ZonalAvailabilityMetrics.d.ts +19 -0
  117. package/lib/metrics/ZonalAvailabilityMetrics.js +71 -0
  118. package/lib/metrics/ZonalLatencyMetrics.d.ts +29 -0
  119. package/lib/metrics/ZonalLatencyMetrics.js +65 -0
  120. package/lib/metrics/props/AvailabilityAndLatencyMetricProps.d.ts +23 -0
  121. package/lib/metrics/props/AvailabilityAndLatencyMetricProps.js +3 -0
  122. package/lib/metrics/props/AvailabilityMetricProps.d.ts +11 -0
  123. package/lib/metrics/props/AvailabilityMetricProps.js +3 -0
  124. package/lib/metrics/props/LatencyMetricProps.d.ts +15 -0
  125. package/lib/metrics/props/LatencyMetricProps.js +3 -0
  126. package/lib/metrics/props/RegionalAvailabilityMetricProps.d.ts +6 -0
  127. package/lib/metrics/props/RegionalAvailabilityMetricProps.js +3 -0
  128. package/lib/metrics/props/RegionalLatencyMetricProps.d.ts +6 -0
  129. package/lib/metrics/props/RegionalLatencyMetricProps.js +3 -0
  130. package/lib/metrics/props/ServiceAvailabilityMetricProps.d.ts +23 -0
  131. package/lib/metrics/props/ServiceAvailabilityMetricProps.js +3 -0
  132. package/lib/metrics/props/ServiceLatencyMericProps.d.ts +23 -0
  133. package/lib/metrics/props/ServiceLatencyMericProps.js +3 -0
  134. package/lib/metrics/props/ZonalAvailabilityMetricProps.d.ts +10 -0
  135. package/lib/metrics/props/ZonalAvailabilityMetricProps.js +3 -0
  136. package/lib/metrics/props/ZonalLatencyMetricProps.d.ts +10 -0
  137. package/lib/metrics/props/ZonalLatencyMetricProps.js +3 -0
  138. package/lib/monitoring/src/monitoring-layer.zip +0 -0
  139. package/lib/outlier-detection/IOutlierDetectionFunction.d.ts +12 -0
  140. package/lib/outlier-detection/IOutlierDetectionFunction.js +3 -0
  141. package/lib/outlier-detection/OutlierDetectionFunction.d.ts +16 -0
  142. package/lib/outlier-detection/OutlierDetectionFunction.js +126 -0
  143. package/lib/outlier-detection/props/OutlierDetectionFunctionProps.d.ts +12 -0
  144. package/lib/outlier-detection/props/OutlierDetectionFunctionProps.js +3 -0
  145. package/lib/outlier-detection/src/outlier-detection.zip +0 -0
  146. package/lib/outlier-detection/src/scipy-layer.zip +0 -0
  147. package/lib/services/BasicServiceMultiAZObservability.d.ts +64 -0
  148. package/lib/services/BasicServiceMultiAZObservability.js +504 -0
  149. package/lib/services/CanaryMetrics.d.ts +17 -0
  150. package/lib/services/CanaryMetrics.js +19 -0
  151. package/lib/services/CanaryTestMetricsOverride.d.ts +39 -0
  152. package/lib/services/CanaryTestMetricsOverride.js +23 -0
  153. package/lib/services/ContributorInsightRuleDetails.d.ts +42 -0
  154. package/lib/services/ContributorInsightRuleDetails.js +23 -0
  155. package/lib/services/IBasicServiceMultiAZObservability.d.ts +45 -0
  156. package/lib/services/IBasicServiceMultiAZObservability.js +3 -0
  157. package/lib/services/ICanaryMetrics.d.ts +14 -0
  158. package/lib/services/ICanaryMetrics.js +3 -0
  159. package/lib/services/ICanaryTestMetricsOverride.d.ts +36 -0
  160. package/lib/services/ICanaryTestMetricsOverride.js +3 -0
  161. package/lib/services/IContributorInsightRuleDetails.d.ts +38 -0
  162. package/lib/services/IContributorInsightRuleDetails.js +3 -0
  163. package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +39 -0
  164. package/lib/services/IInstrumentedServiceMultiAZObservability.js +3 -0
  165. package/lib/services/IOperation.d.ts +75 -0
  166. package/lib/services/IOperation.js +3 -0
  167. package/lib/services/IOperationMetricDetails.d.ts +78 -0
  168. package/lib/services/IOperationMetricDetails.js +3 -0
  169. package/lib/services/IService.d.ts +76 -0
  170. package/lib/services/IService.js +3 -0
  171. package/lib/services/IServiceMetricDetails.d.ts +68 -0
  172. package/lib/services/IServiceMetricDetails.js +3 -0
  173. package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +55 -0
  174. package/lib/services/InstrumentedServiceMultiAZObservability.js +310 -0
  175. package/lib/services/Operation.d.ts +78 -0
  176. package/lib/services/Operation.js +34 -0
  177. package/lib/services/OperationMetricDetails.d.ts +82 -0
  178. package/lib/services/OperationMetricDetails.js +50 -0
  179. package/lib/services/Service.d.ts +80 -0
  180. package/lib/services/Service.js +36 -0
  181. package/lib/services/ServiceMetricDetails.d.ts +71 -0
  182. package/lib/services/ServiceMetricDetails.js +28 -0
  183. package/lib/services/props/BasicServiceMultiAZObservabilityProps.d.ts +126 -0
  184. package/lib/services/props/BasicServiceMultiAZObservabilityProps.js +3 -0
  185. package/lib/services/props/CanaryMetricProps.d.ts +14 -0
  186. package/lib/services/props/CanaryMetricProps.js +3 -0
  187. package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +47 -0
  188. package/lib/services/props/CanaryTestMetricsOverrideProps.js +3 -0
  189. package/lib/services/props/ContributorInsightRuleDetailsProps.d.ts +38 -0
  190. package/lib/services/props/ContributorInsightRuleDetailsProps.js +3 -0
  191. package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.d.ts +88 -0
  192. package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.js +3 -0
  193. package/lib/services/props/MetricDimensions.d.ts +61 -0
  194. package/lib/services/props/MetricDimensions.js +63 -0
  195. package/lib/services/props/OperationMetricDetailsProps.d.ts +97 -0
  196. package/lib/services/props/OperationMetricDetailsProps.js +3 -0
  197. package/lib/services/props/OperationProps.d.ts +93 -0
  198. package/lib/services/props/OperationProps.js +3 -0
  199. package/lib/services/props/ServiceMetricDetailsProps.d.ts +68 -0
  200. package/lib/services/props/ServiceMetricDetailsProps.js +3 -0
  201. package/lib/services/props/ServiceProps.d.ts +69 -0
  202. package/lib/services/props/ServiceProps.js +3 -0
  203. package/lib/utilities/AvailabilityMetricType.d.ts +26 -0
  204. package/lib/utilities/AvailabilityMetricType.js +33 -0
  205. package/lib/utilities/LatencyMetricType.d.ts +13 -0
  206. package/lib/utilities/LatencyMetricType.js +20 -0
  207. package/lib/utilities/OutlierDetectionAlgorithm.d.ts +42 -0
  208. package/lib/utilities/OutlierDetectionAlgorithm.js +49 -0
  209. package/lib/utilities/StackWithDynamicSource.d.ts +14 -0
  210. package/lib/utilities/StackWithDynamicSource.js +82 -0
  211. package/package.json +176 -0
  212. package/rosetta/default.ts-fixture +13 -0
@@ -0,0 +1,31 @@
1
+ import { Duration } from 'aws-cdk-lib';
2
+ import { MetricWidgetProps, CfnInsightRule, LegendPosition } from 'aws-cdk-lib/aws-cloudwatch';
3
+ /**
4
+ * Properties for creating a contributor insight dashboard widget
5
+ */
6
+ export interface ContributorInsightWidgetProps extends MetricWidgetProps {
7
+ /**
8
+ * The account id for the widget
9
+ */
10
+ readonly accountId: string;
11
+ /**
12
+ * The number of top contributors to graph
13
+ */
14
+ readonly topContributors: number;
15
+ /**
16
+ * The insight rule for the widget
17
+ */
18
+ readonly insightRule: CfnInsightRule;
19
+ /**
20
+ * The legend position in the widget
21
+ */
22
+ readonly legendPosition: LegendPosition;
23
+ /**
24
+ * The order statistic used
25
+ */
26
+ readonly orderStatistic: string;
27
+ /**
28
+ * The period for the widget data points
29
+ */
30
+ readonly period: Duration;
31
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJpYnV0b3JJbnNpZ2h0V2lkZ2V0UHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGFzaGJvYXJkcy9wcm9wcy9Db250cmlidXRvckluc2lnaHRXaWRnZXRQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBNZXRyaWNXaWRnZXRQcm9wcyxcbiAgQ2ZuSW5zaWdodFJ1bGUsXG4gIExlZ2VuZFBvc2l0aW9uLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBjb250cmlidXRvciBpbnNpZ2h0IGRhc2hib2FyZCB3aWRnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250cmlidXRvckluc2lnaHRXaWRnZXRQcm9wcyBleHRlbmRzIE1ldHJpY1dpZGdldFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IGlkIGZvciB0aGUgd2lkZ2V0XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiB0b3AgY29udHJpYnV0b3JzIHRvIGdyYXBoXG4gICAqL1xuICByZWFkb25seSB0b3BDb250cmlidXRvcnM6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGluc2lnaHQgcnVsZSBmb3IgdGhlIHdpZGdldFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zaWdodFJ1bGU6IENmbkluc2lnaHRSdWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGVnZW5kIHBvc2l0aW9uIGluIHRoZSB3aWRnZXRcbiAgICovXG4gIHJlYWRvbmx5IGxlZ2VuZFBvc2l0aW9uOiBMZWdlbmRQb3NpdGlvbjtcblxuICAvKipcbiAgICogVGhlIG9yZGVyIHN0YXRpc3RpYyB1c2VkXG4gICAqL1xuICByZWFkb25seSBvcmRlclN0YXRpc3RpYzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyaW9kIGZvciB0aGUgd2lkZ2V0IGRhdGEgcG9pbnRzXG4gICAqL1xuICByZWFkb25seSBwZXJpb2Q6IER1cmF0aW9uO1xufVxuIl19
@@ -0,0 +1,84 @@
1
+ import { Duration } from 'aws-cdk-lib';
2
+ import { IAlarm, CfnInsightRule } from 'aws-cdk-lib/aws-cloudwatch';
3
+ import { ILoadBalancerV2 } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
4
+ import { IAvailabilityZoneMapper } from '../../azmapper/IAvailabilityZoneMapper';
5
+ import { IOperation } from '../../services/IOperation';
6
+ /**
7
+ * Properties for creating an availability and latency dashboard for
8
+ * a single operation
9
+ */
10
+ export interface OperationAvailabilityAndLatencyDashboardProps {
11
+ /**
12
+ * The operation for this dashboard
13
+ */
14
+ readonly operation: IOperation;
15
+ /**
16
+ * The interval of the dashboard
17
+ */
18
+ readonly interval: Duration;
19
+ /**
20
+ * The load balancer supporting this operation, if this is not
21
+ * provided, no load balancer metrics will be shown
22
+ *
23
+ * @default - No load balancer metrics will be shown on the dashboard
24
+ */
25
+ readonly loadBalancer?: ILoadBalancerV2;
26
+ /**
27
+ * Per AZ server-side availability alarms
28
+ */
29
+ readonly zonalEndpointServerAvailabilityAlarms: IAlarm[];
30
+ /**
31
+ * Per AZ server-side latency alarms
32
+ */
33
+ readonly zonalEndpointServerLatencyAlarms: IAlarm[];
34
+ /**
35
+ * Per AZ canary availability alarms
36
+ */
37
+ readonly zonalEndpointCanaryAvailabilityAlarms?: IAlarm[];
38
+ /**
39
+ * Per AZ canary latency alarms
40
+ */
41
+ readonly zonalEndpointCanaryLatencyAlarms?: IAlarm[];
42
+ /**
43
+ * Regional server-side availability alarm
44
+ */
45
+ readonly regionalEndpointServerAvailabilityAlarm: IAlarm;
46
+ /**
47
+ * Regional server-side latency alarm
48
+ */
49
+ readonly regionalEndpointServerLatencyAlarm: IAlarm;
50
+ /**
51
+ * Regional canary availability alarm
52
+ */
53
+ readonly regionalEndpointCanaryAvailabilityAlarm?: IAlarm;
54
+ /**
55
+ * Regional canary latency alarm
56
+ */
57
+ readonly regionalEndpointCanaryLatencyAlarm?: IAlarm;
58
+ /**
59
+ * Per AZ alarms that indicate isolated single AZ impact
60
+ */
61
+ readonly isolatedAZImpactAlarms: IAlarm[];
62
+ /**
63
+ * Alarm that indicates regional impact
64
+ */
65
+ readonly regionalImpactAlarm: IAlarm;
66
+ /**
67
+ * Insight rule that shows instance contributors to
68
+ * high latency for this operation
69
+ *
70
+ * @default - Insight rule will not be shown on the dashboard
71
+ */
72
+ readonly instanceContributorsToHighLatency?: CfnInsightRule;
73
+ /**
74
+ * Insight rule that shows instance contributors to
75
+ * faults for this operation
76
+ *
77
+ * @default - Insight rule will not be shown on the dashboard
78
+ */
79
+ readonly instanceContributorsToFaults?: CfnInsightRule;
80
+ /**
81
+ * The AZ Mapper
82
+ */
83
+ readonly azMapper: IAvailabilityZoneMapper;
84
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZFByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rhc2hib2FyZHMvcHJvcHMvT3BlcmF0aW9uQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZFByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElBbGFybSwgQ2ZuSW5zaWdodFJ1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBJTG9hZEJhbGFuY2VyVjIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgeyBJQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4uLy4uL2F6bWFwcGVyL0lBdmFpbGFiaWxpdHlab25lTWFwcGVyJztcbmltcG9ydCB7IElPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9JT3BlcmF0aW9uJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBhdmFpbGFiaWxpdHkgYW5kIGxhdGVuY3kgZGFzaGJvYXJkIGZvclxuICogYSBzaW5nbGUgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0aW9uQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZm9yIHRoaXMgZGFzaGJvYXJkXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb246IElPcGVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcnZhbCBvZiB0aGUgZGFzaGJvYXJkXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbDogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsb2FkIGJhbGFuY2VyIHN1cHBvcnRpbmcgdGhpcyBvcGVyYXRpb24sIGlmIHRoaXMgaXMgbm90XG4gICAqIHByb3ZpZGVkLCBubyBsb2FkIGJhbGFuY2VyIG1ldHJpY3Mgd2lsbCBiZSBzaG93blxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGxvYWQgYmFsYW5jZXIgbWV0cmljcyB3aWxsIGJlIHNob3duIG9uIHRoZSBkYXNoYm9hcmRcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlcj86IElMb2FkQmFsYW5jZXJWMjtcblxuICAvKipcbiAgICogUGVyIEFaIHNlcnZlci1zaWRlIGF2YWlsYWJpbGl0eSBhbGFybXNcbiAgICovXG4gIHJlYWRvbmx5IHpvbmFsRW5kcG9pbnRTZXJ2ZXJBdmFpbGFiaWxpdHlBbGFybXM6IElBbGFybVtdO1xuXG4gIC8qKlxuICAgKiBQZXIgQVogc2VydmVyLXNpZGUgbGF0ZW5jeSBhbGFybXNcbiAgICovXG4gIHJlYWRvbmx5IHpvbmFsRW5kcG9pbnRTZXJ2ZXJMYXRlbmN5QWxhcm1zOiBJQWxhcm1bXTtcblxuICAvKipcbiAgICogUGVyIEFaIGNhbmFyeSBhdmFpbGFiaWxpdHkgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSB6b25hbEVuZHBvaW50Q2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm1zPzogSUFsYXJtW107XG5cbiAgLyoqXG4gICAqIFBlciBBWiBjYW5hcnkgbGF0ZW5jeSBhbGFybXNcbiAgICovXG4gIHJlYWRvbmx5IHpvbmFsRW5kcG9pbnRDYW5hcnlMYXRlbmN5QWxhcm1zPzogSUFsYXJtW107XG5cbiAgLyoqXG4gICAqIFJlZ2lvbmFsIHNlcnZlci1zaWRlIGF2YWlsYWJpbGl0eSBhbGFybVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uYWxFbmRwb2ludFNlcnZlckF2YWlsYWJpbGl0eUFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIFJlZ2lvbmFsIHNlcnZlci1zaWRlIGxhdGVuY3kgYWxhcm1cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbmFsRW5kcG9pbnRTZXJ2ZXJMYXRlbmN5QWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogUmVnaW9uYWwgY2FuYXJ5IGF2YWlsYWJpbGl0eSBhbGFybVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uYWxFbmRwb2ludENhbmFyeUF2YWlsYWJpbGl0eUFsYXJtPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBSZWdpb25hbCBjYW5hcnkgbGF0ZW5jeSBhbGFybVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uYWxFbmRwb2ludENhbmFyeUxhdGVuY3lBbGFybT86IElBbGFybTtcblxuICAvKipcbiAgICogUGVyIEFaIGFsYXJtcyB0aGF0IGluZGljYXRlIGlzb2xhdGVkIHNpbmdsZSBBWiBpbXBhY3RcbiAgICovXG4gIHJlYWRvbmx5IGlzb2xhdGVkQVpJbXBhY3RBbGFybXM6IElBbGFybVtdO1xuXG4gIC8qKlxuICAgKiBBbGFybSB0aGF0IGluZGljYXRlcyByZWdpb25hbCBpbXBhY3RcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbmFsSW1wYWN0QWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogSW5zaWdodCBydWxlIHRoYXQgc2hvd3MgaW5zdGFuY2UgY29udHJpYnV0b3JzIHRvXG4gICAqIGhpZ2ggbGF0ZW5jeSBmb3IgdGhpcyBvcGVyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbnNpZ2h0IHJ1bGUgd2lsbCBub3QgYmUgc2hvd24gb24gdGhlIGRhc2hib2FyZFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VDb250cmlidXRvcnNUb0hpZ2hMYXRlbmN5PzogQ2ZuSW5zaWdodFJ1bGU7XG5cbiAgLyoqXG4gICAqIEluc2lnaHQgcnVsZSB0aGF0IHNob3dzIGluc3RhbmNlIGNvbnRyaWJ1dG9ycyB0b1xuICAgKiBmYXVsdHMgZm9yIHRoaXMgb3BlcmF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSW5zaWdodCBydWxlIHdpbGwgbm90IGJlIHNob3duIG9uIHRoZSBkYXNoYm9hcmRcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlQ29udHJpYnV0b3JzVG9GYXVsdHM/OiBDZm5JbnNpZ2h0UnVsZTtcblxuICAvKipcbiAgICogVGhlIEFaIE1hcHBlclxuICAgKi9cbiAgcmVhZG9ubHkgYXpNYXBwZXI6IElBdmFpbGFiaWxpdHlab25lTWFwcGVyO1xufVxuIl19
@@ -0,0 +1,37 @@
1
+ import { IAlarm, CfnInsightRule } from 'aws-cdk-lib/aws-cloudwatch';
2
+ import { IOperation } from '../../services/IOperation';
3
+ import { IOperationMetricDetails } from '../../services/IOperationMetricDetails';
4
+ /**
5
+ * Props for creating operation dashboard availability and latency widgets
6
+ */
7
+ export interface OperationAvailabilityWidgetProps {
8
+ /**
9
+ * The operation for this widget
10
+ */
11
+ readonly operation: IOperation;
12
+ /**
13
+ * The availability metric details
14
+ */
15
+ readonly availabilityMetricDetails: IOperationMetricDetails;
16
+ /**
17
+ * The number of AZs being used
18
+ */
19
+ readonly availabilityZoneIds: string[];
20
+ /**
21
+ * An alarm per AZ for availability
22
+ */
23
+ readonly zonalEndpointAvailabilityAlarms: IAlarm[];
24
+ /**
25
+ * The regional endpoint availability alarm
26
+ */
27
+ readonly regionalEndpointAvailabilityAlarm: IAlarm;
28
+ /**
29
+ * Instance contributors to faults, only set for
30
+ * server-side widgets
31
+ */
32
+ readonly instanceContributorsToFaults?: CfnInsightRule;
33
+ /**
34
+ * Is this widget for the canary metrics
35
+ */
36
+ readonly isCanary: boolean;
37
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uQXZhaWxhYmlsaXR5V2lkZ2V0UHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGFzaGJvYXJkcy9wcm9wcy9PcGVyYXRpb25BdmFpbGFiaWxpdHlXaWRnZXRQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUFsYXJtLCBDZm5JbnNpZ2h0UnVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IElPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9JT3BlcmF0aW9uJztcbmltcG9ydCB7IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBjcmVhdGluZyBvcGVyYXRpb24gZGFzaGJvYXJkIGF2YWlsYWJpbGl0eSBhbmQgbGF0ZW5jeSB3aWRnZXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0aW9uQXZhaWxhYmlsaXR5V2lkZ2V0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiBmb3IgdGhpcyB3aWRnZXRcbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbjogSU9wZXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGF2YWlsYWJpbGl0eSBtZXRyaWMgZGV0YWlsc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczogSU9wZXJhdGlvbk1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgQVpzIGJlaW5nIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVJZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBwZXIgQVogZm9yIGF2YWlsYWJpbGl0eVxuICAgKi9cbiAgcmVhZG9ubHkgem9uYWxFbmRwb2ludEF2YWlsYWJpbGl0eUFsYXJtczogSUFsYXJtW107XG5cbiAgLyoqXG4gICAqIFRoZSByZWdpb25hbCBlbmRwb2ludCBhdmFpbGFiaWxpdHkgYWxhcm1cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbmFsRW5kcG9pbnRBdmFpbGFiaWxpdHlBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBjb250cmlidXRvcnMgdG8gZmF1bHRzLCBvbmx5IHNldCBmb3JcbiAgICogc2VydmVyLXNpZGUgd2lkZ2V0c1xuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VDb250cmlidXRvcnNUb0ZhdWx0cz86IENmbkluc2lnaHRSdWxlO1xuXG4gIC8qKlxuICAgKiBJcyB0aGlzIHdpZGdldCBmb3IgdGhlIGNhbmFyeSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBpc0NhbmFyeTogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { IAlarm, CfnInsightRule } from 'aws-cdk-lib/aws-cloudwatch';
2
+ import { IOperation } from '../../services/IOperation';
3
+ import { IOperationMetricDetails } from '../../services/IOperationMetricDetails';
4
+ /**
5
+ * Props for creating operation dashboard availability and latency widgets
6
+ */
7
+ export interface OperationLatencyWidgetProps {
8
+ /**
9
+ * The operation for this widget
10
+ */
11
+ readonly operation: IOperation;
12
+ /**
13
+ * The latency metric details
14
+ */
15
+ readonly latencyMetricDetails: IOperationMetricDetails;
16
+ /**
17
+ * The number of AZs being used
18
+ */
19
+ readonly availabilityZoneIds: string[];
20
+ /**
21
+ * An alarm per AZ for latency
22
+ */
23
+ readonly zonalEndpointLatencyAlarms: IAlarm[];
24
+ /**
25
+ * The regional endpoint latency alarm
26
+ */
27
+ readonly regionalEndpointLatencyAlarm: IAlarm;
28
+ /**
29
+ * Instance contributors to high latency, only set for
30
+ * server-side widgets
31
+ */
32
+ readonly instanceContributorsToHighLatency?: CfnInsightRule;
33
+ /**
34
+ * Is this widget for the canary metrics
35
+ */
36
+ readonly isCanary: boolean;
37
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uTGF0ZW5jeVdpZGdldFByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rhc2hib2FyZHMvcHJvcHMvT3BlcmF0aW9uTGF0ZW5jeVdpZGdldFByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJQWxhcm0sIENmbkluc2lnaHRSdWxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL0lPcGVyYXRpb24nO1xuaW1wb3J0IHsgSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9JT3BlcmF0aW9uTWV0cmljRGV0YWlscyc7XG5cbi8qKlxuICogUHJvcHMgZm9yIGNyZWF0aW5nIG9wZXJhdGlvbiBkYXNoYm9hcmQgYXZhaWxhYmlsaXR5IGFuZCBsYXRlbmN5IHdpZGdldHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVyYXRpb25MYXRlbmN5V2lkZ2V0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiBmb3IgdGhpcyB3aWRnZXRcbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbjogSU9wZXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxhdGVuY3kgbWV0cmljIGRldGFpbHNcbiAgICovXG4gIHJlYWRvbmx5IGxhdGVuY3lNZXRyaWNEZXRhaWxzOiBJT3BlcmF0aW9uTWV0cmljRGV0YWlscztcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBBWnMgYmVpbmcgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZUlkczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIHBlciBBWiBmb3IgbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgem9uYWxFbmRwb2ludExhdGVuY3lBbGFybXM6IElBbGFybVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uYWwgZW5kcG9pbnQgbGF0ZW5jeSBhbGFybVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uYWxFbmRwb2ludExhdGVuY3lBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBjb250cmlidXRvcnMgdG8gaGlnaCBsYXRlbmN5LCBvbmx5IHNldCBmb3JcbiAgICogc2VydmVyLXNpZGUgd2lkZ2V0c1xuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VDb250cmlidXRvcnNUb0hpZ2hMYXRlbmN5PzogQ2ZuSW5zaWdodFJ1bGU7XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgd2lkZ2V0IGZvciB0aGUgY2FuYXJ5IG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IGlzQ2FuYXJ5OiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,30 @@
1
+ import { Duration } from 'aws-cdk-lib';
2
+ import { IAlarm } from 'aws-cdk-lib/aws-cloudwatch';
3
+ import { IAvailabilityZoneMapper } from '../../azmapper/IAvailabilityZoneMapper';
4
+ import { IService } from '../../services/IService';
5
+ /**
6
+ * Properties for creating a service level dashboard
7
+ */
8
+ export interface ServiceAvailabilityAndLatencyDashboardProps {
9
+ /**
10
+ * The service for the dashboard
11
+ */
12
+ readonly service: IService;
13
+ /**
14
+ * The AZ isolated impact alarms, one for each AZ
15
+ */
16
+ readonly zonalAggregateAlarms: IAlarm[];
17
+ /**
18
+ * The aggregate regional impact alarm, typically a fault
19
+ * count across all critical operations
20
+ */
21
+ readonly aggregateRegionalAlarm: IAlarm;
22
+ /**
23
+ * The interval for the dashboard
24
+ */
25
+ readonly interval: Duration;
26
+ /**
27
+ * The AZ Mapper
28
+ */
29
+ readonly azMapper: IAvailabilityZoneMapper;
30
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmRQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXNoYm9hcmRzL3Byb3BzL1NlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXIgfSBmcm9tICcuLi8uLi9hem1hcHBlci9JQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcic7XG5pbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL0lTZXJ2aWNlJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIHNlcnZpY2UgbGV2ZWwgZGFzaGJvYXJkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBmb3IgdGhlIGRhc2hib2FyZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZTogSVNlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFRoZSBBWiBpc29sYXRlZCBpbXBhY3QgYWxhcm1zLCBvbmUgZm9yIGVhY2ggQVpcbiAgICovXG4gIHJlYWRvbmx5IHpvbmFsQWdncmVnYXRlQWxhcm1zOiBJQWxhcm1bXTtcblxuICAvKipcbiAgICogVGhlIGFnZ3JlZ2F0ZSByZWdpb25hbCBpbXBhY3QgYWxhcm0sIHR5cGljYWxseSBhIGZhdWx0XG4gICAqIGNvdW50IGFjcm9zcyBhbGwgY3JpdGljYWwgb3BlcmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWdncmVnYXRlUmVnaW9uYWxBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJ2YWwgZm9yIHRoZSBkYXNoYm9hcmRcbiAgICovXG4gIHJlYWRvbmx5IGludGVydmFsOiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIEFaIE1hcHBlclxuICAgKi9cbiAgcmVhZG9ubHkgYXpNYXBwZXI6IElBdmFpbGFiaWxpdHlab25lTWFwcGVyO1xufVxuIl19
package/lib/index.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ export { OutlierDetectionAlgorithm } from './utilities/OutlierDetectionAlgorithm';
2
+ export { BasicServiceMultiAZObservabilityProps } from './services/props/BasicServiceMultiAZObservabilityProps';
3
+ export { InstrumentedServiceMultiAZObservabilityProps } from './services/props/InstrumentedServiceMultiAZObservabilityProps';
4
+ export { IService } from './services/IService';
5
+ export { Service } from './services/Service';
6
+ export { IOperation } from './services/IOperation';
7
+ export { Operation } from './services/Operation';
8
+ export { OperationMetricDetails } from './services/OperationMetricDetails';
9
+ export { IOperationMetricDetails } from './services/IOperationMetricDetails';
10
+ export { ServiceMetricDetails } from './services/ServiceMetricDetails';
11
+ export { IServiceMetricDetails } from './services/IServiceMetricDetails';
12
+ export { AddCanaryTestProps } from './canaries/props/AddCanaryTestProps';
13
+ export { ICanaryMetrics } from './services/ICanaryMetrics';
14
+ export { IContributorInsightRuleDetails } from './services/IContributorInsightRuleDetails';
15
+ export { IAvailabilityZoneMapper } from './azmapper/IAvailabilityZoneMapper';
16
+ export { AvailabilityZoneMapper } from './azmapper/AvailabilityZoneMapper';
17
+ export { AvailabilityZoneMapperProps } from './azmapper/props/AvailabilityZoneMapperProps';
18
+ export { ServiceProps } from './services/props/ServiceProps';
19
+ export { CanaryMetrics } from './services/CanaryMetrics';
20
+ export { CanaryMetricProps } from './services/props/CanaryMetricProps';
21
+ export { OperationProps } from './services/props/OperationProps';
22
+ export { OperationMetricDetailsProps } from './services/props/OperationMetricDetailsProps';
23
+ export { ContributorInsightRuleDetails } from './services/ContributorInsightRuleDetails';
24
+ export { ContributorInsightRuleDetailsProps } from './services/props/ContributorInsightRuleDetailsProps';
25
+ export { MetricDimensions } from './services/props/MetricDimensions';
26
+ export { NetworkConfigurationProps } from './canaries/props/NetworkConfigurationProps';
27
+ export { ServiceMetricDetailsProps } from './services/props/ServiceMetricDetailsProps';
28
+ export { InstrumentedServiceMultiAZObservability } from './services/InstrumentedServiceMultiAZObservability';
29
+ export { BasicServiceMultiAZObservability } from './services/BasicServiceMultiAZObservability';
30
+ export { IBasicServiceMultiAZObservability } from './services/IBasicServiceMultiAZObservability';
31
+ export { IInstrumentedServiceMultiAZObservability } from './services/IInstrumentedServiceMultiAZObservability';
32
+ export { IServiceAlarmsAndRules } from './alarmsandrules/IServiceAlarmsAndRules';
33
+ export { ICanaryTestMetricsOverride } from './services/ICanaryTestMetricsOverride';
34
+ export { CanaryTestMetricsOverride } from './services/CanaryTestMetricsOverride';
35
+ export { CanaryTestMetricsOverrideProps } from './services/props/CanaryTestMetricsOverrideProps';
package/lib/index.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CanaryTestMetricsOverride = exports.BasicServiceMultiAZObservability = exports.InstrumentedServiceMultiAZObservability = exports.MetricDimensions = exports.ContributorInsightRuleDetails = exports.CanaryMetrics = exports.AvailabilityZoneMapper = exports.ServiceMetricDetails = exports.OperationMetricDetails = exports.Operation = exports.Service = exports.OutlierDetectionAlgorithm = void 0;
4
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ // SPDX-License-Identifier: Apache-2.0
6
+ var OutlierDetectionAlgorithm_1 = require("./utilities/OutlierDetectionAlgorithm");
7
+ Object.defineProperty(exports, "OutlierDetectionAlgorithm", { enumerable: true, get: function () { return OutlierDetectionAlgorithm_1.OutlierDetectionAlgorithm; } });
8
+ var Service_1 = require("./services/Service");
9
+ Object.defineProperty(exports, "Service", { enumerable: true, get: function () { return Service_1.Service; } });
10
+ var Operation_1 = require("./services/Operation");
11
+ Object.defineProperty(exports, "Operation", { enumerable: true, get: function () { return Operation_1.Operation; } });
12
+ var OperationMetricDetails_1 = require("./services/OperationMetricDetails");
13
+ Object.defineProperty(exports, "OperationMetricDetails", { enumerable: true, get: function () { return OperationMetricDetails_1.OperationMetricDetails; } });
14
+ var ServiceMetricDetails_1 = require("./services/ServiceMetricDetails");
15
+ Object.defineProperty(exports, "ServiceMetricDetails", { enumerable: true, get: function () { return ServiceMetricDetails_1.ServiceMetricDetails; } });
16
+ var AvailabilityZoneMapper_1 = require("./azmapper/AvailabilityZoneMapper");
17
+ Object.defineProperty(exports, "AvailabilityZoneMapper", { enumerable: true, get: function () { return AvailabilityZoneMapper_1.AvailabilityZoneMapper; } });
18
+ var CanaryMetrics_1 = require("./services/CanaryMetrics");
19
+ Object.defineProperty(exports, "CanaryMetrics", { enumerable: true, get: function () { return CanaryMetrics_1.CanaryMetrics; } });
20
+ var ContributorInsightRuleDetails_1 = require("./services/ContributorInsightRuleDetails");
21
+ Object.defineProperty(exports, "ContributorInsightRuleDetails", { enumerable: true, get: function () { return ContributorInsightRuleDetails_1.ContributorInsightRuleDetails; } });
22
+ var MetricDimensions_1 = require("./services/props/MetricDimensions");
23
+ Object.defineProperty(exports, "MetricDimensions", { enumerable: true, get: function () { return MetricDimensions_1.MetricDimensions; } });
24
+ var InstrumentedServiceMultiAZObservability_1 = require("./services/InstrumentedServiceMultiAZObservability");
25
+ Object.defineProperty(exports, "InstrumentedServiceMultiAZObservability", { enumerable: true, get: function () { return InstrumentedServiceMultiAZObservability_1.InstrumentedServiceMultiAZObservability; } });
26
+ var BasicServiceMultiAZObservability_1 = require("./services/BasicServiceMultiAZObservability");
27
+ Object.defineProperty(exports, "BasicServiceMultiAZObservability", { enumerable: true, get: function () { return BasicServiceMultiAZObservability_1.BasicServiceMultiAZObservability; } });
28
+ var CanaryTestMetricsOverride_1 = require("./services/CanaryTestMetricsOverride");
29
+ Object.defineProperty(exports, "CanaryTestMetricsOverride", { enumerable: true, get: function () { return CanaryTestMetricsOverride_1.CanaryTestMetricsOverride; } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QyxtRkFBa0Y7QUFBekUsc0lBQUEseUJBQXlCLE9BQUE7QUFJbEMsOENBQTZDO0FBQXBDLGtHQUFBLE9BQU8sT0FBQTtBQUVoQixrREFBaUQ7QUFBeEMsc0dBQUEsU0FBUyxPQUFBO0FBQ2xCLDRFQUEyRTtBQUFsRSxnSUFBQSxzQkFBc0IsT0FBQTtBQUUvQix3RUFBdUU7QUFBOUQsNEhBQUEsb0JBQW9CLE9BQUE7QUFNN0IsNEVBQTJFO0FBQWxFLGdJQUFBLHNCQUFzQixPQUFBO0FBRy9CLDBEQUF5RDtBQUFoRCw4R0FBQSxhQUFhLE9BQUE7QUFJdEIsMEZBQXlGO0FBQWhGLDhJQUFBLDZCQUE2QixPQUFBO0FBRXRDLHNFQUFxRTtBQUE1RCxvSEFBQSxnQkFBZ0IsT0FBQTtBQUd6Qiw4R0FBNkc7QUFBcEcsa0tBQUEsdUNBQXVDLE9BQUE7QUFDaEQsZ0dBQStGO0FBQXRGLG9KQUFBLGdDQUFnQyxPQUFBO0FBS3pDLGtGQUFpRjtBQUF4RSxzSUFBQSx5QkFBeUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmV4cG9ydCB7IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gfSBmcm9tICcuL3V0aWxpdGllcy9PdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtJztcbmV4cG9ydCB7IEJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL0Jhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMnO1xuZXhwb3J0IHsgSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL0luc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eVByb3BzJztcbmV4cG9ydCB7IElTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9JU2VydmljZSc7XG5leHBvcnQgeyBTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9TZXJ2aWNlJztcbmV4cG9ydCB7IElPcGVyYXRpb24gfSBmcm9tICcuL3NlcnZpY2VzL0lPcGVyYXRpb24nO1xuZXhwb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSAnLi9zZXJ2aWNlcy9PcGVyYXRpb24nO1xuZXhwb3J0IHsgT3BlcmF0aW9uTWV0cmljRGV0YWlscyB9IGZyb20gJy4vc2VydmljZXMvT3BlcmF0aW9uTWV0cmljRGV0YWlscyc7XG5leHBvcnQgeyBJT3BlcmF0aW9uTWV0cmljRGV0YWlscyB9IGZyb20gJy4vc2VydmljZXMvSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMnO1xuZXhwb3J0IHsgU2VydmljZU1ldHJpY0RldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL1NlcnZpY2VNZXRyaWNEZXRhaWxzJztcbmV4cG9ydCB7IElTZXJ2aWNlTWV0cmljRGV0YWlscyB9IGZyb20gJy4vc2VydmljZXMvSVNlcnZpY2VNZXRyaWNEZXRhaWxzJztcbmV4cG9ydCB7IEFkZENhbmFyeVRlc3RQcm9wcyB9IGZyb20gJy4vY2FuYXJpZXMvcHJvcHMvQWRkQ2FuYXJ5VGVzdFByb3BzJztcbmV4cG9ydCB7IElDYW5hcnlNZXRyaWNzIH0gZnJvbSAnLi9zZXJ2aWNlcy9JQ2FuYXJ5TWV0cmljcyc7XG5leHBvcnQgeyBJQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL0lDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyc7XG5leHBvcnQgeyBJQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4vYXptYXBwZXIvSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuZXhwb3J0IHsgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4vYXptYXBwZXIvQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcic7XG5leHBvcnQgeyBBdmFpbGFiaWxpdHlab25lTWFwcGVyUHJvcHMgfSBmcm9tICcuL2F6bWFwcGVyL3Byb3BzL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXJQcm9wcyc7XG5leHBvcnQgeyBTZXJ2aWNlUHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL1NlcnZpY2VQcm9wcyc7XG5leHBvcnQgeyBDYW5hcnlNZXRyaWNzIH0gZnJvbSAnLi9zZXJ2aWNlcy9DYW5hcnlNZXRyaWNzJztcbmV4cG9ydCB7IENhbmFyeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcm9wcy9DYW5hcnlNZXRyaWNQcm9wcyc7XG5leHBvcnQgeyBPcGVyYXRpb25Qcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvT3BlcmF0aW9uUHJvcHMnO1xuZXhwb3J0IHsgT3BlcmF0aW9uTWV0cmljRGV0YWlsc1Byb3BzIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcm9wcy9PcGVyYXRpb25NZXRyaWNEZXRhaWxzUHJvcHMnO1xuZXhwb3J0IHsgQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL0NvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzJztcbmV4cG9ydCB7IENvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzUHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL0NvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzUHJvcHMnO1xuZXhwb3J0IHsgTWV0cmljRGltZW5zaW9ucyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvTWV0cmljRGltZW5zaW9ucyc7XG5leHBvcnQgeyBOZXR3b3JrQ29uZmlndXJhdGlvblByb3BzIH0gZnJvbSAnLi9jYW5hcmllcy9wcm9wcy9OZXR3b3JrQ29uZmlndXJhdGlvblByb3BzJztcbmV4cG9ydCB7IFNlcnZpY2VNZXRyaWNEZXRhaWxzUHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL1NlcnZpY2VNZXRyaWNEZXRhaWxzUHJvcHMnO1xuZXhwb3J0IHsgSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5IH0gZnJvbSAnLi9zZXJ2aWNlcy9JbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHknO1xuZXhwb3J0IHsgQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkgfSBmcm9tICcuL3NlcnZpY2VzL0Jhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5JztcbmV4cG9ydCB7IElCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eSB9IGZyb20gJy4vc2VydmljZXMvSUJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5JztcbmV4cG9ydCB7IElJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkgfSBmcm9tICcuL3NlcnZpY2VzL0lJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHknO1xuZXhwb3J0IHsgSVNlcnZpY2VBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vYWxhcm1zYW5kcnVsZXMvSVNlcnZpY2VBbGFybXNBbmRSdWxlcyc7XG5leHBvcnQgeyBJQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZSB9IGZyb20gJy4vc2VydmljZXMvSUNhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGUnO1xuZXhwb3J0IHsgQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZSB9IGZyb20gJy4vc2VydmljZXMvQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZSc7XG5leHBvcnQgeyBDYW5hcnlUZXN0TWV0cmljc092ZXJyaWRlUHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL0NhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGVQcm9wcyc7XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Duration } from 'aws-cdk-lib';
2
+ import { IMetric } from 'aws-cdk-lib/aws-cloudwatch';
3
+ export declare class ApplicationLoadBalancerMetrics {
4
+ /**
5
+ * Creates a regional fault count metric using 5xx target and load balancer
6
+ * metrics against total requests for the specified load balancer
7
+ * @param period
8
+ * @param loadBalancerFullName
9
+ * @returns
10
+ */
11
+ static createRegionalApplicationLoadBalancerFaultRateMetric(loadBalancerFullName: string, period: Duration): IMetric;
12
+ /**
13
+ * Creates a zonal fault count metric using 5xx target and load balancer
14
+ * metrics against total requests for the specified load balancer
15
+ * @param loadBalancerFullName
16
+ * @param availabilityZoneName
17
+ * @param period
18
+ * @returns
19
+ */
20
+ static createZonalApplicationLoadBalancerFaultRateMetric(loadBalancerFullName: string, availabilityZoneName: string, period: Duration): IMetric;
21
+ /**
22
+ * Creates a regional processed bytes metric for the specified load balancer
23
+ * @param loadBalancerFullName
24
+ * @param period
25
+ * @returns
26
+ */
27
+ static createRegionalApplicationLoadBalancerProcessedBytesMetric(loadBalancerFullName: string, period: Duration): IMetric;
28
+ /**
29
+ * Creates a zonal processed bytes metric for the specified load balancer
30
+ * @param loadBalancerFullName
31
+ * @param availabilityZoneName
32
+ * @param period
33
+ * @returns IMetric
34
+ */
35
+ static createZonalApplicationLoadBalancerProcessedBytesMetric(loadBalancerFullName: string, availabilityZoneName: string, period: Duration): IMetric;
36
+ }
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationLoadBalancerMetrics = void 0;
4
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
5
+ class ApplicationLoadBalancerMetrics {
6
+ /**
7
+ * Creates a regional fault count metric using 5xx target and load balancer
8
+ * metrics against total requests for the specified load balancer
9
+ * @param period
10
+ * @param loadBalancerFullName
11
+ * @returns
12
+ */
13
+ static createRegionalApplicationLoadBalancerFaultRateMetric(loadBalancerFullName, period) {
14
+ return new aws_cloudwatch_1.MathExpression({
15
+ expression: '((m1 + m2) / m3) * 100',
16
+ label: 'Fault Rate',
17
+ period: period,
18
+ usingMetrics: {
19
+ m1: new aws_cloudwatch_1.Metric({
20
+ metricName: 'HTTPCode_Target_5XX_Count',
21
+ namespace: 'AWS/ApplicationELB',
22
+ unit: aws_cloudwatch_1.Unit.COUNT,
23
+ period: period,
24
+ statistic: 'Sum',
25
+ dimensionsMap: {
26
+ LoadBalancer: loadBalancerFullName,
27
+ },
28
+ label: '5xxTarget',
29
+ }),
30
+ m2: new aws_cloudwatch_1.Metric({
31
+ metricName: 'HTTPCode_ELB_5XX_Count',
32
+ namespace: 'AWS/ApplicationELB',
33
+ unit: aws_cloudwatch_1.Unit.COUNT,
34
+ period: period,
35
+ statistic: 'Sum',
36
+ dimensionsMap: {
37
+ LoadBalancer: loadBalancerFullName,
38
+ },
39
+ label: '5xxELB',
40
+ }),
41
+ m3: new aws_cloudwatch_1.Metric({
42
+ metricName: 'RequestCount',
43
+ namespace: 'AWS/ApplicationELB',
44
+ unit: aws_cloudwatch_1.Unit.COUNT,
45
+ period: period,
46
+ statistic: 'Sum',
47
+ dimensionsMap: {
48
+ LoadBalancer: loadBalancerFullName,
49
+ },
50
+ label: 'Requests',
51
+ }),
52
+ },
53
+ });
54
+ }
55
+ /**
56
+ * Creates a zonal fault count metric using 5xx target and load balancer
57
+ * metrics against total requests for the specified load balancer
58
+ * @param loadBalancerFullName
59
+ * @param availabilityZoneName
60
+ * @param period
61
+ * @returns
62
+ */
63
+ static createZonalApplicationLoadBalancerFaultRateMetric(loadBalancerFullName, availabilityZoneName, period) {
64
+ return new aws_cloudwatch_1.MathExpression({
65
+ expression: '((m1 + m2) / m3) * 100',
66
+ label: 'Fault Rate',
67
+ period: period,
68
+ usingMetrics: {
69
+ m1: new aws_cloudwatch_1.Metric({
70
+ metricName: 'HTTPCode_Target_5XX_Count',
71
+ namespace: 'AWS/ApplicationELB',
72
+ unit: aws_cloudwatch_1.Unit.COUNT,
73
+ period: period,
74
+ statistic: 'Sum',
75
+ dimensionsMap: {
76
+ LoadBalancer: loadBalancerFullName,
77
+ AvailabilityZone: availabilityZoneName,
78
+ },
79
+ label: '5xxTarget',
80
+ }),
81
+ m2: new aws_cloudwatch_1.Metric({
82
+ metricName: 'HTTPCode_ELB_5XX_Count',
83
+ namespace: 'AWS/ApplicationELB',
84
+ unit: aws_cloudwatch_1.Unit.COUNT,
85
+ period: period,
86
+ statistic: 'Sum',
87
+ dimensionsMap: {
88
+ LoadBalancer: loadBalancerFullName,
89
+ AvailabilityZone: availabilityZoneName,
90
+ },
91
+ label: '5xxELB',
92
+ }),
93
+ m3: new aws_cloudwatch_1.Metric({
94
+ metricName: 'RequestCount',
95
+ namespace: 'AWS/ApplicationELB',
96
+ unit: aws_cloudwatch_1.Unit.COUNT,
97
+ period: period,
98
+ statistic: 'Sum',
99
+ dimensionsMap: {
100
+ LoadBalancer: loadBalancerFullName,
101
+ AvailabilityZone: availabilityZoneName,
102
+ },
103
+ label: 'Requests',
104
+ }),
105
+ },
106
+ });
107
+ }
108
+ /**
109
+ * Creates a regional processed bytes metric for the specified load balancer
110
+ * @param loadBalancerFullName
111
+ * @param period
112
+ * @returns
113
+ */
114
+ static createRegionalApplicationLoadBalancerProcessedBytesMetric(loadBalancerFullName, period) {
115
+ return new aws_cloudwatch_1.Metric({
116
+ metricName: 'ProcessedBytes',
117
+ namespace: 'AWS/ApplicationELB',
118
+ unit: aws_cloudwatch_1.Unit.COUNT,
119
+ period: period,
120
+ statistic: 'Sum',
121
+ dimensionsMap: {
122
+ LoadBalancer: loadBalancerFullName,
123
+ },
124
+ label: 'ProcessedBytes',
125
+ });
126
+ }
127
+ /**
128
+ * Creates a zonal processed bytes metric for the specified load balancer
129
+ * @param loadBalancerFullName
130
+ * @param availabilityZoneName
131
+ * @param period
132
+ * @returns IMetric
133
+ */
134
+ static createZonalApplicationLoadBalancerProcessedBytesMetric(loadBalancerFullName, availabilityZoneName, period) {
135
+ return new aws_cloudwatch_1.Metric({
136
+ metricName: 'ProcessedBytes',
137
+ namespace: 'AWS/ApplicationELB',
138
+ unit: aws_cloudwatch_1.Unit.COUNT,
139
+ period: period,
140
+ statistic: 'Sum',
141
+ dimensionsMap: {
142
+ LoadBalancer: loadBalancerFullName,
143
+ AvailabilityZone: availabilityZoneName,
144
+ },
145
+ label: 'ProcessedBytes',
146
+ });
147
+ }
148
+ }
149
+ exports.ApplicationLoadBalancerMetrics = ApplicationLoadBalancerMetrics;
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldHJpY3MvQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLCtEQUtvQztBQUVwQyxNQUFhLDhCQUE4QjtJQUN6Qzs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsb0RBQW9ELENBQ3pELG9CQUE0QixFQUM1QixNQUFnQjtRQUVoQixPQUFPLElBQUksK0JBQWMsQ0FBQztZQUN4QixVQUFVLEVBQUUsd0JBQXdCO1lBQ3BDLEtBQUssRUFBRSxZQUFZO1lBQ25CLE1BQU0sRUFBRSxNQUFNO1lBQ2QsWUFBWSxFQUFFO2dCQUNaLEVBQUUsRUFBRSxJQUFJLHVCQUFNLENBQUM7b0JBQ2IsVUFBVSxFQUFFLDJCQUEyQjtvQkFDdkMsU0FBUyxFQUFFLG9CQUFvQjtvQkFDL0IsSUFBSSxFQUFFLHFCQUFJLENBQUMsS0FBSztvQkFDaEIsTUFBTSxFQUFFLE1BQU07b0JBQ2QsU0FBUyxFQUFFLEtBQUs7b0JBQ2hCLGFBQWEsRUFBRTt3QkFDYixZQUFZLEVBQUUsb0JBQW9CO3FCQUNuQztvQkFDRCxLQUFLLEVBQUUsV0FBVztpQkFDbkIsQ0FBQztnQkFDRixFQUFFLEVBQUUsSUFBSSx1QkFBTSxDQUFDO29CQUNiLFVBQVUsRUFBRSx3QkFBd0I7b0JBQ3BDLFNBQVMsRUFBRSxvQkFBb0I7b0JBQy9CLElBQUksRUFBRSxxQkFBSSxDQUFDLEtBQUs7b0JBQ2hCLE1BQU0sRUFBRSxNQUFNO29CQUNkLFNBQVMsRUFBRSxLQUFLO29CQUNoQixhQUFhLEVBQUU7d0JBQ2IsWUFBWSxFQUFFLG9CQUFvQjtxQkFDbkM7b0JBQ0QsS0FBSyxFQUFFLFFBQVE7aUJBQ2hCLENBQUM7Z0JBQ0YsRUFBRSxFQUFFLElBQUksdUJBQU0sQ0FBQztvQkFDYixVQUFVLEVBQUUsY0FBYztvQkFDMUIsU0FBUyxFQUFFLG9CQUFvQjtvQkFDL0IsSUFBSSxFQUFFLHFCQUFJLENBQUMsS0FBSztvQkFDaEIsTUFBTSxFQUFFLE1BQU07b0JBQ2QsU0FBUyxFQUFFLEtBQUs7b0JBQ2hCLGFBQWEsRUFBRTt3QkFDYixZQUFZLEVBQUUsb0JBQW9CO3FCQUNuQztvQkFDRCxLQUFLLEVBQUUsVUFBVTtpQkFDbEIsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsaURBQWlELENBQ3RELG9CQUE0QixFQUM1QixvQkFBNEIsRUFDNUIsTUFBZ0I7UUFFaEIsT0FBTyxJQUFJLCtCQUFjLENBQUM7WUFDeEIsVUFBVSxFQUFFLHdCQUF3QjtZQUNwQyxLQUFLLEVBQUUsWUFBWTtZQUNuQixNQUFNLEVBQUUsTUFBTTtZQUNkLFlBQVksRUFBRTtnQkFDWixFQUFFLEVBQUUsSUFBSSx1QkFBTSxDQUFDO29CQUNiLFVBQVUsRUFBRSwyQkFBMkI7b0JBQ3ZDLFNBQVMsRUFBRSxvQkFBb0I7b0JBQy9CLElBQUksRUFBRSxxQkFBSSxDQUFDLEtBQUs7b0JBQ2hCLE1BQU0sRUFBRSxNQUFNO29CQUNkLFNBQVMsRUFBRSxLQUFLO29CQUNoQixhQUFhLEVBQUU7d0JBQ2IsWUFBWSxFQUFFLG9CQUFvQjt3QkFDbEMsZ0JBQWdCLEVBQUUsb0JBQW9CO3FCQUN2QztvQkFDRCxLQUFLLEVBQUUsV0FBVztpQkFDbkIsQ0FBQztnQkFDRixFQUFFLEVBQUUsSUFBSSx1QkFBTSxDQUFDO29CQUNiLFVBQVUsRUFBRSx3QkFBd0I7b0JBQ3BDLFNBQVMsRUFBRSxvQkFBb0I7b0JBQy9CLElBQUksRUFBRSxxQkFBSSxDQUFDLEtBQUs7b0JBQ2hCLE1BQU0sRUFBRSxNQUFNO29CQUNkLFNBQVMsRUFBRSxLQUFLO29CQUNoQixhQUFhLEVBQUU7d0JBQ2IsWUFBWSxFQUFFLG9CQUFvQjt3QkFDbEMsZ0JBQWdCLEVBQUUsb0JBQW9CO3FCQUN2QztvQkFDRCxLQUFLLEVBQUUsUUFBUTtpQkFDaEIsQ0FBQztnQkFDRixFQUFFLEVBQUUsSUFBSSx1QkFBTSxDQUFDO29CQUNiLFVBQVUsRUFBRSxjQUFjO29CQUMxQixTQUFTLEVBQUUsb0JBQW9CO29CQUMvQixJQUFJLEVBQUUscUJBQUksQ0FBQyxLQUFLO29CQUNoQixNQUFNLEVBQUUsTUFBTTtvQkFDZCxTQUFTLEVBQUUsS0FBSztvQkFDaEIsYUFBYSxFQUFFO3dCQUNiLFlBQVksRUFBRSxvQkFBb0I7d0JBQ2xDLGdCQUFnQixFQUFFLG9CQUFvQjtxQkFDdkM7b0JBQ0QsS0FBSyxFQUFFLFVBQVU7aUJBQ2xCLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyx5REFBeUQsQ0FDOUQsb0JBQTRCLEVBQzVCLE1BQWdCO1FBRWhCLE9BQU8sSUFBSSx1QkFBTSxDQUFDO1lBQ2hCLFVBQVUsRUFBRSxnQkFBZ0I7WUFDNUIsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixJQUFJLEVBQUUscUJBQUksQ0FBQyxLQUFLO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsU0FBUyxFQUFFLEtBQUs7WUFDaEIsYUFBYSxFQUFFO2dCQUNiLFlBQVksRUFBRSxvQkFBb0I7YUFDbkM7WUFDRCxLQUFLLEVBQUUsZ0JBQWdCO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsc0RBQXNELENBQzNELG9CQUE0QixFQUM1QixvQkFBNEIsRUFDNUIsTUFBZ0I7UUFFaEIsT0FBTyxJQUFJLHVCQUFNLENBQUM7WUFDaEIsVUFBVSxFQUFFLGdCQUFnQjtZQUM1QixTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLElBQUksRUFBRSxxQkFBSSxDQUFDLEtBQUs7WUFDaEIsTUFBTSxFQUFFLE1BQU07WUFDZCxTQUFTLEVBQUUsS0FBSztZQUNoQixhQUFhLEVBQUU7Z0JBQ2IsWUFBWSxFQUFFLG9CQUFvQjtnQkFDbEMsZ0JBQWdCLEVBQUUsb0JBQW9CO2FBQ3ZDO1lBQ0QsS0FBSyxFQUFFLGdCQUFnQjtTQUN4QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFoS0Qsd0VBZ0tDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBJTWV0cmljLFxuICBNYXRoRXhwcmVzc2lvbixcbiAgTWV0cmljLFxuICBVbml0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3Mge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIHJlZ2lvbmFsIGZhdWx0IGNvdW50IG1ldHJpYyB1c2luZyA1eHggdGFyZ2V0IGFuZCBsb2FkIGJhbGFuY2VyXG4gICAqIG1ldHJpY3MgYWdhaW5zdCB0b3RhbCByZXF1ZXN0cyBmb3IgdGhlIHNwZWNpZmllZCBsb2FkIGJhbGFuY2VyXG4gICAqIEBwYXJhbSBwZXJpb2RcbiAgICogQHBhcmFtIGxvYWRCYWxhbmNlckZ1bGxOYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlUmVnaW9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckZhdWx0UmF0ZU1ldHJpYyhcbiAgICBsb2FkQmFsYW5jZXJGdWxsTmFtZTogc3RyaW5nLFxuICAgIHBlcmlvZDogRHVyYXRpb24sXG4gICk6IElNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgZXhwcmVzc2lvbjogJygobTEgKyBtMikgLyBtMykgKiAxMDAnLFxuICAgICAgbGFiZWw6ICdGYXVsdCBSYXRlJyxcbiAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgdXNpbmdNZXRyaWNzOiB7XG4gICAgICAgIG0xOiBuZXcgTWV0cmljKHtcbiAgICAgICAgICBtZXRyaWNOYW1lOiAnSFRUUENvZGVfVGFyZ2V0XzVYWF9Db3VudCcsXG4gICAgICAgICAgbmFtZXNwYWNlOiAnQVdTL0FwcGxpY2F0aW9uRUxCJyxcbiAgICAgICAgICB1bml0OiBVbml0LkNPVU5ULFxuICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiBsb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxhYmVsOiAnNXh4VGFyZ2V0JyxcbiAgICAgICAgfSksXG4gICAgICAgIG0yOiBuZXcgTWV0cmljKHtcbiAgICAgICAgICBtZXRyaWNOYW1lOiAnSFRUUENvZGVfRUxCXzVYWF9Db3VudCcsXG4gICAgICAgICAgbmFtZXNwYWNlOiAnQVdTL0FwcGxpY2F0aW9uRUxCJyxcbiAgICAgICAgICB1bml0OiBVbml0LkNPVU5ULFxuICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiBsb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxhYmVsOiAnNXh4RUxCJyxcbiAgICAgICAgfSksXG4gICAgICAgIG0zOiBuZXcgTWV0cmljKHtcbiAgICAgICAgICBtZXRyaWNOYW1lOiAnUmVxdWVzdENvdW50JyxcbiAgICAgICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwbGljYXRpb25FTEInLFxuICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlQsXG4gICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICBMb2FkQmFsYW5jZXI6IGxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGFiZWw6ICdSZXF1ZXN0cycsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgem9uYWwgZmF1bHQgY291bnQgbWV0cmljIHVzaW5nIDV4eCB0YXJnZXQgYW5kIGxvYWQgYmFsYW5jZXJcbiAgICogbWV0cmljcyBhZ2FpbnN0IHRvdGFsIHJlcXVlc3RzIGZvciB0aGUgc3BlY2lmaWVkIGxvYWQgYmFsYW5jZXJcbiAgICogQHBhcmFtIGxvYWRCYWxhbmNlckZ1bGxOYW1lXG4gICAqIEBwYXJhbSBhdmFpbGFiaWxpdHlab25lTmFtZVxuICAgKiBAcGFyYW0gcGVyaW9kXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlWm9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckZhdWx0UmF0ZU1ldHJpYyhcbiAgICBsb2FkQmFsYW5jZXJGdWxsTmFtZTogc3RyaW5nLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVOYW1lOiBzdHJpbmcsXG4gICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgKTogSU1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICBleHByZXNzaW9uOiAnKChtMSArIG0yKSAvIG0zKSAqIDEwMCcsXG4gICAgICBsYWJlbDogJ0ZhdWx0IFJhdGUnLFxuICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbTE6IG5ldyBNZXRyaWMoe1xuICAgICAgICAgIG1ldHJpY05hbWU6ICdIVFRQQ29kZV9UYXJnZXRfNVhYX0NvdW50JyxcbiAgICAgICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwbGljYXRpb25FTEInLFxuICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlQsXG4gICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICBMb2FkQmFsYW5jZXI6IGxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZU5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsYWJlbDogJzV4eFRhcmdldCcsXG4gICAgICAgIH0pLFxuICAgICAgICBtMjogbmV3IE1ldHJpYyh7XG4gICAgICAgICAgbWV0cmljTmFtZTogJ0hUVFBDb2RlX0VMQl81WFhfQ291bnQnLFxuICAgICAgICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBsaWNhdGlvbkVMQicsXG4gICAgICAgICAgdW5pdDogVW5pdC5DT1VOVCxcbiAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgIExvYWRCYWxhbmNlcjogbG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxhYmVsOiAnNXh4RUxCJyxcbiAgICAgICAgfSksXG4gICAgICAgIG0zOiBuZXcgTWV0cmljKHtcbiAgICAgICAgICBtZXRyaWNOYW1lOiAnUmVxdWVzdENvdW50JyxcbiAgICAgICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwbGljYXRpb25FTEInLFxuICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlQsXG4gICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICBMb2FkQmFsYW5jZXI6IGxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZU5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsYWJlbDogJ1JlcXVlc3RzJyxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByZWdpb25hbCBwcm9jZXNzZWQgYnl0ZXMgbWV0cmljIGZvciB0aGUgc3BlY2lmaWVkIGxvYWQgYmFsYW5jZXJcbiAgICogQHBhcmFtIGxvYWRCYWxhbmNlckZ1bGxOYW1lXG4gICAqIEBwYXJhbSBwZXJpb2RcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVSZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyUHJvY2Vzc2VkQnl0ZXNNZXRyaWMoXG4gICAgbG9hZEJhbGFuY2VyRnVsbE5hbWU6IHN0cmluZyxcbiAgICBwZXJpb2Q6IER1cmF0aW9uLFxuICApOiBJTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBtZXRyaWNOYW1lOiAnUHJvY2Vzc2VkQnl0ZXMnLFxuICAgICAgbmFtZXNwYWNlOiAnQVdTL0FwcGxpY2F0aW9uRUxCJyxcbiAgICAgIHVuaXQ6IFVuaXQuQ09VTlQsXG4gICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIExvYWRCYWxhbmNlcjogbG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICB9LFxuICAgICAgbGFiZWw6ICdQcm9jZXNzZWRCeXRlcycsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHpvbmFsIHByb2Nlc3NlZCBieXRlcyBtZXRyaWMgZm9yIHRoZSBzcGVjaWZpZWQgbG9hZCBiYWxhbmNlclxuICAgKiBAcGFyYW0gbG9hZEJhbGFuY2VyRnVsbE5hbWVcbiAgICogQHBhcmFtIGF2YWlsYWJpbGl0eVpvbmVOYW1lXG4gICAqIEBwYXJhbSBwZXJpb2RcbiAgICogQHJldHVybnMgSU1ldHJpY1xuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVpvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9jZXNzZWRCeXRlc01ldHJpYyhcbiAgICBsb2FkQmFsYW5jZXJGdWxsTmFtZTogc3RyaW5nLFxuICAgIGF2YWlsYWJpbGl0eVpvbmVOYW1lOiBzdHJpbmcsXG4gICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgKTogSU1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgbWV0cmljTmFtZTogJ1Byb2Nlc3NlZEJ5dGVzJyxcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBsaWNhdGlvbkVMQicsXG4gICAgICB1bml0OiBVbml0LkNPVU5ULFxuICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBMb2FkQmFsYW5jZXI6IGxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lTmFtZSxcbiAgICAgIH0sXG4gICAgICBsYWJlbDogJ1Byb2Nlc3NlZEJ5dGVzJyxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,61 @@
1
+ import { IMetric } from 'aws-cdk-lib/aws-cloudwatch';
2
+ import { AvailabilityMetricProps } from './props/AvailabilityMetricProps';
3
+ import { LatencyMetricProps } from './props/LatencyMetricProps';
4
+ /**
5
+ * Class for creating availability and latency metrics that can be used in alarms and graphs
6
+ */
7
+ export declare class AvailabilityAndLatencyMetrics {
8
+ /**
9
+ * Increments a str by one char, for example
10
+ * a -> b
11
+ * z -> aa
12
+ * ad -> ae
13
+ *
14
+ * This wraps at z and adds a new 'a'
15
+ * @param str
16
+ * @returns
17
+ */
18
+ static nextChar(str: string): string;
19
+ /**
20
+ * General purpose method to create availability metrics
21
+ * @param props
22
+ * @param dimensions
23
+ * @returns
24
+ */
25
+ static createAvailabilityMetric(props: AvailabilityMetricProps, dimensions: {
26
+ [key: string]: string;
27
+ }): IMetric;
28
+ /**
29
+ * General purpose method to create latency metrics, the reason this creates an array of metrics while the
30
+ * equivalent availability metric method doesn't is because in availability, we can just sum the count of different
31
+ * metric names while for latency we can't sum the count because that's not what's being measured. It allows the
32
+ * caller to decide if they only want to take the first name, or average all of the names
33
+ * (like SuccessLatency and BigItemSuccessLatency).
34
+ *
35
+ * @param props
36
+ * @param dimensions
37
+ * @returns
38
+ */
39
+ static createLatencyMetrics(props: LatencyMetricProps, dimensions: {
40
+ [key: string]: string;
41
+ }): IMetric[];
42
+ /**
43
+ * Takes all of the success or failure latency metric names and creates an average of those
44
+ * names, if there's only 1 name, it just returns that metric
45
+ * @param props
46
+ * @param dimensions
47
+ */
48
+ static createAverageLatencyMetric(props: LatencyMetricProps, dimensions: {
49
+ [key: string]: string;
50
+ }): IMetric;
51
+ /**
52
+ * Creates a count of high latency metrics for either SuccessLatency or FaultLatency, will total
53
+ * the count of requests that exceed a threshold you define in your statistic, like TC(200:) across
54
+ * all metric names that are part of either Success or Fault latency.
55
+ * @param props
56
+ * @returns
57
+ */
58
+ static createLatencyCountMetric(props: LatencyMetricProps, dimensions: {
59
+ [key: string]: string;
60
+ }): IMetric;
61
+ }