diff --git a/go.mod b/go.mod index 5d52962fa3..dfa6be663e 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ replace github.com/influxdata/telegraf => github.com/aws/telegraf v0.10.2-0.2024 // to be all replaced since there are some changes that will always be from upstream replace ( github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter v0.0.0-20241024160840-0c7076070f12 - github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsemfexporter v0.0.0-20241024160840-0c7076070f12 + github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsemfexporter v0.0.0-20241024185216-f0b80d5c67a5 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsxrayexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.0.0-20241024160840-0c7076070f12 ) diff --git a/go.sum b/go.sum index 161054897d..8c76ad0d3d 100644 --- a/go.sum +++ b/go.sum @@ -182,8 +182,8 @@ github.com/aliyun/alibaba-cloud-sdk-go v1.61.1483 h1:J8HaD+Zpfi1gcel3HCKpoHHEsrc github.com/aliyun/alibaba-cloud-sdk-go v1.61.1483/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU= github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter v0.0.0-20241024160840-0c7076070f12 h1:+USPP+QlDqsDjsMG1RO2lc1UURGCXwejqC1Z/HAkVQ4= github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter v0.0.0-20241024160840-0c7076070f12/go.mod h1:f9JwM/LQdKH8ZbYoH9TO35rmjM6WoTNlhWtYJ3YZucc= -github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsemfexporter v0.0.0-20241024160840-0c7076070f12 h1:cpHiYI44KTf2Zd9vTEJ8CA8DTeETkEbf+jDCM+UyuAM= -github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsemfexporter v0.0.0-20241024160840-0c7076070f12/go.mod h1:LPWBVdTSNbZkk80v6aCUthS59cnR4VauVRdAIE3ifaY= +github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsemfexporter v0.0.0-20241024185216-f0b80d5c67a5 h1:JOp9f4a1pP1zb5U+JPTezTdTZ1LCkcJSTcCd/AAqknM= +github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsemfexporter v0.0.0-20241024185216-f0b80d5c67a5/go.mod h1:LPWBVdTSNbZkk80v6aCUthS59cnR4VauVRdAIE3ifaY= github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.0.0-20241024160840-0c7076070f12 h1:9E5WNd4oR52CDE74trrIA6/hlG+FRUoo3NdtdKsnprw= github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.0.0-20241024160840-0c7076070f12/go.mod h1:GNeNylfr5KMt55XowzSdgbP7z8CkIAfIHtWSd+xxtws= github.com/amazon-contributing/opentelemetry-collector-contrib/extension/awsmiddleware v0.0.0-20241024160840-0c7076070f12 h1:4T8EO8AhjBwFK3hcocbAqOZEK5YU/6hmDYsVLlDTBEo= diff --git a/translator/tocwconfig/sampleConfig/appsignals_and_ecs_config.yaml b/translator/tocwconfig/sampleConfig/appsignals_and_ecs_config.yaml index aee08171cc..a97027c87f 100644 --- a/translator/tocwconfig/sampleConfig/appsignals_and_ecs_config.yaml +++ b/translator/tocwconfig/sampleConfig/appsignals_and_ecs_config.yaml @@ -73,6 +73,16 @@ exporters: - Latency - Fault - Error + - dimensions: + - - Environment + - Service + label_matchers: + - label_names: + - Telemetry.Source + regex: ^RuntimeMetric$ + separator: ; + metric_name_selectors: + - ^.*$ middleware: agenthealth/logs namespace: ApplicationSignals no_verify_ssl: false @@ -443,6 +453,582 @@ processors: reload_interval: 0s server_name_override: '' write_buffer_size: 0 + metricstransform/application_signals: + transforms: + - include: jvm.cpu.recent_utilization + action: update + new_name: JVMCpuRecentUtilization + aggregation_type: '' + submatch_case: '' + match_type: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.cpu.time + action: update + new_name: JVMCpuTime + aggregation_type: '' + submatch_case: '' + match_type: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.classes.loaded + action: update + new_name: JVMClassLoaded + aggregation_type: '' + submatch_case: '' + match_type: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.threads.count + action: update + new_name: JVMThreadCount + aggregation_type: '' + submatch_case: '' + match_type: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.memory.nonheap.used + action: update + new_name: JVMMemoryNonHeapUsed + aggregation_type: '' + submatch_case: '' + match_type: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.memory.pool.used_after_last_gc + action: update + new_name: JVMMemoryUsedAfterLastGC + aggregation_type: '' + submatch_case: '' + match_type: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.memory.heap.used + action: update + new_name: JVMMemoryHeapUsed + aggregation_type: '' + submatch_case: '' + match_type: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryOldGenUsed + match_type: regexp + experimental_match_labels: + name: .*Old\\sGen$ + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemorySurvivorSpaceUsed + match_type: regexp + experimental_match_labels: + name: .*Survivor\\sSpace$ + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryEdenSpaceUsed + match_type: regexp + experimental_match_labels: + name: .*Eden\\sSpace$ + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCDuration + match_type: '' + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCCount + match_type: '' + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCOldGenDuration + match_type: strict + experimental_match_labels: + name: G1 Old Generation + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCYoungGenDuration + match_type: strict + experimental_match_labels: + name: G1 Young Generation + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCOldGenCount + match_type: strict + experimental_match_labels: + name: G1 Old Generation + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCYoungGenCount + match_type: strict + experimental_match_labels: + name: G1 Young Generation + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCCount + match_type: regexp + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen0Count + match_type: regexp + experimental_match_labels: + count: '0' + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen1Count + match_type: regexp + experimental_match_labels: + count: '1' + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen2Count + match_type: regexp + experimental_match_labels: + count: '2' + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: ^process\.runtime\.(.*)\.thread_count$$ + action: update + new_name: PythonProcessThreadCount + match_type: regexp + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: ^process\.runtime\.(.*)\.cpu_time$$ + action: update + new_name: PythonProcessCpuTime + match_type: regexp + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: ^process\.runtime\.(.*)\.cpu\.utilization$$ + action: update + new_name: PythonProcessCpuUtilization + match_type: regexp + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessVMSMemoryUsed + experimental_match_labels: + type: vms + match_type: regexp + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessRSSMemoryUsed + experimental_match_labels: + type: rss + match_type: regexp + aggregation_type: '' + submatch_case: '' + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: '' + new_label: '' + label_value: '' + new_value: '' + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: '' + experimental_scale: 0 + label: '' + label_value: '' receivers: otlp/application_signals: protocols: @@ -493,6 +1079,7 @@ service: exporters: - awsemf/application_signals processors: + - metricstransform/application_signals - resourcedetection - awsapplicationsignals receivers: diff --git a/translator/tocwconfig/sampleConfig/appsignals_and_eks_config.yaml b/translator/tocwconfig/sampleConfig/appsignals_and_eks_config.yaml index 06d6e36b8d..1d71ffb03b 100644 --- a/translator/tocwconfig/sampleConfig/appsignals_and_eks_config.yaml +++ b/translator/tocwconfig/sampleConfig/appsignals_and_eks_config.yaml @@ -103,6 +103,15 @@ exporters: - Latency - Fault - Error + - dimensions: + - [ Environment, Service ] + label_matchers: + - label_names: + - Telemetry.Source + regex: '^RuntimeMetric$' + separator: ; + metric_name_selectors: + - '^.*$' middleware: agenthealth/logs namespace: ApplicationSignals no_verify_ssl: false @@ -602,6 +611,570 @@ processors: reload_interval: 0s server_name_override: "" write_buffer_size: 0 + metricstransform/application_signals: + transforms: + - include: jvm.cpu.recent_utilization + action: update + new_name: JVMCpuRecentUtilization + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.cpu.time + action: update + new_name: JVMCpuTime + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.classes.loaded + action: update + new_name: JVMClassLoaded + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.threads.count + action: update + new_name: JVMThreadCount + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.nonheap.used + action: update + new_name: JVMMemoryNonHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used_after_last_gc + action: update + new_name: JVMMemoryUsedAfterLastGC + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.heap.used + action: update + new_name: JVMMemoryHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryOldGenUsed + match_type: regexp + experimental_match_labels: {"name": '.*Old\\sGen$'} + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemorySurvivorSpaceUsed + match_type: regexp + experimental_match_labels: {"name": '.*Survivor\\sSpace$'} + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryEdenSpaceUsed + match_type: regexp + experimental_match_labels: {"name": '.*Eden\\sSpace$'} + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCDuration + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCCount + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCOldGenDuration + match_type: strict + experimental_match_labels: {"name": "G1 Old Generation"} + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCYoungGenDuration + match_type: strict + experimental_match_labels: {"name": "G1 Young Generation"} + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCOldGenCount + match_type: strict + experimental_match_labels: {"name": "G1 Old Generation"} + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCYoungGenCount + match_type: strict + experimental_match_labels: {"name": "G1 Young Generation"} + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen0Count + match_type: regexp + experimental_match_labels: { "count": "0" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen1Count + match_type: regexp + experimental_match_labels: { "count": "1" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen2Count + match_type: regexp + experimental_match_labels: { "count": "2" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.thread_count$$ + action: update + new_name: PythonProcessThreadCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu_time$$ + action: update + new_name: PythonProcessCpuTime + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu\.utilization$$ + action: update + new_name: PythonProcessCpuUtilization + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessVMSMemoryUsed + experimental_match_labels: {"type": "vms"} + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessRSSMemoryUsed + experimental_match_labels: {"type": "rss"} + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" receivers: awscontainerinsightreceiver: accelerated_compute_metrics: false @@ -682,6 +1255,7 @@ service: exporters: - awsemf/application_signals processors: + - metricstransform/application_signals - awsentity/service/application_signals - resourcedetection - awsapplicationsignals diff --git a/translator/tocwconfig/sampleConfig/appsignals_and_k8s_config.yaml b/translator/tocwconfig/sampleConfig/appsignals_and_k8s_config.yaml index 6bf6b6a7d9..5b099d0315 100644 --- a/translator/tocwconfig/sampleConfig/appsignals_and_k8s_config.yaml +++ b/translator/tocwconfig/sampleConfig/appsignals_and_k8s_config.yaml @@ -103,6 +103,15 @@ exporters: - Latency - Fault - Error + - dimensions: + - [ Environment, Service ] + label_matchers: + - label_names: + - Telemetry.Source + regex: '^RuntimeMetric$' + separator: ; + metric_name_selectors: + - '^.*$' middleware: agenthealth/logs namespace: ApplicationSignals no_verify_ssl: false @@ -603,6 +612,570 @@ processors: reload_interval: 0s server_name_override: "" write_buffer_size: 0 + metricstransform/application_signals: + transforms: + - include: jvm.cpu.recent_utilization + action: update + new_name: JVMCpuRecentUtilization + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.cpu.time + action: update + new_name: JVMCpuTime + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.classes.loaded + action: update + new_name: JVMClassLoaded + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.threads.count + action: update + new_name: JVMThreadCount + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.nonheap.used + action: update + new_name: JVMMemoryNonHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used_after_last_gc + action: update + new_name: JVMMemoryUsedAfterLastGC + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.heap.used + action: update + new_name: JVMMemoryHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryOldGenUsed + match_type: regexp + experimental_match_labels: { "name": '.*Old\\sGen$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemorySurvivorSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Survivor\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryEdenSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Eden\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCDuration + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCCount + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCOldGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCYoungGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCOldGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCYoungGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen0Count + match_type: regexp + experimental_match_labels: { "count": "0" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen1Count + match_type: regexp + experimental_match_labels: { "count": "1" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen2Count + match_type: regexp + experimental_match_labels: { "count": "2" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.thread_count$$ + action: update + new_name: PythonProcessThreadCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu_time$$ + action: update + new_name: PythonProcessCpuTime + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu\.utilization$$ + action: update + new_name: PythonProcessCpuUtilization + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessVMSMemoryUsed + experimental_match_labels: { "type": "vms" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessRSSMemoryUsed + experimental_match_labels: { "type": "rss" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" receivers: awscontainerinsightreceiver: accelerated_compute_metrics: false @@ -663,6 +1236,7 @@ service: exporters: - awsemf/application_signals processors: + - metricstransform/application_signals - awsentity/service/application_signals - resourcedetection - awsapplicationsignals diff --git a/translator/tocwconfig/sampleConfig/appsignals_fallback_and_eks_config.yaml b/translator/tocwconfig/sampleConfig/appsignals_fallback_and_eks_config.yaml index ed0f4d5b50..bfcea74610 100644 --- a/translator/tocwconfig/sampleConfig/appsignals_fallback_and_eks_config.yaml +++ b/translator/tocwconfig/sampleConfig/appsignals_fallback_and_eks_config.yaml @@ -103,6 +103,15 @@ exporters: - Latency - Fault - Error + - dimensions: + - [ Environment, Service ] + label_matchers: + - label_names: + - Telemetry.Source + regex: '^RuntimeMetric$' + separator: ; + metric_name_selectors: + - '^.*$' middleware: agenthealth/logs namespace: ApplicationSignals no_verify_ssl: false @@ -602,6 +611,570 @@ processors: reload_interval: "0s" server_name_override: "" write_buffer_size: 0 + metricstransform/application_signals: + transforms: + - include: jvm.cpu.recent_utilization + action: update + new_name: JVMCpuRecentUtilization + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.cpu.time + action: update + new_name: JVMCpuTime + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.classes.loaded + action: update + new_name: JVMClassLoaded + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.threads.count + action: update + new_name: JVMThreadCount + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.nonheap.used + action: update + new_name: JVMMemoryNonHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used_after_last_gc + action: update + new_name: JVMMemoryUsedAfterLastGC + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.heap.used + action: update + new_name: JVMMemoryHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryOldGenUsed + match_type: regexp + experimental_match_labels: { "name": '.*Old\\sGen$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemorySurvivorSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Survivor\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryEdenSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Eden\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCDuration + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCCount + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCOldGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCYoungGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCOldGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCYoungGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen0Count + match_type: regexp + experimental_match_labels: { "count": "0" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen1Count + match_type: regexp + experimental_match_labels: { "count": "1" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen2Count + match_type: regexp + experimental_match_labels: { "count": "2" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.thread_count$$ + action: update + new_name: PythonProcessThreadCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu_time$$ + action: update + new_name: PythonProcessCpuTime + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu\.utilization$$ + action: update + new_name: PythonProcessCpuUtilization + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessVMSMemoryUsed + experimental_match_labels: { "type": "vms" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessRSSMemoryUsed + experimental_match_labels: { "type": "rss" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" receivers: awscontainerinsightreceiver: accelerated_compute_metrics: false @@ -682,6 +1255,7 @@ service: exporters: - awsemf/application_signals processors: + - metricstransform/application_signals - awsentity/service/application_signals - resourcedetection - awsapplicationsignals diff --git a/translator/tocwconfig/sampleConfig/appsignals_over_fallback_config.yaml b/translator/tocwconfig/sampleConfig/appsignals_over_fallback_config.yaml index f2e00bc52b..454a1bfa23 100644 --- a/translator/tocwconfig/sampleConfig/appsignals_over_fallback_config.yaml +++ b/translator/tocwconfig/sampleConfig/appsignals_over_fallback_config.yaml @@ -103,6 +103,15 @@ exporters: - Latency - Fault - Error + - dimensions: + - [ Environment, Service ] + label_matchers: + - label_names: + - Telemetry.Source + regex: '^RuntimeMetric$' + separator: ; + metric_name_selectors: + - '^.*$' middleware: agenthealth/logs namespace: ApplicationSignals no_verify_ssl: false @@ -602,6 +611,570 @@ processors: reload_interval: "0s" server_name_override: "" write_buffer_size: 0 + metricstransform/application_signals: + transforms: + - include: jvm.cpu.recent_utilization + action: update + new_name: JVMCpuRecentUtilization + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.cpu.time + action: update + new_name: JVMCpuTime + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.classes.loaded + action: update + new_name: JVMClassLoaded + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.threads.count + action: update + new_name: JVMThreadCount + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.nonheap.used + action: update + new_name: JVMMemoryNonHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used_after_last_gc + action: update + new_name: JVMMemoryUsedAfterLastGC + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.heap.used + action: update + new_name: JVMMemoryHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryOldGenUsed + match_type: regexp + experimental_match_labels: { "name": '.*Old\\sGen$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemorySurvivorSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Survivor\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryEdenSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Eden\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCDuration + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCCount + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCOldGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCYoungGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCOldGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCYoungGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen0Count + match_type: regexp + experimental_match_labels: { "count": "0" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen1Count + match_type: regexp + experimental_match_labels: { "count": "1" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen2Count + match_type: regexp + experimental_match_labels: { "count": "2" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.thread_count$$ + action: update + new_name: PythonProcessThreadCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu_time$$ + action: update + new_name: PythonProcessCpuTime + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu\.utilization$$ + action: update + new_name: PythonProcessCpuUtilization + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessVMSMemoryUsed + experimental_match_labels: { "type": "vms" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessRSSMemoryUsed + experimental_match_labels: { "type": "rss" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" receivers: awscontainerinsightreceiver: accelerated_compute_metrics: false @@ -682,6 +1255,7 @@ service: exporters: - awsemf/application_signals processors: + - metricstransform/application_signals - awsentity/service/application_signals - resourcedetection - awsapplicationsignals diff --git a/translator/tocwconfig/sampleConfig/base_appsignals_config.yaml b/translator/tocwconfig/sampleConfig/base_appsignals_config.yaml index de5fd41888..24afc038e6 100644 --- a/translator/tocwconfig/sampleConfig/base_appsignals_config.yaml +++ b/translator/tocwconfig/sampleConfig/base_appsignals_config.yaml @@ -73,6 +73,15 @@ exporters: - Latency - Fault - Error + - dimensions: + - [ Environment, Service ] + label_matchers: + - label_names: + - Telemetry.Source + regex: '^RuntimeMetric$' + separator: ; + metric_name_selectors: + - '^.*$' middleware: agenthealth/logs namespace: ApplicationSignals no_verify_ssl: false @@ -453,6 +462,570 @@ processors: reload_interval: 0s server_name_override: "" write_buffer_size: 0 + metricstransform/application_signals: + transforms: + - include: jvm.cpu.recent_utilization + action: update + new_name: JVMCpuRecentUtilization + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.cpu.time + action: update + new_name: JVMCpuTime + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.classes.loaded + action: update + new_name: JVMClassLoaded + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.threads.count + action: update + new_name: JVMThreadCount + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.nonheap.used + action: update + new_name: JVMMemoryNonHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used_after_last_gc + action: update + new_name: JVMMemoryUsedAfterLastGC + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.heap.used + action: update + new_name: JVMMemoryHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryOldGenUsed + match_type: regexp + experimental_match_labels: { "name": '.*Old\\sGen$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemorySurvivorSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Survivor\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryEdenSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Eden\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCDuration + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCCount + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCOldGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCYoungGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCOldGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCYoungGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen0Count + match_type: regexp + experimental_match_labels: { "count": "0" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen1Count + match_type: regexp + experimental_match_labels: { "count": "1" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen2Count + match_type: regexp + experimental_match_labels: { "count": "2" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.thread_count$$ + action: update + new_name: PythonProcessThreadCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu_time$$ + action: update + new_name: PythonProcessCpuTime + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu\.utilization$$ + action: update + new_name: PythonProcessCpuUtilization + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessVMSMemoryUsed + experimental_match_labels: { "type": "vms" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessRSSMemoryUsed + experimental_match_labels: { "type": "rss" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" receivers: otlp/application_signals: protocols: @@ -485,6 +1058,7 @@ service: - debug/application_signals - awsemf/application_signals processors: + - metricstransform/application_signals - resourcedetection - awsapplicationsignals receivers: diff --git a/translator/tocwconfig/sampleConfig/base_appsignals_fallback_config.yaml b/translator/tocwconfig/sampleConfig/base_appsignals_fallback_config.yaml index 9e4eca0b38..9791f903dd 100644 --- a/translator/tocwconfig/sampleConfig/base_appsignals_fallback_config.yaml +++ b/translator/tocwconfig/sampleConfig/base_appsignals_fallback_config.yaml @@ -73,6 +73,15 @@ exporters: - Latency - Fault - Error + - dimensions: + - [ Environment, Service ] + label_matchers: + - label_names: + - Telemetry.Source + regex: '^RuntimeMetric$' + separator: ; + metric_name_selectors: + - '^.*$' middleware: agenthealth/logs namespace: ApplicationSignals no_verify_ssl: false @@ -449,6 +458,570 @@ processors: reload_interval: "0s" server_name_override: "" write_buffer_size: 0 + metricstransform/application_signals: + transforms: + - include: jvm.cpu.recent_utilization + action: update + new_name: JVMCpuRecentUtilization + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.cpu.time + action: update + new_name: JVMCpuTime + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.classes.loaded + action: update + new_name: JVMClassLoaded + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.threads.count + action: update + new_name: JVMThreadCount + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.nonheap.used + action: update + new_name: JVMMemoryNonHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used_after_last_gc + action: update + new_name: JVMMemoryUsedAfterLastGC + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.heap.used + action: update + new_name: JVMMemoryHeapUsed + aggregation_type: "" + submatch_case: "" + match_type: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryOldGenUsed + match_type: regexp + experimental_match_labels: { "name": '.*Old\\sGen$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemorySurvivorSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Survivor\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryEdenSpaceUsed + match_type: regexp + experimental_match_labels: { "name": '.*Eden\\sSpace$' } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCDuration + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCCount + match_type: "" + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCOldGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCYoungGenDuration + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCOldGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Old Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCYoungGenCount + match_type: strict + experimental_match_labels: { "name": "G1 Young Generation" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen0Count + match_type: regexp + experimental_match_labels: { "count": "0" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen1Count + match_type: regexp + experimental_match_labels: { "count": "1" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen2Count + match_type: regexp + experimental_match_labels: { "count": "2" } + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.thread_count$$ + action: update + new_name: PythonProcessThreadCount + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu_time$$ + action: update + new_name: PythonProcessCpuTime + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.cpu\.utilization$$ + action: update + new_name: PythonProcessCpuUtilization + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessVMSMemoryUsed + experimental_match_labels: { "type": "vms" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessRSSMemoryUsed + experimental_match_labels: { "type": "rss" } + match_type: regexp + aggregation_type: "" + submatch_case: "" + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + experimental_scale: 0 + label: "" + new_label: "" + label_value: "" + new_value: "" + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + aggregation_type: "" + experimental_scale: 0 + label: "" + label_value: "" receivers: otlp/application_signals: protocols: @@ -480,6 +1053,7 @@ service: exporters: - awsemf/application_signals processors: + - metricstransform/application_signals - resourcedetection - awsapplicationsignals receivers: diff --git a/translator/translate/otel/exporter/awsemf/appsignals_config_eks.yaml b/translator/translate/otel/exporter/awsemf/appsignals_config_eks.yaml index 036c519717..6f24364bba 100644 --- a/translator/translate/otel/exporter/awsemf/appsignals_config_eks.yaml +++ b/translator/translate/otel/exporter/awsemf/appsignals_config_eks.yaml @@ -35,4 +35,12 @@ metric_declarations: metric_name_selectors: - Latency - Fault - - Error \ No newline at end of file + - Error + - dimensions: + - [Environment, Service] + label_matchers: + - label_names: + - Telemetry.Source + regex: '^RuntimeMetric$' + metric_name_selectors: + - '^.*$' \ No newline at end of file diff --git a/translator/translate/otel/exporter/awsemf/appsignals_config_generic.yaml b/translator/translate/otel/exporter/awsemf/appsignals_config_generic.yaml index 735f6df7da..57d10c5c6b 100644 --- a/translator/translate/otel/exporter/awsemf/appsignals_config_generic.yaml +++ b/translator/translate/otel/exporter/awsemf/appsignals_config_generic.yaml @@ -30,4 +30,12 @@ metric_declarations: metric_name_selectors: - Latency - Fault - - Error \ No newline at end of file + - Error + - dimensions: + - [Environment, Service] + label_matchers: + - label_names: + - Telemetry.Source + regex: '^RuntimeMetric$' + metric_name_selectors: + - '^.*$' \ No newline at end of file diff --git a/translator/translate/otel/exporter/awsemf/appsignals_config_k8s.yaml b/translator/translate/otel/exporter/awsemf/appsignals_config_k8s.yaml index ce85e50f78..05ea848fff 100644 --- a/translator/translate/otel/exporter/awsemf/appsignals_config_k8s.yaml +++ b/translator/translate/otel/exporter/awsemf/appsignals_config_k8s.yaml @@ -35,4 +35,12 @@ metric_declarations: metric_name_selectors: - Latency - Fault - - Error \ No newline at end of file + - Error + - dimensions: + - [Environment, Service] + label_matchers: + - label_names: + - Telemetry.Source + regex: '^RuntimeMetric$' + metric_name_selectors: + - '^.*$' \ No newline at end of file diff --git a/translator/translate/otel/pipeline/applicationsignals/translator.go b/translator/translate/otel/pipeline/applicationsignals/translator.go index bc20a570c8..9540c9844e 100644 --- a/translator/translate/otel/pipeline/applicationsignals/translator.go +++ b/translator/translate/otel/pipeline/applicationsignals/translator.go @@ -18,6 +18,7 @@ import ( "github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/extension/awsproxy" "github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/processor/awsapplicationsignals" "github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/processor/awsentity" + "github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/processor/metricstransformprocessor" "github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/processor/resourcedetection" "github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/receiver/otlp" ) @@ -54,6 +55,10 @@ func (t *translator) Translate(conf *confmap.Conf) (*common.ComponentTranslators Extensions: common.NewTranslatorMap[component.Config](), } + if t.dataType == component.DataTypeMetrics { + translators.Processors.Set(metricstransformprocessor.NewTranslatorWithName(common.AppSignals)) + } + mode := context.CurrentContext().KubernetesMode() if t.dataType == component.DataTypeMetrics && mode != "" { translators.Processors.Set(awsentity.NewTranslatorWithEntityType(awsentity.Service, common.AppSignals, false)) diff --git a/translator/translate/otel/pipeline/applicationsignals/translator_test.go b/translator/translate/otel/pipeline/applicationsignals/translator_test.go index 9572dfd1d2..23119032eb 100644 --- a/translator/translate/otel/pipeline/applicationsignals/translator_test.go +++ b/translator/translate/otel/pipeline/applicationsignals/translator_test.go @@ -126,7 +126,7 @@ func TestTranslatorMetricsForKubernetes(t *testing.T) { }, want: &want{ receivers: []string{"otlp/application_signals"}, - processors: []string{"awsentity/service/application_signals", "resourcedetection", "awsapplicationsignals"}, + processors: []string{"metricstransform/application_signals", "awsentity/service/application_signals", "resourcedetection", "awsapplicationsignals"}, exporters: []string{"awsemf/application_signals"}, extensions: []string{"agenthealth/logs"}, }, @@ -147,7 +147,7 @@ func TestTranslatorMetricsForKubernetes(t *testing.T) { }, want: &want{ receivers: []string{"otlp/application_signals"}, - processors: []string{"awsentity/service/application_signals", "resourcedetection", "awsapplicationsignals"}, + processors: []string{"metricstransform/application_signals", "awsentity/service/application_signals", "resourcedetection", "awsapplicationsignals"}, exporters: []string{"debug/application_signals", "awsemf/application_signals"}, extensions: []string{"agenthealth/logs"}, }, @@ -165,7 +165,7 @@ func TestTranslatorMetricsForKubernetes(t *testing.T) { }, want: &want{ receivers: []string{"otlp/application_signals"}, - processors: []string{"awsentity/service/application_signals", "resourcedetection", "awsapplicationsignals"}, + processors: []string{"metricstransform/application_signals", "awsentity/service/application_signals", "resourcedetection", "awsapplicationsignals"}, exporters: []string{"awsemf/application_signals"}, extensions: []string{"agenthealth/logs"}, }, @@ -225,7 +225,7 @@ func TestTranslatorMetricsForEC2(t *testing.T) { }, want: &want{ receivers: []string{"otlp/application_signals"}, - processors: []string{"resourcedetection", "awsapplicationsignals"}, + processors: []string{"metricstransform/application_signals", "resourcedetection", "awsapplicationsignals"}, exporters: []string{"awsemf/application_signals"}, extensions: []string{"agenthealth/logs"}, }, @@ -245,7 +245,7 @@ func TestTranslatorMetricsForEC2(t *testing.T) { }, want: &want{ receivers: []string{"otlp/application_signals"}, - processors: []string{"resourcedetection", "awsapplicationsignals"}, + processors: []string{"metricstransform/application_signals", "resourcedetection", "awsapplicationsignals"}, exporters: []string{"debug/application_signals", "awsemf/application_signals"}, extensions: []string{"agenthealth/logs"}, }, diff --git a/translator/translate/otel/processor/metricstransformprocessor/appsignals_runtime_config.yaml b/translator/translate/otel/processor/metricstransformprocessor/appsignals_runtime_config.yaml new file mode 100644 index 0000000000..80812fdcf3 --- /dev/null +++ b/translator/translate/otel/processor/metricstransformprocessor/appsignals_runtime_config.yaml @@ -0,0 +1,279 @@ +transforms: + - include: jvm.cpu.recent_utilization + action: update + new_name: JVMCpuRecentUtilization + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.cpu.time + action: update + new_name: JVMCpuTime + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.classes.loaded + action: update + new_name: JVMClassLoaded + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.threads.count + action: update + new_name: JVMThreadCount + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.memory.nonheap.used + action: update + new_name: JVMMemoryNonHeapUsed + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.memory.pool.used_after_last_gc + action: update + new_name: JVMMemoryUsedAfterLastGC + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.memory.heap.used + action: update + new_name: JVMMemoryHeapUsed + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryOldGenUsed + match_type: regexp + experimental_match_labels: {"name": ".*Old\\sGen$"} + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemorySurvivorSpaceUsed + match_type: regexp + experimental_match_labels: {"name": ".*Survivor\\sSpace$"} + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.memory.pool.used + action: insert + new_name: JVMMemoryEdenSpaceUsed + match_type: regexp + experimental_match_labels: {"name": ".*Eden\\sSpace$"} + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCDuration + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCCount + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCOldGenDuration + match_type: strict + experimental_match_labels: {"name": "G1 Old Generation"} + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.gc.collections.elapsed + action: insert + new_name: JVMGCYoungGenDuration + match_type: strict + experimental_match_labels: {"name": "G1 Young Generation"} + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCOldGenCount + match_type: strict + experimental_match_labels: {"name": "G1 Old Generation"} + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: jvm.gc.collections.count + action: insert + new_name: JVMGCYoungGenCount + match_type: strict + experimental_match_labels: {"name": "G1 Young Generation"} + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCCount + match_type: regexp + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen0Count + match_type: regexp + experimental_match_labels: { "count": "0" } + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen1Count + match_type: regexp + experimental_match_labels: { "count": "1" } + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: ^process\.runtime\.(.*)\.gc_count$$ + action: insert + new_name: PythonProcessGCGen2Count + match_type: regexp + experimental_match_labels: { "count": "2" } + operations: + - action: aggregate_labels + label_set: [ ] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: ^process\.runtime\.(.*)\.thread_count$$ + action: update + new_name: PythonProcessThreadCount + match_type: regexp + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: ^process\.runtime\.(.*)\.cpu_time$$ + action: update + new_name: PythonProcessCpuTime + match_type: regexp + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: ^process\.runtime\.(.*)\.cpu\.utilization$$ + action: update + new_name: PythonProcessCpuUtilization + match_type: regexp + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessVMSMemoryUsed + match_type: regexp + experimental_match_labels: {"type": "vms"} + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric + - include: ^process\.runtime\.(.*)\.memory$$ + action: insert + new_name: PythonProcessRSSMemoryUsed + match_type: regexp + experimental_match_labels: {"type": "rss"} + operations: + - action: aggregate_labels + label_set: [] + aggregation_type: sum + - action: add_label + new_label: Telemetry.Source + new_value: RuntimeMetric diff --git a/translator/translate/otel/processor/metricstransformprocessor/testdata/appsignals_config.json b/translator/translate/otel/processor/metricstransformprocessor/testdata/appsignals_config.json new file mode 100644 index 0000000000..043304b4e5 --- /dev/null +++ b/translator/translate/otel/processor/metricstransformprocessor/testdata/appsignals_config.json @@ -0,0 +1,17 @@ +{ + "agent": { + "region": "us-west-2" + }, + "traces": { + "traces_collected": { + "app_signals": {} + } + }, + "logs": { + "metrics_collected": { + "app_signals": { + "hosted_in": "test" + } + } + } +} \ No newline at end of file diff --git a/translator/translate/otel/processor/metricstransformprocessor/testdata/config.json b/translator/translate/otel/processor/metricstransformprocessor/testdata/jmx_config.json similarity index 100% rename from translator/translate/otel/processor/metricstransformprocessor/testdata/config.json rename to translator/translate/otel/processor/metricstransformprocessor/testdata/jmx_config.json diff --git a/translator/translate/otel/processor/metricstransformprocessor/translator.go b/translator/translate/otel/processor/metricstransformprocessor/translator.go index c9a2527b89..e05e64c673 100644 --- a/translator/translate/otel/processor/metricstransformprocessor/translator.go +++ b/translator/translate/otel/processor/metricstransformprocessor/translator.go @@ -20,6 +20,9 @@ import ( //go:embed metricstransform_jmx_config.yaml var metricTransformJmxConfig string +//go:embed appsignals_runtime_config.yaml +var appSignalsRuntimeConfig string + var metricDuplicateTypes = []string{ containerinsightscommon.TypeGpuContainer, containerinsightscommon.TypeGpuPod, @@ -70,6 +73,8 @@ func (t *translator) Translate(conf *confmap.Conf) (component.Config, error) { cfg := t.factory.CreateDefaultConfig().(*metricstransformprocessor.Config) if t.name == common.PipelineNameContainerInsightsJmx { return common.GetYamlFileToYamlConfig(cfg, metricTransformJmxConfig) + } else if t.name == common.AppSignals { + return common.GetYamlFileToYamlConfig(cfg, appSignalsRuntimeConfig) } var transformRules []map[string]interface{} diff --git a/translator/translate/otel/processor/metricstransformprocessor/translator_test.go b/translator/translate/otel/processor/metricstransformprocessor/translator_test.go index 6c1087dbd0..6dea9b36b1 100644 --- a/translator/translate/otel/processor/metricstransformprocessor/translator_test.go +++ b/translator/translate/otel/processor/metricstransformprocessor/translator_test.go @@ -118,7 +118,7 @@ func TestContainerInsightsJmx(t *testing.T) { c := testutil.GetConf(t, "metricstransform_jmx_config.yaml") require.NoError(t, c.Unmarshal(&expectedCfg)) - conf := confmap.NewFromStringMap(testutil.GetJson(t, filepath.Join("testdata", "config.json"))) + conf := confmap.NewFromStringMap(testutil.GetJson(t, filepath.Join("testdata", "jmx_config.json"))) translatedCfg, err := transl.Translate(conf) assert.NoError(t, err) actualCfg, ok := translatedCfg.(*metricstransformprocessor.Config) @@ -126,3 +126,17 @@ func TestContainerInsightsJmx(t *testing.T) { assert.Equal(t, len(expectedCfg.Transforms), len(actualCfg.Transforms)) } + +func TestAppSignalsRuntime(t *testing.T) { + transl := NewTranslatorWithName(common.AppSignals).(*translator) + expectedCfg := transl.factory.CreateDefaultConfig().(*metricstransformprocessor.Config) + c := testutil.GetConf(t, "appsignals_runtime_config.yaml") + require.NoError(t, c.Unmarshal(&expectedCfg)) + + conf := confmap.NewFromStringMap(testutil.GetJson(t, filepath.Join("testdata", "appsignals_config.json"))) + translatedCfg, err := transl.Translate(conf) + assert.NoError(t, err) + actualCfg, ok := translatedCfg.(*metricstransformprocessor.Config) + assert.True(t, ok) + assert.Equal(t, len(expectedCfg.Transforms), len(actualCfg.Transforms)) +}