PROMQL Joining more metrics

89 Views Asked by At

I'm using SYSDIG monitoring in IBM Cloud. I have these two metrics

first:

sum by(container_image_repo,container_image_tag) (sysdig_container_cpu_cores_used)

Which return by repo and tag the total used cpu (in Value_A)

second:

count by(container_image_repo,container_image_tag)(sysdig_container_info)

Which return by repo and tag the total number of containers (in Value_B)

My problem is that I would like to have one single request which returns the two metrics at the same time by repo and tag, i.e.:

Repo Tag Value_A Value_B

Any hints?

I tried joining the two requests,

sum by(container_image_repo,container_image_tag) (sysdig_container_cpu_cores_used) *on (container_image_repo,container_image_tag) (count by(
container_image_repo,container_image_tag)(sysdig_container_info))

but I get still one value (which is the multiplication of the two values A*B, grouped by repo and tag. No surprise indeed...)

Thank you

1

There are 1 best solutions below

0
On

This is not related to Sysdig, but to the way how PromQL is designed. In PromQL, when you apply a function over a vector, the resulting vector or scalar does not contain the metric name (since this is not the same metric anymore, but its derivative).

In your example, these two metrics that you are using denote two different things:

  • sysdig_container_cpu_cores_used: is the number of cores a particular container occupies
  • sysdig_container_info : a set of additional labels for each container. In order not to add all container information to every container metric (such as agent id, container id, the id of the image in the container, image digest value, etc.), when you need it, you can join that container metric with sysdig_container_info to enrich it with these additional labels.

In my opinion, your query gives you all the relevant info you stated you need:

e.g.

Repo                                  Tag     Value (CPU used)
k8s.gcr.io/kops/kops-controller       1.22.3  0.00148

Disclosure: I work as an engineer at Sysdig, but my answers/comments are strictly my own.