Class: AWSCDK::RUM::CfnAppMonitor::MetricDefinitionProperty

Inherits:
Jsii::Struct
  • Object
show all
Defined in:
rum/cfn_app_monitor.rb

Overview

Specifies one custom metric or extended metric that you want the CloudWatch RUM app monitor to send to a destination.

Valid destinations include CloudWatch and Evidently.

By default, RUM app monitors send some metrics to CloudWatch . These default metrics are listed in CloudWatch metrics that you can collect.

In addition to these default metrics, you can choose to send extended metrics or custom metrics or both.

  • Extended metrics enable you to send metrics with additional dimensions not included in the default metrics. You can also send extended metrics to Evidently as well as CloudWatch . The valid dimension names for the additional dimensions for extended metrics are BrowserName , CountryCode , DeviceType , FileType , OSName , and PageId . For more information, see Extended metrics .
  • Custom metrics are metrics that you define. You can send custom metrics to CloudWatch or to CloudWatch Evidently or to both. With custom metrics, you can use any metric name and namespace, and to derive the metrics you can use any custom events, built-in events, custom attributes, or default attributes.

You can't send custom metrics to the AWS/RUM namespace. You must send custom metrics to a custom namespace that you define. The namespace that you use can't start with AWS/ . CloudWatch RUM prepends RUM/CustomMetrics/ to the custom namespace that you define, so the final namespace for your metrics in CloudWatch is RUM/CustomMetrics/ *your-custom-namespace* .

For information about syntax rules for specifying custom metrics and extended metrics, see MetridDefinitionRequest in the CloudWatch RUM API Reference .

The maximum number of metric definitions that one destination can contain is 2000.

Extended metrics sent to CloudWatch and RUM custom metrics are charged as CloudWatch custom metrics. Each combination of additional dimension name and dimension value counts as a custom metric.

If some metric definitions that you specify are not valid, then the operation will not modify any metric definitions even if other metric definitions specified are valid.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, dimension_keys: nil, event_pattern: nil, namespace: nil, unit_label: nil, value_key: nil) ⇒ MetricDefinitionProperty

Returns a new instance of MetricDefinitionProperty.

Parameters:

  • name (String)

    The name of the metric that is defined in this structure.

  • dimension_keys (AWSCDK::IResolvable, Hash{String => String}, nil) (defaults to: nil)

    This field is a map of field paths to dimension names.

  • event_pattern (String, nil) (defaults to: nil)

    The pattern that defines the metric.

  • namespace (String, nil) (defaults to: nil)

    If you are creating a custom metric instead of an extended metrics, use this parameter to define the metric namespace for that custom metric.

  • unit_label (String, nil) (defaults to: nil)

    Use this field only if you are sending this metric to CloudWatch .

  • value_key (String, nil) (defaults to: nil)

    The field within the event object that the metric value is sourced from.



922
923
924
925
926
927
928
929
930
931
932
933
934
935
# File 'rum/cfn_app_monitor.rb', line 922

def initialize(name:, dimension_keys: nil, event_pattern: nil, namespace: nil, unit_label: nil, value_key: nil)
  @name = name
  Jsii::Type.check_type(@name, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "name")
  @dimension_keys = dimension_keys
  Jsii::Type.check_type(@dimension_keys, JSON.parse(Base64.strict_decode64("eyJ1bmlvbiI6eyJ0eXBlcyI6W3siZnFuIjoiYXdzLWNkay1saWIuSVJlc29sdmFibGUifSx7ImNvbGxlY3Rpb24iOnsiZWxlbWVudHR5cGUiOnsicHJpbWl0aXZlIjoic3RyaW5nIn0sImtpbmQiOiJtYXAifX1dfX0=")), "dimensionKeys") unless @dimension_keys.nil?
  @event_pattern = event_pattern
  Jsii::Type.check_type(@event_pattern, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "eventPattern") unless @event_pattern.nil?
  @namespace = namespace
  Jsii::Type.check_type(@namespace, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "namespace") unless @namespace.nil?
  @unit_label = unit_label
  Jsii::Type.check_type(@unit_label, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "unitLabel") unless @unit_label.nil?
  @value_key = value_key
  Jsii::Type.check_type(@value_key, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "valueKey") unless @value_key.nil?
end

Instance Attribute Details

#dimension_keysAWSCDK::IResolvable, ... (readonly)

This field is a map of field paths to dimension names.

It defines the dimensions to associate with this metric in CloudWatch . The value of this field is used only if the metric destination is CloudWatch . If the metric destination is Evidently , the value of DimensionKeys is ignored.



948
949
950
# File 'rum/cfn_app_monitor.rb', line 948

def dimension_keys
  @dimension_keys
end

#event_patternString? (readonly)

The pattern that defines the metric.

RUM checks events that happen in a user's session against the pattern, and events that match the pattern are sent to the metric destination.

If the metrics destination is CloudWatch and the event also matches a value in DimensionKeys , then the metric is published with the specified dimensions.



957
958
959
# File 'rum/cfn_app_monitor.rb', line 957

def event_pattern
  @event_pattern
end

#nameString (readonly)

The name of the metric that is defined in this structure.



941
942
943
# File 'rum/cfn_app_monitor.rb', line 941

def name
  @name
end

#namespaceString? (readonly)

If you are creating a custom metric instead of an extended metrics, use this parameter to define the metric namespace for that custom metric.

Do not specify this parameter if you are creating an extended metric.

You can't use any string that starts with AWS/ for your namespace.



966
967
968
# File 'rum/cfn_app_monitor.rb', line 966

def namespace
  @namespace
end

#unit_labelString? (readonly)

Use this field only if you are sending this metric to CloudWatch .

It defines the CloudWatch metric unit that this metric is measured in.



973
974
975
# File 'rum/cfn_app_monitor.rb', line 973

def unit_label
  @unit_label
end

#value_keyString? (readonly)

The field within the event object that the metric value is sourced from.



978
979
980
# File 'rum/cfn_app_monitor.rb', line 978

def value_key
  @value_key
end

Class Method Details

.jsii_propertiesObject



980
981
982
983
984
985
986
987
988
989
# File 'rum/cfn_app_monitor.rb', line 980

def self.jsii_properties
  {
    :name => "name",
    :dimension_keys => "dimensionKeys",
    :event_pattern => "eventPattern",
    :namespace => "namespace",
    :unit_label => "unitLabel",
    :value_key => "valueKey",
  }
end

Instance Method Details

#to_jsiiObject



991
992
993
994
995
996
997
998
999
1000
1001
1002
# File 'rum/cfn_app_monitor.rb', line 991

def to_jsii
  result = {}
  result.merge!({
    "name" => @name,
    "dimensionKeys" => @dimension_keys,
    "eventPattern" => @event_pattern,
    "namespace" => @namespace,
    "unitLabel" => @unit_label,
    "valueKey" => @value_key,
  })
  result.compact
end