Skip to content

[metrics builder] Ability to re-aggregate metric by attributes #10726

@dmitryax

Description

@dmitryax

We need to provide users with the ability to change a set of attributes emitted by a metrics receiver by applying an automatic re-aggregation of the data points. For example, system.cpu.time is emitted by default with state and cpu attributes. Many users don't need metrics per CPU core, so they would like to get metrics per host and state instead. Currently, they would need to set up an additional metricstransform processor to achieve that. But this can happen inside the metrics builder instead.

Changes to metadata.yaml interface for receiver builders

metrics:
  system.cpu.time:
    enabled: true
    description: Total CPU seconds broken down by different states.
    unit: s
    sum:
      value_type: double
      aggregation: cumulative. # Probably to be renamed to not confuse with attributes_aggregation
      monotonic: true
    attributes_aggregation: sum  # NEW FIELD, name of the field is TBD
    attributes:
      cpu:
        enabled: true  # NEW FIELD
        description: CPU number starting at 0.

      state:
        enabled: true  # NEW FIELD
        description: Breakdown of CPU usage by type.
        enum: [idle, interrupt, nice, softirq, steal, system, user, wait]

This will also allow us to introduce the notion of Optional attributes that are disabled by default. E.g. cpu core is a good candidate for that.

This also requires moving the attributes section from the top level under each metric removing the naming confusion between the name of an attribute key and value field that not be needed anymore. Receiver authors that don't like the additional repetition can use YAML anchors instead.

Additional interface to user configuration

The metrics interface will get additional fields to disable/enable metrics and change the aggregation type. For example:

metrics:
  system.cpu.time:
    attributes_aggregation: [sum|avg|min|max]
    attributes:
      cpu:
        enabled: [true|false]
      state:
        enabled: [true|false]

Action items

  • Move the attributes section under each metric
  • Rename sum.aggregation field to not confuse it with attributes_aggregation
  • Introduce the re-aggregation functionality in the metrics builder

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions