Skip to content

Log database duration per database [RUN ALL RSPEC] [RUN AS-IF-FOSS]

Dylan Griffith requested to merge 332946-log-db-duration-per-database into master

What does this MR do?

As part of &5759 we're preparing the GitLab application to handle connections to multiple databases. As such we want to improve our observability to understand these multiple databases.

This MR is a first step which will break down the total database duration of a request by the database name of the database connection. At present this will only be 1 extra field (gitlabhq_production on production) but in future it will automatically start logging information about the other databases we add.

We assume that database name should be sufficient for distinguishing these connections in our logs for the time being. Technically we could be conneting to multiple database servers with the same database name but we don't plan on doing that first up and we can come up with a different way to identify hosts with the same database name later if that becomes necessary.

Screenshots (strongly suggested)

 {
   ...
   "db_primary_count": 0,
   "db_primary_cached_count": 0,
   "db_primary_wal_count": 0,
   "db_primary_duration_s": 0,
   "db_replica_duration_s": 0.002,
+  "db_replica_gitlabhq_development_duration_s": 0.002,
   "cpu_s": 9.344601,
   "queue_duration_s": 0.34234,
   ...
 }

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • 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

Related to #332946 (closed)

Edited by Dylan Griffith

Merge request reports