View a markdown version of this page

Métricas de CloudWatch (OTel) - Amazon CloudWatch

Métricas de CloudWatch (OTel)

Los criterios de selección determinan qué métricas de OTel entran en una canalización para su procesamiento. Cada criterio es una expresión con el formato <path> == "<value>" que se compara con un atributo específico de la métrica entrante. Se requiere al menos un criterio de selección.

Los criterios se agrupan en un bloque match_all con semántica AND. Para entrar en la canalización, una métrica debe coincidir con todas las expresiones del grupo.

Rutas compatibles

Las siguientes rutas de OTTL son compatibles con los criterios de selección:

Ruta Descripción

resource.attributes["key"]

Atributo a nivel de recurso

instrumentation_scope.name

Nombre del ámbito de instrumentación

instrumentation_scope.version

Versión del ámbito de instrumentación

instrumentation_scope.attributes["key"]

Atributo del ámbito de instrumentación

metric.name

Nombre de métrica

datapoint.attributes["key"]

Atributo a nivel de punto de datos

attributes["key"]

Forma abreviada de datapoint.attributes["key"]

Configuración

Los criterios de selección se definen en la sección source de la configuración de la canalización:

pipeline: source: cloudwatch_metrics: format: otlp selection_criteria: - match_all: - 'resource.attributes["service.name"] == "my-service"' - 'metric.name == "http.server.request.duration"' processor: - add_attributes: attributes: - key: resource.attributes["team"] value: "platform-engineering" sink: - cloudwatch_metrics: {}

En el siguiente ejemplo se utilizan todos los tipos de rutas compatibles:

pipeline: source: cloudwatch_metrics: format: otlp selection_criteria: - match_all: - 'resource.attributes["service.name"] == "my-service"' - 'instrumentation_scope.name == "my-scope"' - 'instrumentation_scope.version == "1.0.0"' - 'instrumentation_scope.attributes["library"] == "otel-java"' - 'metric.name == "http.server.request.duration"' - 'datapoint.attributes["status_code"] == "200"' - 'attributes["environment"] == "production"' processor: - add_attributes: attributes: - key: resource.attributes["team"] value: "observability" sink: - cloudwatch_metrics: {}

Comprobación mediante PromQL

CloudWatch asigna los ámbitos de atributos de OTTL a etiquetas de PromQL mediante la convención de prefijos @. Utilice esta asignación para comprobar en Estudio de consultas que la canalización procese las métricas según lo previsto:

Ruta de OTTL de la canalización Prefijo de etiqueta de PromQL Ejemplo

resource.attributes["key"]

@resource.

@resource.service.name

instrumentation_scope.name

@instrumentation.@name

@instrumentation.@name

instrumentation_scope.attributes["key"]

@instrumentation.

@instrumentation.library

datapoint.attributes["key"] / attributes["key"]

@datapoint. o sin prefijo

status_code

Por ejemplo, si la canalización agrega resource.attributes["team"] con el valor "platform-engineering", puede confirmar que se aplicó:

{"CPUUtilization", "@resource.team"="platform-engineering"}

Requisitos y limitaciones

Un único grupo match_all

Cada canalización admite exactamente un grupo match_all en selection_criteria. No se pueden definir varios grupos match_all en una misma canalización.

Número mínimo de criterios

Se requiere al menos una expresión en el grupo match_all.

Número máximo de criterios

Un grupo match_all puede contener un máximo de 20 expresiones.

Semántica AND

Para que una métrica entre en la canalización, deben coincidir todas las expresiones del grupo match_all.

Coincidencia exacta de cadenas

Los valores deben ser cadenas estáticas. No se admiten caracteres comodín, expresiones regulares ni coincidencias parciales. Cada expresión debe utilizar el operador ==.

Los criterios de las canalizaciones no se pueden superponer

Cada punto de datos de una métrica debe coincidir como máximo con una canalización. Si un punto de datos coincide con los criterios de canalización nuevos y existentes, se produce un error en la creación de la canalización. Para evitar superposiciones, incluya al menos una ruta de atributo con valores distintos en los criterios de selección de cada canalización.

Por ejemplo, los dos criterios de selección siguientes se superponen porque la canalización A selecciona todas las métricas de payment-service, lo que incluye la métrica específica a la que se dirige la canalización B:

# Pipeline A — selects ALL metrics from payment-service selection_criteria: - match_all: - 'resource.attributes["service.name"] == "payment-service"' # Pipeline B — FAILS: a datapoint with service.name="payment-service" # and metric.name="http.server.request.duration" matches both pipelines selection_criteria: - match_all: - 'metric.name == "http.server.request.duration"'