Documentation
¶
Overview ¶
Package awsemfexporter implements an OpenTelemetry Collector exporter that sends EmbeddedMetricFormat to AWS CloudWatch Logs in the region the collector is running in using the PutLogEvents API.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewFactory ¶
NewFactory creates a factory for AWS EMF exporter.
Types ¶
type Config ¶
type Config struct {
// AWSSessionSettings contains the common configuration options
// for creating AWS session to communicate with backend
awsutil.AWSSessionSettings `mapstructure:",squash"`
// LogGroupName is the name of CloudWatch log group which defines group of log streams
// that share the same retention, monitoring, and access control settings.
LogGroupName string `mapstructure:"log_group_name"`
// LogStreamName is the name of CloudWatch log stream which is a sequence of log events
// that share the same source.
LogStreamName string `mapstructure:"log_stream_name"`
// Namespace is a container for CloudWatch metrics.
// Metrics in different namespaces are isolated from each other.
Namespace string `mapstructure:"namespace"`
// RetainInitialValueOfDeltaMetric is the flag to signal that the initial value of a metric is a valid datapoint.
// The default behavior is that the first value occurrence of a metric is set as the baseline for the calculation of
// the delta to the next occurrence. With this flag set to true the exporter will instead use this first value as the
// initial delta value. This is especially useful when handling low frequency metrics.
RetainInitialValueOfDeltaMetric bool `mapstructure:"retain_initial_value_of_delta_metric"`
// DimensionRollupOption is the option for metrics dimension rollup. Three options are available, default option is "ZeroAndSingleDimensionRollup".
// "ZeroAndSingleDimensionRollup" - Enable both zero dimension rollup and single dimension rollup
// "SingleDimensionRollupOnly" - Enable single dimension rollup
// "NoDimensionRollup" - No dimension rollup (only keep original metrics which contain all dimensions)
DimensionRollupOption string `mapstructure:"dimension_rollup_option"`
// LogRetention is the option to set the log retention policy for the CloudWatch Log Group. Defaults to Never Expire if not specified or set to 0
// Possible values are 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 2192, 2557, 2922, 3288, or 3653
LogRetention int32 `mapstructure:"log_retention"`
// Tags is the option to set tags for the CloudWatch Log Group. If specified, please add at most 50 tags. Input is a string to string map like so: { 'key': 'value' }
// Keys must be between 1-128 characters and follow the regex pattern: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]+)$
// Values must be between 1-256 characters and follow the regex pattern: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$
Tags map[string]string `mapstructure:"tags"`
// ParseJSONEncodedAttributeValues is an array of attribute keys whose corresponding values are JSON-encoded as strings.
// Those strings will be decoded to its original json structure.
ParseJSONEncodedAttributeValues []string `mapstructure:"parse_json_encoded_attr_values"`
// MetricDeclarations is the list of rules to be used to set dimensions for exported metrics.
MetricDeclarations []*MetricDeclaration `mapstructure:"metric_declarations"`
// MetricDescriptors is the list of override metric descriptors that are sent to the CloudWatch
MetricDescriptors []MetricDescriptor `mapstructure:"metric_descriptors"`
// OutputDestination is an option to specify the EMFExporter output. Default option is "cloudwatch"
// "cloudwatch" - direct the exporter output to CloudWatch backend
// "stdout" - direct the exporter output to stdout
// TODO: we can support directing output to a file (in the future) while customer specifies a file path here.
OutputDestination string `mapstructure:"output_destination"`
// EKSFargateContainerInsightsEnabled is an option to reformat certin metric labels so that they take the form of a high level object
// The end result will make the labels look like those coming out of ECS and be more easily injected into cloudwatch
// Note that at the moment in order to use this feature the value "kubernetes" must also be added to the ParseJSONEncodedAttributeValues array in order to be used
EKSFargateContainerInsightsEnabled bool `mapstructure:"eks_fargate_container_insights_enabled"`
// ResourceToTelemetrySettings is an option for converting resource attributes to telemetry attributes.
// "Enabled" - A boolean field to enable/disable this option. Default is `false`.
// If enabled, all the resource attributes will be converted to metric labels by default.
ResourceToTelemetrySettings resourcetotelemetry.Settings `mapstructure:"resource_to_telemetry_conversion"`
// DetailedMetrics is an option for retaining detailed datapoint values in exported metrics (e.g instead of exporting a quantile as a statistical value,
// preserve the quantile's population)
DetailedMetrics bool `mapstructure:"detailed_metrics"`
// Version is an option for sending metrics to CloudWatchLogs with Embedded Metric Format in selected version (with "_aws")
// https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Specification.html#CloudWatch_Embedded_Metric_Format_Specification_structure
// Otherwise, sending metrics as Embedded Metric Format version 0 (without "_aws")
Version string `mapstructure:"version"`
// contains filtered or unexported fields
}
Config defines configuration for AWS EMF exporter.
type LabelMatcher ¶ added in v0.16.0
type LabelMatcher struct {
// List of label names to filter by. Their corresponding values are concatenated using
// the separator and matched against the specified regular expression.
LabelNames []string `mapstructure:"label_names"`
// (Optional) Separator placed between concatenated source label values. (Default: ';')
Separator string `mapstructure:"separator"`
// Regex string to be used to match against values of the concatenated labels.
Regex string `mapstructure:"regex"`
// contains filtered or unexported fields
}
LabelMatcher defines a label filtering rule against the labels of incoming metrics. Only metrics that match the rules will be used by the surrounding MetricDeclaration.
type MetricDeclaration ¶ added in v0.15.0
type MetricDeclaration struct {
// Dimensions is a list of dimension sets (which are lists of dimension names) to be
// included in exported metrics. If the metric does not contain any of the specified
// dimensions, the metric would be dropped (will only show up in logs).
Dimensions [][]string `mapstructure:"dimensions"`
// MetricNameSelectors is a list of regex strings to be matched against metric names
// to determine which metrics should be included with this metric declaration rule.
MetricNameSelectors []string `mapstructure:"metric_name_selectors"`
// (Optional) List of label matchers that define matching rules to filter against
// the labels of incoming metrics.
LabelMatchers []*LabelMatcher `mapstructure:"label_matchers"`
// contains filtered or unexported fields
}
MetricDeclaration characterizes a rule to be used to set dimensions for certain incoming metrics, filtered by their metric names.
func (*MetricDeclaration) ExtractDimensions ¶ added in v0.15.0
func (m *MetricDeclaration) ExtractDimensions(labels map[string]string) (dimensions [][]string)
ExtractDimensions filters through the dimensions defined in the given metric declaration and returns dimensions that only contains labels from in the given label set.
func (*MetricDeclaration) MatchesLabels ¶ added in v0.21.0
func (m *MetricDeclaration) MatchesLabels(labels map[string]string) bool
MatchesLabels returns true if the given OTLP Metric's name matches any of the Metric Declaration's label matchers.
func (*MetricDeclaration) MatchesName ¶ added in v0.21.0
func (m *MetricDeclaration) MatchesName(metricName string) bool
MatchesName returns true if the given OTLP Metric's name matches any of the Metric Declaration's metric name selectors.
type MetricDescriptor ¶ added in v0.21.0
type MetricDescriptor struct {
// MetricName is the name of the metric
MetricName string `mapstructure:"metric_name"`
// Unit defines the override value of metric descriptor `unit`
Unit string `mapstructure:"unit"`
// Overwrite set to true means the existing metric descriptor will be overwritten or a new metric descriptor will be created; false means
// the descriptor will only be configured if empty.
Overwrite bool `mapstructure:"overwrite"`
}