CloudWatch Metrics (OTel)
Os critérios de seleção determinam quais métricas do OTel entram em um pipeline para processamento. Cada critério é uma expressão do formato <path> == "<value>" que corresponde a um atributo específico da métrica de entrada. Ao menos um critério de seleção é necessário.
Os critérios são agrupados dentro de um bloco match_all com semântica AND — uma métrica deve corresponder a todas as expressões do grupo para entrar no pipeline.
Caminhos compatíveis
Os seguintes caminhos OTTL são compatíveis nos critérios de seleção:
| Caminho | Descrição |
|---|---|
|
Atributo no nível do recurso |
|
Nome do escopo da instrumentação |
|
Versão do escopo da instrumentação |
|
Atributo do escopo da instrumentação |
|
Nome da métrica |
|
Atributo no nível do ponto de dados |
|
Forma abreviada para o |
Configuração
Os critérios de seleção são definidos na seção source da configuração do pipeline:
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: {}
O exemplo mostrado a seguir utiliza todos os tipos de caminho compatíveis:
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: {}
Verificação com o PromQL
O CloudWatch mapeia escopos de atributos OTLP para rótulos PromQL usando a convenção de prefixo @. Utilize esse mapeamento para verificar se seu pipeline está processando métricas conforme o esperado no Query Studio:
| Caminho OTTL do pipeline | Prefixo do rótulo do PromQL | Exemplo |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Por exemplo, se seu pipeline adiciona resource.attributes["team"] com valor "platform-engineering", você pode confirmar se ele foi aplicado:
{"CPUUtilization", "@resource.team"="platform-engineering"}
Requisitos e limitações
- Grupo
match_allúnico -
Cada pipeline suporta exatamente um grupo
match_allemselection_criteria. Você não pode definir vários gruposmatch_allem um único pipeline. - Critérios mínimos
-
Pelo menos uma expressão é necessária no grupo
match_all. - Critérios máximos
-
Um grupo
match_allpode conter no máximo 20 expressões. - Semântica AND
-
Todas as expressões no grupo
match_alldevem corresponder para que uma métrica entre no pipeline. - Correspondência exata de strings
-
Os valores devem ser strings estáticas. Curingas, expressões regulares e correspondências parciais não são compatíveis. Cada expressão deve utilizar o operador
==. - Sem critérios de sobreposição entre pipelines
-
Cada ponto de dados de métrica deve corresponder a no máximo um pipeline. Se um ponto de dados corresponder aos critérios novos e existentes do pipeline, a criação do pipeline falhará. Para evitar sobreposições, inclua pelo menos um caminho de atributo com valores distintos nos critérios de seleção de cada pipeline.
Por exemplo, os dois critérios de seleção mostrados a seguir se sobrepõem porque o Pipeline A seleciona todas as métricas de
payment-service, o que inclui a métrica específica que o Pipeline B visa:# 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"'