Skip to main content

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.1.1 (2024-11-07)

Changes

  • Accept kw to make otel API forward-compatible (fwcompat)

1.1.0 (2024-06-25)

Changes

  • naming: Conform to prometheus metric name and unit conventions (naming)

1.0.0 (2024-04-26)

Changes

  • Initial release (initial)

Project details


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

File details

Details for the file opentelemetry_sdk_extension_prometheus_multiprocess-1.1.1.tar.gz.

File metadata

File hashes

Hashes for opentelemetry_sdk_extension_prometheus_multiprocess-1.1.1.tar.gz
Algorithm Hash digest
SHA256 c68ee21c12cfd46957f3df92634d5dbd7eba7948f325a9186b98f9d04650de8a
MD5 4ecb170e921391ab833234480e541360
BLAKE2b-256 35f280b324a90ddc8da2989e2e548a100cd55e82d970b2f4f1fc3f15079b9d1c

See more details on using hashes here.

File details

Details for the file opentelemetry_sdk_extension_prometheus_multiprocess-1.1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for opentelemetry_sdk_extension_prometheus_multiprocess-1.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 112ca7c0e0d700ad23881401ea594859f95ab2b7a9480baae6d3d361309d223e
MD5 0dc0490034cf58811939898932b96669
BLAKE2b-256 8c6134b09ebe45a8770abe965cadeca582f4241f5c150115603e7043fc1c2fe8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page