Monitor GraphQL with Prometheus (try 2)
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
-
Changelog entry -
Documentation created/updated or follow-up review issue created -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Performance and testing
-
Tests added for this feature/bug -
Tested in all supported browsers -
End to end tests added if this MR has ~"Requires e2e tests" label
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