It's working now:
*registry = CollectorRegistry()*
*registry.register(CustomCollector(target))*

Thank you for your help!

Sebastian Halter schrieb am Dienstag, 22. September 2020 um 15:09:13 UTC+2:

> Hi Brian,
>
> thank you for you replay.
> The first thing with "*GaugeMetricFamily" * I figured out just a few 
> minutes after my first reply.
>
> To the second thing you pointed out:
> Can you give me an example for how to create a registry per request?
> If i try to use "*req = REGISTRY()*"  i get the error "'*CollectorRegistry' 
> object is not callable*".
>
>
>
> Brian Brazil schrieb am Dienstag, 22. September 2020 um 13:19:32 UTC+2:
>
>> On Tue, 22 Sep 2020 at 11:06, Sebastian Halter <[email protected]> 
>> wrote:
>>
>>> Thats what i tried:
>>>
>>> *g = GaugeMetricFamily("cardTemperature", "Temperature of the installed 
>>> card", labels=["card"])*
>>>
>>
>> This should be inside the collector.
>>  
>>
>>>
>>> *class TL1Collector(object):*
>>> *    def __init__(self, endpoint):*
>>> *        self._endpoint = endpoint*
>>>    
>>> *    def collect(self):*
>>> *        g.add_metric(self._endpoint, 2)*
>>> *        yield g*
>>>
>>> *@app.route("/temperature")*
>>> *def handle_get():*
>>> *    if "target" in request.args:*
>>> *        target = request.args.get('target')*
>>> *        REGISTRY.register(TL1Collector(target))*
>>>
>>
>> Create a registry per request, and register with that.
>>
>> Brian
>>  
>>
>>> *        return generate_latest(REGISTRY)*
>>> *    else:*
>>> *        return "Error: No target field provided. Please specify target.*
>>> "
>>>
>>> I'm probably wrong the line "
>>> *REGISTRY.register(TL1Collector(target))"  *because i register the 
>>> collector every time i call the endpoint and it is already registered from 
>>> the http call before that one.
>>> But i don't know where to register the custom collector to prevent that, 
>>> because i need the target variable to be passed through.
>>> If i only trigger it once at the start with a boolean it works serveral 
>>> times and i dont get that error anymore but in only adds another metric to 
>>> the output an keeps the old data from a different target parameter aswell.
>>> [email protected] schrieb am Dienstag, 22. September 2020 um 11:31:43 
>>> UTC+2:
>>>
>>>> You probably need to use the Custom Collector. This is similar to the 
>>>> "Const" metrics in the Go code.
>>>>
>>>> https://github.com/prometheus/client_python#custom-collectors
>>>>
>>>> On Tue, Sep 22, 2020 at 11:03 AM Sebastian Halter <
>>>> [email protected]> wrote:
>>>>
>>>>> Hello everyone,
>>>>>
>>>>> i am trying to collect some data via TL1 (basically telnet) because 
>>>>> the manufacturer doesn't provide the temperature of the installed cards 
>>>>> via 
>>>>> SNMP.
>>>>>
>>>>> I would like to recreate something like the SNMP-Exporter where i can 
>>>>> specify my target in the URL it scrapes. Currently i am facing the issue, 
>>>>> that my exporter runs once and then it runs into an error on every other 
>>>>> request ("ValueError: Duplicated timeseriers in CollectorRegistry").
>>>>>
>>>>> Does anyone have a basic example of a multi-target python exporter? 
>>>>> I found in the documentation that python, go und java are the only 
>>>>> client libraries that supports this approch but couldn't find any example 
>>>>> of this on the python-client github site.
>>>>>
>>>>> -- 
>>>>> 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/2f7dd7e7-ac2e-4cee-8f55-68390051efd9n%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/prometheus-users/2f7dd7e7-ac2e-4cee-8f55-68390051efd9n%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/f2fa5473-3fdd-408f-9089-0e75d927207an%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/prometheus-users/f2fa5473-3fdd-408f-9089-0e75d927207an%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> -- 
>> Brian Brazil
>> www.robustperception.io
>>
>

-- 
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/96b0fb36-f598-4ebd-82b0-9b25273d21f8n%40googlegroups.com.

Reply via email to