Прометей не захватывает данные для счетчика - PullRequest
0 голосов
/ 21 декабря 2018

Прометей не может собирать данные для счетчика при вызове инкремента из задач консоли ipython или сельдерея.Счетчик работает для запроса API, но вне запроса API не работает, как если бы я попробовал его из консоли Ipython, из задач сельдерея, чтобы увеличить счетчик.

Прометей также не выбрасывает никаких исключений.

# Using Sanic python framework (async) and python 3.6.
Here are the library Details:
sanic==0.7.0
ipython
prometheus-client==0.5.0
python 3.6.5

Вот конфигурация, которую я использую в приложении Sanic Python для настройки Prometheus:

class MetricsHandler(HTTPMethodView):
    """prometheus metrics exporter"""

    async def get(self, request, *args, **kwargs):
        registry = None
        if 'prometheus_multiproc_dir' in os.environ:
            registry = core.REGISTRY
        else:
            registry = CollectorRegistry()
            multiprocess.MultiProcessCollector(registry)
        data = generate_latest(registry)
        return raw(data, content_type=CONTENT_TYPE_LATEST)

# ipython console example:
In [1]: Prom_Count = Counter('Prom_Counter', 'prom counter', ['func', 'count'])
In [2]: Prom_Count.labels("test", "count").inc()

prometheus_multiproc_dir enviroment varibale is also set.

Ранее мы использовали библиотеку sanic-prometheus:

prometheus-client==0.2.0
sanic-prometheus==0.1.4
wrapt==1.10.11

Заранее спасибо.

1 Ответ

0 голосов
/ 21 декабря 2018

Подумайте над этим:

def get_registry():
    if 'prometheus_multiproc_dir' in os.environ:
        registry = CollectorRegistry()
        multiprocess.MultiProcessCollector(registry)
    else:
        registry = REGISTRY
    return registry

А затем передайте реестр конструктору Counter:

Prom_Count = Counter('Prom_Counter', 'prom counter', ['func', 'count'], registry=get_registry())

Однажды я столкнулся с такой проблемой, и она сработала для меня

...