Skip to content

Commit c6c6650

Browse files
authored
Merge pull request #245 from ugurzongur/master
Add optional auth parameters for requests
2 parents 2b638b1 + 75f3f72 commit c6c6650

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

examples/amazon-prometheus.py

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from prometheus_api_client import PrometheusConnect
2+
from prometheus_api_client.utils import parse_datetime
3+
from datetime import timedelta
4+
5+
from requests_auth_aws_sigv4 import AWSSigV4 # pip install requests-auth-aws-sigv4
6+
# Optionally install boto3 if you'd like to use AWS CLI/SDK credentials
7+
8+
region = 'us-east-1'
9+
workspace_id = 'ws-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
10+
11+
auth = AWSSigV4('aps', region=region)
12+
13+
prom = PrometheusConnect(url=f"https://aps-workspaces.{region}.amazonaws.com/workspaces/{workspace_id}", disable_ssl=False, auth=auth)
14+
15+
# Print all metrics
16+
metrics = prom.all_metrics()
17+
print(metrics)
18+
19+
# Get 'prometheus_ready' metric for the last 15 minutes
20+
start_time = parse_datetime("15m")
21+
end_time = parse_datetime("now")
22+
chunk_size = timedelta(minutes=15)
23+
24+
metric_data = prom.get_metric_range_data(
25+
metric_name='prometheus_ready',
26+
start_time=start_time,
27+
end_time=end_time,
28+
chunk_size=chunk_size,
29+
)
30+
31+
print(metric_data[0]['values'])

prometheus_api_client/prometheus_connect.py

+11
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ class PrometheusConnect:
3434
:param disable_ssl: (bool) If set to True, will disable ssl certificate verification
3535
for the http requests made to the prometheus host
3636
:param retry: (Retry) Retry adapter to retry on HTTP errors
37+
:param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth. See python
38+
requests library auth parameter for further explanation.
3739
"""
3840

3941
def __init__(
@@ -42,6 +44,7 @@ def __init__(
4244
headers: dict = None,
4345
disable_ssl: bool = False,
4446
retry: Retry = None,
47+
auth: tuple = None
4548
):
4649
"""Functions as a Constructor for the class PrometheusConnect."""
4750
if url is None:
@@ -60,6 +63,8 @@ def __init__(
6063
status_forcelist=RETRY_ON_STATUS,
6164
)
6265

66+
self.auth = auth
67+
6368
self._session = requests.Session()
6469
self._session.mount(self.url, HTTPAdapter(max_retries=retry))
6570

@@ -76,6 +81,7 @@ def check_prometheus_connection(self, params: dict = None) -> bool:
7681
verify=self.ssl_verification,
7782
headers=self.headers,
7883
params=params,
84+
auth=self.auth,
7985
)
8086
return response.ok
8187

@@ -112,6 +118,7 @@ def get_label_values(self, label_name: str, params: dict = None):
112118
verify=self.ssl_verification,
113119
headers=self.headers,
114120
params=params,
121+
auth=self.auth,
115122
)
116123

117124
if response.status_code == 200:
@@ -161,6 +168,7 @@ def get_current_metric_value(
161168
params={**{"query": query}, **params},
162169
verify=self.ssl_verification,
163170
headers=self.headers,
171+
auth=self.auth,
164172
)
165173

166174
if response.status_code == 200:
@@ -251,6 +259,7 @@ def get_metric_range_data(
251259
},
252260
verify=self.ssl_verification,
253261
headers=self.headers,
262+
auth=self.auth,
254263
)
255264
if response.status_code == 200:
256265
data += response.json()["data"]["result"]
@@ -348,6 +357,7 @@ def custom_query(self, query: str, params: dict = None):
348357
params={**{"query": query}, **params},
349358
verify=self.ssl_verification,
350359
headers=self.headers,
360+
auth=self.auth,
351361
)
352362
if response.status_code == 200:
353363
data = response.json()["data"]["result"]
@@ -390,6 +400,7 @@ def custom_query_range(
390400
params={**{"query": query, "start": start, "end": end, "step": step}, **params},
391401
verify=self.ssl_verification,
392402
headers=self.headers,
403+
auth=self.auth,
393404
)
394405
if response.status_code == 200:
395406
data = response.json()["data"]["result"]

0 commit comments

Comments
 (0)