Migrate to upstream Prometheus Ruby client
Problem to solve
We currently use a forked Prometheus library, prometheus-client-mmap. It is worth the effort to switch to the upstream library in order to avoid the burden of maintaining this library on our own.
Intended users
GitLab developers
Further details
The upstream Prometheus client_ruby now supports multi-process metrics. Now that this is complete we should switch to this upstream code.
The metrics storage is modular. We will have to evaluate which mode to use. It seems like DirectFileStore is the only one we can use for multi-process. We will have to evaluate the performance of this compared to the current C implementation.
Proposal
-
Review the upstream multi-process support. https://gitlab.com/gitlab-org/gitlab-ce/issues/59959 -
Benchmark compare the multi-process support. -
Upstream the C code for multi-process if necessary. -
Update our instrumentation to use the new library.
Permissions and Security
N/A
Documentation
What does success look like, and how can we measure that?
When using the upstream library we get as good or better performance with the same or better functionality.
Links / references
Edited by Ben Kochie