Counter в prometheus не отображаеться при rate()
Вопрос
Как выводить Counter в при небольших изменения чтобы он отображался на графиках?
Подробнее о пробелме:
Строю метрики из prometheus в grafana, пример запроса:
sum(rate(app_counter_total{pod="name"}[5m]) * 60 * 5) # всего от 2 до 4 версии приложения
Counter увеличиваеться не часто иногда на +1 раз в 10 минут и при попыти использовать sum(rate()[5m]) такие изменния не отображаться на графике, пример:
зеленый
sum(rate), все остальноеapp_counter_total
Вижу одно из решение:
- писать в prometheus не 1, а 1.5 или 2, но возможно есть правильно решение
Пример метрики которую отдает приложение:
app_counter_total 5.0 app_counter_created 1.6075081360960917e+09Метрики пишу с помошью lib python: https://github.com/skar404/prometheus-sanic
Пример для тестирования:
Пример приложения:
from prometheus_client import Counter
from prometheus_sanic import monitor
from sanic import Sanic, response
app = Sanic(name='sandbox_app')
async def ping(request):
request.app.metrics['sanic_count'].labels(
label_1='ping',
label_2='GET',
).inc()
return response.json({'data': 'update metrics'})
if __name__ == "__main__":
monitor(
app,
multiprocess_mode='all',
metrics_path='/metrics',
is_middleware=False,
metrics_list=[('sanic_count', Counter(
name='sanic_count',
documentation='Counter number 1',
labelnames=['label_1', 'label_2']))]
).expose_endpoint()
app.add_route(ping, 'ping', methods=['GET'])
app.run(host="127.0.0.1", port=8000, workers=1)
Инфрастуктура:
# file name: docker-compose.yml
version: '3.2'
services:
prom:
image: prom/prometheus
container_name: "prom"
restart: always
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
ports:
- 8082:9090
# file name: prometheus.yml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
external_labels:
monitor: 'codelab-monitor'
rule_files:
scrape_configs:
- job_name: app
static_configs:
- targets: [ 'docker.for.mac.localhost:8000' ]
Пример
когда count увееличился, но на графикам rate([limit]) его не вижу:
Чистая метрика от приложения
# HELP sanic_count_total Counter number 1
# TYPE sanic_count_total counter
sanic_count_total{label_1="ping",label_2="GET"} 1.0
# TYPE sanic_count_created gauge
sanic_count_created{label_1="ping",label_2="GET"} 1.6077076902571142e+09

