diff --git a/files/gitlab-cookbooks/monitoring/libraries/prometheus.rb b/files/gitlab-cookbooks/monitoring/libraries/prometheus.rb
index a4a002421365001d1e62dd27f464e21e6665a077_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9tb25pdG9yaW5nL2xpYnJhcmllcy9wcm9tZXRoZXVzLnJi..9a137957310c9a98c285590cedeac302a627b5dd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9tb25pdG9yaW5nL2xpYnJhcmllcy9wcm9tZXRoZXVzLnJi 100644
--- a/files/gitlab-cookbooks/monitoring/libraries/prometheus.rb
+++ b/files/gitlab-cookbooks/monitoring/libraries/prometheus.rb
@@ -118,4 +118,6 @@
       user_config = Gitlab['redis_exporter']
 
       listen_address = user_config['listen_address'] || default_config['listen_address']
+      disable_client_name = Gitlab['gitlab_rails']['redis_enable_client'] == false
+
       default_config['flags'] = {
@@ -121,5 +123,4 @@
       default_config['flags'] = {
-        'web.listen-address' => listen_address,
-        'redis.addr' => "unix://#{Gitlab['node']['gitlab']['gitlab_rails']['redis_socket']}"
+        'web.listen-address' => listen_address
       }
 
@@ -124,4 +125,5 @@
       }
 
+      default_config['flags']['set-client-name'] = 'false' if disable_client_name
       default_config['flags'].merge!(user_config['flags']) if user_config.key?('flags')
 
@@ -126,5 +128,6 @@
       default_config['flags'].merge!(user_config['flags']) if user_config.key?('flags')
 
+      # redis.addr is set in the recipe
       Gitlab['redis_exporter']['flags'] = default_config['flags']
     end
 
diff --git a/files/gitlab-cookbooks/monitoring/recipes/redis-exporter.rb b/files/gitlab-cookbooks/monitoring/recipes/redis-exporter.rb
index a4a002421365001d1e62dd27f464e21e6665a077_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9tb25pdG9yaW5nL3JlY2lwZXMvcmVkaXMtZXhwb3J0ZXIucmI=..9a137957310c9a98c285590cedeac302a627b5dd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9tb25pdG9yaW5nL3JlY2lwZXMvcmVkaXMtZXhwb3J0ZXIucmI= 100644
--- a/files/gitlab-cookbooks/monitoring/recipes/redis-exporter.rb
+++ b/files/gitlab-cookbooks/monitoring/recipes/redis-exporter.rb
@@ -43,9 +43,12 @@
 end
 
 runtime_flags = PrometheusHelper.new(node).flags('redis_exporter')
