Skip to content

Per-cpu for histogram metrics #542

@alebsys

Description

@alebsys

@bobrik, hi!

I'm trying to monitor per-CPU latency histograms for NET_RX softirqs using a configuration inspired by the percpu-softirq example. The idea is to observe histogram distributions (e.g., softirq_wait_seconds and softirq_runtime_seconds) on a per-CPU basis in environments where different CPUs handle traffic from different network interfaces.

I used the following config snippet:

metrics:
  histograms:
    - name: softirq_wait_seconds
      help: Latency histogram for how long it takes from NET_RX softirq raise to entry aka wait time
      bucket_type: exp2
      bucket_min: 0
      bucket_max: 31
      bucket_multiplier: 0.000000001 # nano to seconds
      labels:
        - name: bucket
          size: 4
          decoders:
            - name: uint
        - name: cpu
          size: 2
          decoders:
            - name: uint

However, the output only contains the bucket label, and not cpu, like this:

ebpf_exporter_softirq_runtime_seconds_bucket{bucket="6",le="0.536870912"} 0
ebpf_exporter_softirq_runtime_seconds_bucket{bucket="6",le="1.073741824"} 0
ebpf_exporter_softirq_runtime_seconds_bucket{bucket="6",le="2.147483648"} 0
ebpf_exporter_softirq_runtime_seconds_bucket{bucket="6",le="+Inf"} 0

Expected behavior would be to have:

ebpf_exporter_softirq_runtime_seconds_bucket{cpu="3",le="0.536870912"} 0
...

Question:

Does ebpf_exporter currently support per-CPU labels for histograms (similar to how it works for counter types in the percpu-softirq example)? If not, is it something that could be added, or is there a suggested workaround?

Thanks in advance for any guidance!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions