Merge branch 'sh-redis-exporter-fix' into 'master'
Make redis-exporter work with external Redis instances See merge request https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/7326 Merged-by: Balasankar 'Balu' C <balasankar@gitlab.com> Approved-by: Jason Plum <jplum@gitlab.com> Approved-by: Balasankar 'Balu' C <balasankar@gitlab.com> Co-authored-by: Stan Hu <stanhu@gmail.com>
This commit is contained in:
commit
dd6cff1597
|
@ -118,13 +118,16 @@ module Prometheus
|
|||
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'] = {
|
||||
'web.listen-address' => listen_address,
|
||||
'redis.addr' => "unix://#{Gitlab['node']['gitlab']['gitlab_rails']['redis_socket']}"
|
||||
'web.listen-address' => listen_address
|
||||
}
|
||||
|
||||
default_config['flags']['set-client-name'] = 'false' if disable_client_name
|
||||
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
|
||||
|
||||
|
|
|
@ -43,13 +43,17 @@ env_dir redis_exporter_static_etc_dir do
|
|||
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,
|
||||
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
|
||||
|
|
|
@ -5,4 +5,4 @@ umask 077
|
|||
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] %>
|
||||
|
|
|
@ -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
|
|
@ -67,6 +67,34 @@ RSpec.describe 'monitoring::redis-exporter' do
|
|||
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(
|
||||
|
|
Loading…
Reference in New Issue