No project description provided
Project description
Workaround to use prometheus_client multiprocess mode (for e.g. gunicorn, celery) with opentelemetry, where this model currently is not supported, and not even employing an additional otel collector currently solves this.
This package provides a customized MeterProvider, that uses the native prometheus_client metrics implementations, and thus their mechanisms for exporting/exposition (and not the opentelemetry ones).
Usage
See Multiprocess Mode Documentation for details on how to operate this.
Set environment variable PROMETHEUS_MULTIPROC_DIR to a directory where prometheus_client can store its metrics state files (that are shared between processes via mmap).
Configure opentelemetry meter provider:
from opentelemetry.sdk.extension.prometheus_multiprocess import PrometheusMeterProvider import opentelemetry.metrics provider = PrometheusMeterProvider() opentelemetry.metrics.set_meter_provider(provider)
Set up prometheus metrics exposition, for example:
registry = prometheus_client.CollectorRegistry() prometheus_client.multiprocess.MultiProcessCollector(registry) prometheus_client.start_http_server(8080, registry=registry)
(The package also provides a MultiProcessRegistry to streamline this setup.)
Use opentelemetry metrics like normal:
meter = opentelemetry.metrics.get_meter('mypackage', 'myversion') HTTP_DURATION = metrics.create_histogram('http.client.duration', unit='ms') from timeit import default_timer start = default_timer() # perform request here duration = (default_timer() - start) * 1000 HTTP_DURATION.record(duration, {'http.response.status_code': 200})
Changelog
1.0.0 (2024-04-26)
Changes
Initial release (initial)
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 Distribution
Built Distribution
Hashes for opentelemetry_sdk_extension_prometheus_multiprocess-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | b66a0fa87ceeac2a1ff64a0951ac00eb02af4733b05522eb32eb23ad1523e038 |
|
MD5 | 47f13171471e111d0e83f2f446cf5b29 |
|
BLAKE2b-256 | 75e9d789c471de3f51d189ed48fa7e5fbc5d579f852bc44773d14a0c31a59d0b |
Hashes for opentelemetry_sdk_extension_prometheus_multiprocess-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a23d66121522769f7b32201e1d489264b9a0b339a4968d564e74e6be965323d0 |
|
MD5 | 9bb073a9eb661efec86f6ca64afde783 |
|
BLAKE2b-256 | 9343f37c99ecf18d63a7c25fc1d90df1993a4f2f7829b659e4096a9a4be17b95 |