prometheus query builder
Project description
Pangolier
prometheus query builder
install
pip install pangolier
usage
simple case:
For a metric with filters:
from pangolier.metrics import Metric
print(Metric('http_requests_total').filter(
job='prometheus',
group='canary'
).to_str())
output:
http_requests_total{job="prometheus", group="canary"}
pretty output
Add pretty=True
in to_str
for better readability:
from pangolier.metrics import Metric
print(Metric('http_requests_total').filter(
job='prometheus',
group='canary'
).to_str(pretty=True))
output:
http_requests_total{
job="prometheus",
group="canary"
}
I will always use pretty=True
in rest of this document.
You can disable it as you like.
functions
You can build prometheus functions by name. For example:
from pangolier.functions import function
abs = function('abs')
print(abs(Metric('http_requests_total')).to_str(pretty=True))
output:
abs(
http_requests_total
)
range_function
should be used for functions accept a range-vector
.
from pangolier.functions import range_function
rate = range_function('rate')
print(rate(Metric('http_requests_total'), timespan='5m').to_str(pretty=True))
output:
rate(
http_requests_total[5m]
)
aggregation_operator
shoule be used for Aggregation operators:
from pangolier.functions import aggregation_operator
sum_ = aggregation_operator('sum')
print(sum_(
Metric('http_requests_total'),
by=('job', 'group'),
).to_str(pretty=True))
output:
sum by(
job, group
)(
http_requests_total
)
combine them all together:
histogram_quantile = function('histogram_quantile')
rate = range_function('rate')
sum_ = aggregation_operator('sum')
print(histogram_quantile(
0.9,
sum_(
rate(
Metric('http_request_duration_seconds_bucket'),
timespan='5m',
),
by=('le',)
)
).to_str(pretty=True))
output:
histogram_quantile(
0.9,
sum by(
le
)(
rate(
http_request_duration_seconds_bucket[5m]
)
)
)
bin op
divide one metric with another:
from pangolier.metrics import Metric
from pangolier.functions import range_function
rate = range_function('rate')
print((
rate(
Metric('foo').filter(
group='canary'
),
timespan='5m'
) / rate(
Metric('bar').filter(
group='canary'
),
timespan='5m'
)
).to_str(pretty=True))
output:
rate(
foo{
group="canary"
}[5m]
) / rate(
bar{
group="canary"
}[5m]
)
More operations will be added in future.
about name
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for pangolier-0.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5478e673d2c2b6b0f86c4e30841cef9a599ef36ea2ab0549092023f0fb2481ad |
|
MD5 | 4043e552f298c004f476d614811d5cac |
|
BLAKE2b-256 | 3e22df7904807d3bdd695b762ba12296fc4f79393b5024a43114a3a1efa00ff7 |