+redis_helper = NewRedisHelper::RedisExporter.new(node)
+redis_url = redis_helper.formatted_redis_url
+
 runit_service 'redis-exporter' do
   options({
     log_directory: logging_settings[:log_directory],
     log_user: logging_settings[:runit_owner],
     log_group: logging_settings[:runit_group],
     flags: runtime_flags,
@@ -46,10 +49,11 @@
 runit_service 'redis-exporter' do
   options({
     log_directory: logging_settings[:log_directory],
     log_user: logging_settings[:runit_owner],
     log_group: logging_settings[:runit_group],
     flags: runtime_flags,
-    env_dir: redis_exporter_static_etc_dir
+    env_dir: redis_exporter_static_etc_dir,
+    redis_url: redis_url,
   }.merge(params))
   log_options logging_settings[:options]
 end
diff --git a/files/gitlab-cookbooks/monitoring/templates/sv-redis-exporter-run.erb b/files/gitlab-cookbooks/monitoring/templates/sv-redis-exporter-run.erb
index a4a002421365001d1e62dd27f464e21e6665a077_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9tb25pdG9yaW5nL3RlbXBsYXRlcy9zdi1yZWRpcy1leHBvcnRlci1ydW4uZXJi..9a137957310c9a98c285590cedeac302a627b5dd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9tb25pdG9yaW5nL3RlbXBsYXRlcy9zdi1yZWRpcy1leHBvcnRlci1ydW4uZXJi 100644
--- a/files/gitlab-cookbooks/monitoring/templates/sv-redis-exporter-run.erb
+++ b/files/gitlab-cookbooks/monitoring/templates/sv-redis-exporter-run.erb
@@ -5,4 +5,4 @@
 exec chpst -P -e <%= @options[:env_dir] %> \
   -U <%= node['redis']['username'] %>:<%= node['gitlab']['user']['group'] %> \
   -u <%= node['redis']['username'] %>:<%= node['gitlab']['user']['group'] %> \
-  /opt/gitlab/embedded/bin/redis_exporter <%= @options[:flags] %>
+  /opt/gitlab/embedded/bin/redis_exporter <%= @options[:flags] %> --redis.addr=<%= @options[:redis_url] %>
diff --git a/files/gitlab-cookbooks/package/libraries/helpers/new_redis_helper/redis_exporter.rb b/files/gitlab-cookbooks/package/libraries/helpers/new_redis_helper/redis_exporter.rb
new file mode 100644
index 0000000000000000000000000000000000000000..9a137957310c9a98c285590cedeac302a627b5dd_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9oZWxwZXJzL25ld19yZWRpc19oZWxwZXIvcmVkaXNfZXhwb3J0ZXIucmI=
--- /dev/null
+++ b/files/gitlab-cookbooks/package/libraries/helpers/new_redis_helper/redis_exporter.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module NewRedisHelper
+  class RedisExporter < NewRedisHelper::Base
+    def redis_params
+      {
+        url: redis_url
+      }
+    end
+
+    def formatted_redis_url
+      url = redis_url
+
+      url.scheme == 'unix' ? "unix://#{url.path}" : url.to_s
+    end
+
+    private
+
+    def node_access_keys
+      %w[gitlab gitlab_rails]
+    end
+
+    def support_sentinel_groupname?
+      false
+    end
+  end
+end
diff --git a/spec/chef/cookbooks/monitoring/recipes/redis_exporter_spec.rb b/spec/chef/cookbooks/monitoring/recipes/redis_exporter_spec.rb
index a4a002421365001d1e62dd27f464e21e6665a077_c3BlYy9jaGVmL2Nvb2tib29rcy9tb25pdG9yaW5nL3JlY2lwZXMvcmVkaXNfZXhwb3J0ZXJfc3BlYy5yYg==..9a137957310c9a98c285590cedeac302a627b5dd_c3BlYy9jaGVmL2Nvb2tib29rcy9tb25pdG9yaW5nL3JlY2lwZXMvcmVkaXNfZXhwb3J0ZXJfc3BlYy5yYg== 100644
--- a/spec/chef/cookbooks/monitoring/recipes/redis_exporter_spec.rb
+++ b/spec/chef/cookbooks/monitoring/recipes/redis_exporter_spec.rb
@@ -67,6 +67,34 @@
     end
   end
 
+  context 'when redis-exporter is enabled for an external Redis' do
+    let(:config_template) { chef_run.template('/opt/gitlab/sv/redis-exporter/log/config') }
+
+    before do
+      stub_gitlab_rb(
+        redis_exporter: { enable: true },
+        gitlab_rails: {
+          redis_host: '1.2.3.4',
+          redis_port: 6378,
+          redis_ssl: true,
+          redis_password: 'some-password',
+          redis_enable_client: false
+        }
+      )
+    end
+
+    it_behaves_like 'enabled runit service', 'redis-exporter', 'root', 'root'
+
+    it 'sets flags' do
+      expect(chef_run).to render_file('/opt/gitlab/sv/redis-exporter/run')
+        .with_content(/web.listen-address=localhost:9121/)
+      expect(chef_run).to render_file('/opt/gitlab/sv/redis-exporter/run')
+        .with_content(%r{redis.addr=rediss://:some-password@1.2.3.4:6378/})
+      expect(chef_run).to render_file('/opt/gitlab/sv/redis-exporter/run')
+        .with_content(/--set-client-name=false/)
+    end
+  end
+
   context 'when log dir is changed' do
     before do
       stub_gitlab_rb(