Raise CollectError when Prometheus query returns an error
As described in the Prometheus HTTP API documentation [1], the JSON response to a Prometheus query includes a status field, which was ignored by CloudKitty. If it is set to "error", raise a CollectError exception to log the error type and details. For example, a query with a metric name containing a dot will produce the following error: cloudkitty.collector.exceptions.CollectError: bad_data: invalid parameter "query": 1:25: parse error: unexpected character: '.' [1] https://prometheus.io/docs/prometheus/latest/querying/api/ Change-Id: I0c2892a39ec50163de251b38d34493db6a22c858 Story: 2009869 Task: 44564
This commit is contained in:
parent
249ea00192
commit
a536880431
@ -219,6 +219,11 @@ class PrometheusCollector(collector.BaseCollector):
|
||||
except PrometheusResponseError as e:
|
||||
raise CollectError(*e.args)
|
||||
|
||||
if res['status'] == 'error':
|
||||
error_type = res['errorType']
|
||||
error_msg = res['error']
|
||||
raise CollectError("%s: %s" % (error_type, error_msg))
|
||||
|
||||
# If the query returns an empty dataset,
|
||||
# return an empty list
|
||||
if not res['data']['result']:
|
||||
|
@ -0,0 +1,5 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Raises a ``CollectError`` exception with error details when a Prometheus
|
||||
query returns an error status.
|
Loading…
Reference in New Issue
Block a user