How can I 'join' two metrics in a Prometheus query?
Solution 1:
You can use the argument list of group_left
to include extra labels from the right operand (parentheses and indents for clarity):
(
max(consul_health_service_status{status="critical"})
by (service_name,status,node) == 1
)
+ on(service_name,node) group_left(env)
(
0 * consul_service_tags
)
The important part here is the operation + on(service_name,node) group_left(env)
:
- the
+
is "abused" as a join operator (fine since0 * consul_service_tags
always has the value 0) -
group_left(env)
is the modifier that includes the extra labelenv
from the right (consul_service_tags
)