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

Ответы (0 шт):