Well, "many" means "one or more", and therefore "one" is a valid case of 
"many" :-)

But yes, you'll have to treat it as a many-to-one in order to pick up the 
extra labels.

If you know for sure that metrics A and B are always matched 1:1, then it 
doesn't matter whether you use group_left or group_right.  But you still 
need to provide the list of labels in brackets in order to pick up the 
labels from the other side.

On Tuesday, 7 March 2023 at 12:43:22 UTC Nick Carlton wrote:

> Ah ok,
>
> I would have thought this was one-to-one because for each metric that 
> exists in ltmPoolMbrStatusAvailState there is one exact match within 
> ltmPoolMbrStatusEnabledState. Not multiple.
>
> Unless I’m reading the definitions wrong.
>
> Thanks
>
> On Tue, 7 Mar 2023 at 12:06, Brian Candler <[email protected]> wrote:
>
>> To pick up labels from the other side, you need to list them as part of 
>> your group_right. e.g. (untested)
>>
>> ltmPoolMbrStatusAvailState * 
>> on(instance,ltmPoolMbrStatusNodeName,ltmPoolMbrStatusPoolName,ltmPoolMbrStatusPort)
>>  
>> group_right(*foo,bar,baz*) ltmPoolMbrStatusEnabledState
>>
>> will pick up labels foo,bar,baz from the left side.
>>
>> See: 
>> https://prometheus.io/docs/prometheus/latest/querying/operators/#many-to-one-and-one-to-many-vector-matches
>>
>> Here's a tested example:
>>
>> node_filesystem_avail_bytes * on (instance) 
>> group_left(machine,release,version) node_uname_info
>>
>> It's a many-to-one, where the left side is "many" and the right side is 
>> "one", and the given labels from node_uname_info are added to the labels 
>> from node_filesystem_avail_bytes.
>>
>> On Tuesday, 7 March 2023 at 08:58:21 UTC Nick Carlton wrote:
>>
>>> Thanks for your response.
>>>
>>> If I do `ltmPoolMbrStatusAvailState * 
>>> on(instance,ltmPoolMbrStatusNodeName,ltmPoolMbrStatusPoolName,ltmPoolMbrStatusPort)
>>>  
>>> group_right ltmPoolMbrStatusEnabledState` I get:
>>>
>>> `{instance="ltm01", job="f5_ltm_test", ltmPoolMbrStatusEnabledState="1", 
>>> ltmPoolMbrStatusNodeName="/Common/VPN1", 
>>> ltmPoolMbrStatusPoolName="/Common/Pool1", ltmPoolMbrStatusPort="4500", 
>>> prometheus="monitoring/k8s", prometheus_replica="prometheus-k8s-0"}`
>>>
>>> So this has `ltmPoolMbrStatusEnabledState` but not 
>>> `ltmPoolMbrStatusAvailState`. If I swap the metrics round:
>>>
>>> `ltmPoolMbrStatusEnabledState * 
>>> on(instance,ltmPoolMbrStatusNodeName,ltmPoolMbrStatusPoolName,ltmPoolMbrStatusPort)
>>>  
>>> group_right ltmPoolMbrStatusAvailState`. I get:
>>>
>>> `{instance="ltm01", job="f5_ltm_test", ltmPoolMbrStatusAvailState="1", 
>>> ltmPoolMbrStatusNodeName="/Common/VPN1", 
>>> ltmPoolMbrStatusPoolName="/Common/Pool1", ltmPoolMbrStatusPort="4500", 
>>> prometheus="monitoring/k8s", prometheus_replica="prometheus-k8s-0"}`
>>>
>>> This has `ltmPoolMbrStatusAvailState` but not 
>>> `ltmPoolMbrStatusEnabledState`
>>>
>>> So it seems I can get one or the other, not both. Unless im forming my 
>>> PromQL wrong?
>>>
>>> On Tuesday, 7 March 2023 at 08:31:39 UTC Brian Candler wrote:
>>>
>>>> It has to be done in a query - the relabelling phase of a scrape job 
>>>> cannot see other metrics.
>>>>
>>>> What you are looking for is one-to-many queries, which can pick up 
>>>> labels from the "one" side and apply them to the "many":
>>>>
>>>> https://www.robustperception.io/how-to-have-labels-for-machine-roles
>>>>
>>>> https://www.robustperception.io/exposing-the-software-version-to-prometheus
>>>>
>>>> https://prometheus.io/docs/prometheus/latest/querying/operators/#many-to-one-and-one-to-many-vector-matches
>>>> https://www.robustperception.io/left-joins-in-promql
>>>>
>>>> > I have tried doing a join but it only seems to bring in one of the 
>>>> `ltmPoolMbrStatusEnabledState` and `ltmPoolMbrStatusAvailState` metrics 
>>>> depending on if its a left or right join, but I would like both to appear.
>>>>
>>>> Can you show what query you did, the raw metrics which it used, what 
>>>> result you got, and what you wanted to get instead?
>>>>
>>> -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "Prometheus Users" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/prometheus-users/qlHK7r1hQVs/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/prometheus-users/4c22a279-a51c-47db-993e-9107e54e883en%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/prometheus-users/4c22a279-a51c-47db-993e-9107e54e883en%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/cb465a72-3dff-436c-b0da-c437193ceb8en%40googlegroups.com.

Reply via email to