Skip to content

[processor/transform] Aggregate metrics grouping by label #16224

Closed
@gabrielgiussi

Description

@gabrielgiussi

Component(s)

processor/transform

Is your feature request related to a problem? Please describe.

The metricstransform already provides this but there is no way to do it in the transform processor.
e.g.

- include: process.runtime.jvm.memory.usage
        action: insert
        new_name: jvm_memory_bytes_used
        operations:
          - action: aggregate_labels
            label_set: [ type ]
            aggregation_type: sum

With this we can go from

process_runtime_jvm_memory_usage{job="unknown_service:java",pool="CodeHeap 'non-nmethods'",type="non_heap"} 1.382272e+06
process_runtime_jvm_memory_usage{job="unknown_service:java",pool="CodeHeap 'non-profiled nmethods'",type="non_heap"} 9.991936e+06
process_runtime_jvm_memory_usage{job="unknown_service:java",pool="CodeHeap 'profiled nmethods'",type="non_heap"} 2.968128e+07
process_runtime_jvm_memory_usage{job="unknown_service:java",pool="Compressed Class Space",type="non_heap"} 2.2830672e+07
process_runtime_jvm_memory_usage{job="unknown_service:java",pool="Eden Space",type="heap"} 1.5339216e+07
process_runtime_jvm_memory_usage{job="unknown_service:java",pool="Metaspace",type="non_heap"} 1.40415936e+08
process_runtime_jvm_memory_usage{job="unknown_service:java",pool="Survivor Space",type="heap"} 330760
process_runtime_jvm_memory_usage{job="unknown_service:java",pool="Tenured Gen",type="heap"} 6.3913088e+07

to this

jvm_memory_bytes_used{type="heap",job="unknown_service:java"} 7.9583064e+07
jvm_memory_bytes_used{type="non_heap",job="unknown_service:java"} 2.04302096e+08

Describe the solution you'd like

A function to aggregate metric values grouping by a set of attributes

- aggregate([attributes["type"]],sum) where metric.name == "process_runtime_jvm_memory_usage"

In the example I'm also renaming the metric but that could be done with a different function in a next step using set(metric.name,"jvm_memory_bytes_used")

(Providing this just as an example, I don't know which could be the best syntax for this)

Describe alternatives you've considered

No response

Additional context

No response

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestgood first issueGood for newcomersnever staleIssues marked with this label will be never staled and automatically removedpriority:p2Mediumprocessor/transformTransform processor

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions