Prometheus is monitoring solution in OpenShift and I'm reading some basic out of it after some performance tests. Here are the queries I'm using:
Get CPU consumption by pods xyz...:
sum(pod_name:container_cpu_usage:sum{pod_name=~'xyz.*',namespace='qa'})
Now for memory usage (these "POD" and "''" container names seems to be doubling the value):
sum(container_memory_usage_bytes{namespace='qa', pod_name=~'xyz.*', container_name!='POD', container_name!=''})
Also see these nice examples on how to construct query.
To Querying Prometheus via API, I have used range query and this Python code:
assert start is not None and end is not None, \
"We need timerange to approach Prometheus"
# Get data from Prometheus
token = 'your `oc whoami -t`'
url = 'https://prometheus-k8s.openshift-monitoring.svc:9091/api/v1/query_range' # I'm running this inside the cluster, so I can use internal hostname
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json',
}
params = {
'query': monitoring_query, # this will be some query from above
'step': monitoring_step, # using 60 seconds here
'start': start.strftime('%s'),
'end': end.strftime('%s'),
}
requests.packages.urllib3.disable_warnings(InsecureRequestWarning) # security is hard ;)
response = requests.get(url, headers=headers, params=params, verify=False)
# Check that what we got back seems OK
response.raise_for_status()
json_response = response.json()
assert json_response['status'] == 'success'
assert 'data' in json_response
assert 'result' in json_response['data']
assert len(json_response['data']['result']) == 1
assert 'values' in json_response['data']['result'][0]
data = [float(i[1]) for i in json_response['data']['result'][0]['values']]
No comments:
Post a Comment