Add postgres_exporter queries depending on postgres version
## Overview
At the moment we are running different versions of Postgres in staging (v14) and production (v12) and when we do Postgres upgrades we always do that. We have [postgres_exporter](https://gitlab.com/gitlab-cookbooks/gitlab-exporters/-/blob/c3a328708ef21c24b2c3cd06f47fe7ed4d5e0da2/recipes/postgres_exporter.rb) which runs queries on the database to expose Prometheus metrics. Sometimes the columns change between major versions as it did in v14, we've opened https://gitlab.com/gitlab-cookbooks/gitlab-exporters/-/merge_requests/296/diffs to fix this problem. However we [can't merge this version in production](https://gitlab.com/gitlab-com/gl-infra/chef-repo/-/merge_requests/3474#note_1391533421) because production is still using v12.
This leaves us in a bad situation where we can no longer add changes to `postgres_exporter` in production until we deploy v14 to production (which is 1-2 months away currently in 2023-05).
## Proposal
We can update our [queries.erb](https://gitlab.com/gitlab-cookbooks/gitlab-exporters/-/blob/c3a328708ef21c24b2c3cd06f47fe7ed4d5e0da2/templates/postgres_exporter/queries.yaml.erb) like below to allow us to specify the major version of postgres for the exporter and then we generate the correct queries.
```diff
diff --git a/.ruby-version b/.ruby-version
index 57cf282..1f7da99 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.6.5
+2.7.7
diff --git a/attributes/postgres_exporter.rb b/attributes/postgres_exporter.rb
index 06a8f54..9553ef6 100644
--- a/attributes/postgres_exporter.rb
+++ b/attributes/postgres_exporter.rb
@@ -9,6 +9,7 @@ default['postgres_exporter']['version'] = '0.6.0'
default['postgres_exporter']['db_user'] = 'postgres_exporter'
default['postgres_exporter']['database'] = 'gitlabhq_production'
default['postgres_exporter']['binary_url'] = "https://github.com/wrouesnel/postgres_exporter/releases/download/v#{node['postgres_exporter']['version']}/postgres_exporter_v#{node['postgres_exporter']['version']}_linux-amd64.tar.gz"
+default['postgres_exporter']['postgres_major_version'] = 12
default['postgres_exporter']['flags']['extend.query-path'] = "#{node['postgres_exporter']['dir']}/queries.yaml"
default['postgres_exporter']['secrets']['backend'] = 'chef_vault'
diff --git a/templates/postgres_exporter/queries.yaml.erb b/templates/postgres_exporter/queries.yaml.erb
index 10130d8..509306c 100644
--- a/templates/postgres_exporter/queries.yaml.erb
+++ b/templates/postgres_exporter/queries.yaml.erb
@@ -745,6 +745,10 @@ pg_gin_index:
usage: GAUGE
description: The current size of the GIN index pending-list, measured in bytes (page count * page size)
+<% if node.to_h.dig('postgres_exporter', 'postgres_major_version') == 12 %>
+
+<% end %>
+
# NOT
# DO NOT ADD GENERAL PURPOSE GITLAB MONITORING HERE
# NOT
```
issue