Skip to content

Monitor GraphQL with Prometheus (try 2)

Jan Provaznik requested to merge jprovazn-graphql-prometheus into master

What does this MR do?

Note: This is the same code as in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/26569 but with updated spec: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/26569 was reverted because of a bug in specs https://gitlab.com/gitlab-org/gitlab-ce/issues/59848 - GraphQL uses a singleton when calling GitlabSchema.execute method so if another spec instantiated GitlabSchema first, the already existing instance was used but w/o stubbed tracer. Now the spec passes stubbed tracer explicitly when calling .execute method

Original description:

Enables tracing of GraphQL methods by creating Prometheus metrics.

It extends GraphQL's platform tracing class to observe duration of GraphQL methods.

Newer version of graphql-ruby includes prometheus class on top of platform tracing but it's not very useful for us (it uses prometheus-exporter), also our current code is not compatible with newer graphql-ruby version (yet).

Does this MR meet the acceptance criteria?

Conformity

Performance and testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Jan Provaznik

Merge request reports