Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Guidance to avoid duplicate metrics in multiprocess #651

Merged
merged 1 commit into from
May 14, 2021

Conversation

csmarchbanks
Copy link
Member

Closes #647

@@ -504,6 +504,8 @@ To handle this the client library can be put in multiprocess mode.
This comes with a number of limitations:

- Registries can not be used as normal, all instantiated metrics are exported
- Registering metrics to a registry later used by a `MultiProcessCollector`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is under a section called (Gunicorn) however this seems more generic and not tied to Gunicorn, right? I hit this issue with UWSGI.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this also begs the question of, what is the case someone does want to register a metric to a registry?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Gunicorn specification is a good point, perhaps (E.g. Gunicorn) instead to make it clear that is an example?

There are lots of valid use cases to register a metric when in non-multiprocess mode, it just doesn't work for multi-process right now. For example, when building a custom exporter you might have one registry for internal metrics, and a second registry for the metrics coming from something being probed.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

roger that

Signed-off-by: Chris Marchbanks <csmarchbanks@gmail.com>
@csmarchbanks csmarchbanks force-pushed the clarify-multiprocess-registry-use branch from 933f763 to 6d572df Compare May 13, 2021 22:31
- Custom collectors do not work (e.g. cpu and memory metrics)
- Info and Enum metrics do not work
- The pushgateway cannot be used
- Gauges cannot use the `pid` label

There's several steps to getting this working:

**1. Gunicorn deployment**:
**1. Deployment**:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

from prometheus_client import generate_latest, CollectorRegistry, CONTENT_TYPE_LATEST
from prometheus_client import generate_latest, CollectorRegistry, CONTENT_TYPE_LATEST, Counter

MY_COUNTER = Counter('my_counter', 'Description of my counter')

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@csmarchbanks csmarchbanks merged commit 6df81ae into master May 14, 2021
@csmarchbanks csmarchbanks deleted the clarify-multiprocess-registry-use branch May 14, 2021 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

multiprocess in uwsgi leads generate_latest to sometimes contain duplicates
2 participants