aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
311 lines (310 loc) • 7.22 kB
TypeScript
import { Duration } from '../../core';
/**
* Interface for metrics
*/
export interface IMetric {
/**
* Any warnings related to this metric
*
* Should be attached to the consuming construct.
*
* @default - None
* @deprecated - use warningsV2
*/
readonly warnings?: string[];
/**
* Any warnings related to this metric
*
* Should be attached to the consuming construct.
*
* @default - None
*/
readonly warningsV2?: {
[id: string]: string;
};
/**
* Inspect the details of the metric object
*/
toMetricConfig(): MetricConfig;
}
/**
* Metric dimension
*
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-dimension.html
*/
export interface Dimension {
/**
* Name of the dimension
*/
readonly name: string;
/**
* Value of the dimension
*/
readonly value: any;
}
/**
* Statistic to use over the aggregation period
*
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html
* @deprecated Use one of the factory methods on `Stats` to produce statistics strings
*/
export declare enum Statistic {
/**
* The count (number) of data points used for the statistical calculation.
*/
SAMPLE_COUNT = "SampleCount",
/**
* The value of Sum / SampleCount during the specified period.
*/
AVERAGE = "Average",
/**
* All values submitted for the matching metric added together.
* This statistic can be useful for determining the total volume of a metric.
*/
SUM = "Sum",
/**
* The lowest value observed during the specified period.
* You can use this value to determine low volumes of activity for your application.
*/
MINIMUM = "Minimum",
/**
* The highest value observed during the specified period.
* You can use this value to determine high volumes of activity for your application.
*/
MAXIMUM = "Maximum"
}
/**
* Unit for metric
*/
export declare enum Unit {
/**
* Seconds
*/
SECONDS = "Seconds",
/**
* Microseconds
*/
MICROSECONDS = "Microseconds",
/**
* Milliseconds
*/
MILLISECONDS = "Milliseconds",
/**
* Bytes
*/
BYTES = "Bytes",
/**
* Kilobytes
*/
KILOBYTES = "Kilobytes",
/**
* Megabytes
*/
MEGABYTES = "Megabytes",
/**
* Gigabytes
*/
GIGABYTES = "Gigabytes",
/**
* Terabytes
*/
TERABYTES = "Terabytes",
/**
* Bits
*/
BITS = "Bits",
/**
* Kilobits
*/
KILOBITS = "Kilobits",
/**
* Megabits
*/
MEGABITS = "Megabits",
/**
* Gigabits
*/
GIGABITS = "Gigabits",
/**
* Terabits
*/
TERABITS = "Terabits",
/**
* Percent
*/
PERCENT = "Percent",
/**
* Count
*/
COUNT = "Count",
/**
* Bytes/second (B/s)
*/
BYTES_PER_SECOND = "Bytes/Second",
/**
* Kilobytes/second (kB/s)
*/
KILOBYTES_PER_SECOND = "Kilobytes/Second",
/**
* Megabytes/second (MB/s)
*/
MEGABYTES_PER_SECOND = "Megabytes/Second",
/**
* Gigabytes/second (GB/s)
*/
GIGABYTES_PER_SECOND = "Gigabytes/Second",
/**
* Terabytes/second (TB/s)
*/
TERABYTES_PER_SECOND = "Terabytes/Second",
/**
* Bits/second (b/s)
*/
BITS_PER_SECOND = "Bits/Second",
/**
* Kilobits/second (kb/s)
*/
KILOBITS_PER_SECOND = "Kilobits/Second",
/**
* Megabits/second (Mb/s)
*/
MEGABITS_PER_SECOND = "Megabits/Second",
/**
* Gigabits/second (Gb/s)
*/
GIGABITS_PER_SECOND = "Gigabits/Second",
/**
* Terabits/second (Tb/s)
*/
TERABITS_PER_SECOND = "Terabits/Second",
/**
* Count/second
*/
COUNT_PER_SECOND = "Count/Second",
/**
* None
*/
NONE = "None"
}
/**
* Properties of a rendered metric
*/
export interface MetricConfig {
/**
* In case the metric represents a query, the details of the query
*
* @default - None
*/
readonly metricStat?: MetricStatConfig;
/**
* In case the metric is a math expression, the details of the math expression
*
* @default - None
*/
readonly mathExpression?: MetricExpressionConfig;
/**
* Additional properties which will be rendered if the metric is used in a dashboard
*
* Examples are 'label' and 'color', but any key in here will be
* added to dashboard graphs.
*
* @default - None
*/
readonly renderingProperties?: Record<string, unknown>;
}
/**
* Properties for a concrete metric
*
* NOTE: `unit` is no longer on this object since it is only used for `Alarms`, and doesn't mean what one
* would expect it to mean there anyway. It is most likely to be misused.
*/
export interface MetricStatConfig {
/**
* The dimensions to apply to the alarm
*
* @default []
*/
readonly dimensions?: Dimension[];
/**
* Namespace of the metric
*/
readonly namespace: string;
/**
* Name of the metric
*/
readonly metricName: string;
/**
* How many seconds to aggregate over
*/
readonly period: Duration;
/**
* Aggregation function to use (can be either simple or a percentile)
*/
readonly statistic: string;
/**
* Unit used to filter the metric stream
*
* Only refer to datums emitted to the metric stream with the given unit and
* ignore all others. Only useful when datums are being emitted to the same
* metric stream under different units.
*
* This field has been renamed from plain `unit` to clearly communicate
* its purpose.
*
* @default - Refer to all metric datums
*/
readonly unitFilter?: Unit;
/**
* Region which this metric comes from.
*
* @default Deployment region.
*/
readonly region?: string;
/**
* Account which this metric comes from.
*
* @default Deployment account.
*/
readonly account?: string;
/**
* Region set directly on the metric, not inherited from the attached stack.
*
* @default No override.
*/
readonly regionOverride?: string;
/**
* Account set directly on the metric, not inherited from the attached stack.
*
* @default No override.
*/
readonly accountOverride?: string;
}
/**
* Properties for a concrete metric
*/
export interface MetricExpressionConfig {
/**
* Math expression for the metric.
*/
readonly expression: string;
/**
* Metrics used in the math expression
*/
readonly usingMetrics: Record<string, IMetric>;
/**
* How many seconds to aggregate over
*/
readonly period: number;
/**
* Account to evaluate search expressions within.
*
* @default - Deployment account.
*/
readonly searchAccount?: string;
/**
* Region to evaluate search expressions within.
*
* @default - Deployment region.
*/
readonly searchRegion?: string;
}