Thanks for your quick around. Could you please share any reference? I am 
not able to understand the flow to follow

On Monday, November 7, 2022 at 5:30:23 PM UTC+5:30 Brian Candler wrote:

> You need to read the Prometheus HTTP API documentation 
> <https://prometheus.io/docs/prometheus/latest/querying/api/>, then get it 
> to work using curl, before you write your Python version.
>
> Your first problem is that you are querying the '/metrics' endpoint of 
> prometheus.  That only gives you metrics about prometheus itself - internal 
> information about the performance of its time series database for example.  
> There is a separate endpoint for querying metrics data which is stored in 
> the database.
>
> To check for "unreachable instances", I suggest you start with a simple 
> query like up==0.  Do this using an instant query 
> <https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries>. 
>  
> Example:
>
> *curl -gsS 'http://localhost:9090/api/v1/query?query=up==0 
> <http://localhost:9090/api/v1/query?query=up==0>'*
>
> You can then make this query more sophisticated to meet your requirements, 
> and when you're happy with it, convert into Python.
>
> Your second problem is that you are putting nonsense in your queries like 
> "$unreachbale_instance" [sic] and "$interval".  I am guessing you've been 
> doing stuff like this in Grafana?  But Grafana substitutes these 
> placeholders with real values *before* sending the query to Prometheus' 
> API.  If prometheus sees these $ values then it will treat them literally 
> as those strings, and in particular "$interval" is not a valid value for a 
> range 
> vector selector 
> <https://prometheus.io/docs/prometheus/latest/querying/basics/#range-vector-selectors>.
>   
> To see what syntax is allowed in a query, read the query documentation 
> <https://prometheus.io/docs/prometheus/latest/querying/basics/>, and test 
> your queries out in the Prometheus web interface.
>
> I note that you have calculated a suitable value and stored it in a python 
> variable:
>
>     duration = '[' + str(last_day.day) + 'd]'
>
> ... but you have not actually used this value in your query anywhere.
>
> On Monday, 7 November 2022 at 10:11:10 UTC [email protected] wrote:
>
>> Hello All,
>>
>> I want to write Prometheus query in python. I want to store the output of 
>> unreachable instances in a variable.
>>
>> I found one blog where we can fetch all metrics. But I want to write 
>> query, but I am not able to write. Could you please help me out?
>>
>> I want to write a query to find the unreachable servers in python.
>>
>> Here is the code which I found:
>>
>> import datetime
>> import time
>> import requests  
>>
>> PROMETHEUS = 'http://localhost:9090/'
>>
>> end_of_month = datetime.datetime.today().replace(day=1).date()
>>
>> last_day = end_of_month - datetime.timedelta(days=1)
>> duration = '[' + str(last_day.day) + 'd]'
>>
>> response = requests.get(PROMETHEUS + '/metrics',
>>   params={
>>     'query': 
>> 'max_over_time(up{instance=~"$unreachbale_instance",job="node_exporter"}[$interval])
>>  
>> $reachability and up',
>>     'time': time.mktime(end_of_month.timetuple())})
>> results = response.json()['data']['result']
>>
>> print('{:%B %Y}:'.format(last_day))
>> for result in results:
>>   print(' {metric}: {value[1]}'.format(**result))
>>
>>
>> could anyone please help me?
>>
>>
>> Thanks & regards,
>> Bharath Kumar.
>>
>

-- 
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/ebdf6189-9e58-4276-8908-51eb3d81d8a5n%40googlegroups.com.

Reply via email to