Migrate to upstream Prometheus Ruby client
### Problem to solve We currently use a forked Prometheus library, [prometheus-client-mmap](https://gitlab.com/gitlab-org/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](https://github.com/prometheus/client_ruby) [now supports multi-process metrics](https://github.com/prometheus/client_ruby/pull/95). Now that this is complete we should switch to this upstream code. The metrics storage is [modular](https://github.com/prometheus/client_ruby#built-in-stores). 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 * [x] 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 <!-- See the Feature Change Documentation Workflow https://docs.gitlab.com/ee/development/documentation/feature-change-workflow.html Add all known Documentation Requirements here, per https://docs.gitlab.com/ee/development/documentation/feature-change-workflow.html#documentation-requirements --> ### 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
epic