Skip to content

Change to db_config.name for logging metrics per database

What does this MR do?

TL;DR

Basically this just changes some JSON log statement keys:

db_replica_gitlabhq_production_duration_s -> db_replica_primary_duration_s
db_primary_gitlabhq_production_duration_s -> db_primary_primary_duration_s

Details

As GitLab is planning on moving ci_* tables to a separate database we need to start expanding our observability/logging/metrics to allow us to distinguish between the different databases being queried.

We had already implemented logging per database by including the database name (ie. what Postgres calls the database) in the log statements in !63490 (merged) but later we learnt this wasn't a good idea because we may want to use 2 different Postgres servers with the same Database name (in fact that's what our current migration plan involves). As such we need to use the name that the GitLab application uses to distinguish between the 2 different databases. This is the name used to configure the config/database.yml and must be unique.

In the default case it does not have a name and Rails will call it primary. This has the unfortunate result that this MR will add JSON log keys db_replica_primary_duration_s and db_primary_primary_duration_s because we already use the words primary/replica to distinguish between our read-write primary and read-only replicas. We plan to eventually force the config/database.yml to name these main and ci and at that time these log statements will be a little clearer. In the meantime this is behind a feature flag so should not bother people that aren't intending to try and make sense of these metrics.

Screenshots or Screencasts (strongly suggested)

- "db_replica_gitlabhq_production_duration_s":0.049,
+ "db_replica_primary_duration_s":0.049,
- "db_primary_gitlabhq_production_duration_s":0.173
+ "db_primary_primary_duration_s":0.173

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 #334942 (closed)

Merge request reports