Skip to content

Commit e2cf7d1

Browse files
committed
Enable "rabbitmq_prometheus" in RabbitMQ 3.8 by default
1 parent e5da520 commit e2cf7d1

16 files changed

+334
-6
lines changed

3.7-rc/alpine/docker-entrypoint.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ file_env() {
3232
: "${RABBITMQ_MANAGEMENT_SSL_CACERTFILE:=$RABBITMQ_SSL_CACERTFILE}"
3333
: "${RABBITMQ_MANAGEMENT_SSL_CERTFILE:=$RABBITMQ_SSL_CERTFILE}"
3434
: "${RABBITMQ_MANAGEMENT_SSL_KEYFILE:=$RABBITMQ_SSL_KEYFILE}"
35+
# ... and so should "prometheus"
36+
: "${RABBITMQ_PROMETHEUS_SSL_CACERTFILE:=$RABBITMQ_SSL_CACERTFILE}"
37+
: "${RABBITMQ_PROMETHEUS_SSL_CERTFILE:=$RABBITMQ_SSL_CERTFILE}"
38+
: "${RABBITMQ_PROMETHEUS_SSL_KEYFILE:=$RABBITMQ_SSL_KEYFILE}"
3539

3640
# Allowed env vars that will be read from mounted files (i.e. Docker Secrets):
3741
fileEnvKeys=(
@@ -51,6 +55,9 @@ sslConfigKeys=(
5155
managementConfigKeys=(
5256
"${sslConfigKeys[@]/#/ssl_}"
5357
)
58+
prometheusConfigKeys=(
59+
"${sslConfigKeys[@]/#/ssl_}"
60+
)
5461
rabbitConfigKeys=(
5562
default_pass
5663
default_user
@@ -61,12 +68,16 @@ fileConfigKeys=(
6168
management_ssl_cacertfile
6269
management_ssl_certfile
6370
management_ssl_keyfile
71+
prometheus_ssl_cacertfile
72+
prometheus_ssl_certfile
73+
prometheus_ssl_keyfile
6474
ssl_cacertfile
6575
ssl_certfile
6676
ssl_keyfile
6777
)
6878
allConfigKeys=(
6979
"${managementConfigKeys[@]/#/management_}"
80+
"${prometheusConfigKeys[@]/#/prometheus_}"
7081
"${rabbitConfigKeys[@]}"
7182
"${sslConfigKeys[@]/#/ssl_}"
7283
)
@@ -75,6 +86,9 @@ declare -A configDefaults=(
7586
[management_ssl_fail_if_no_peer_cert]='false'
7687
[management_ssl_verify]='verify_none'
7788

89+
[prometheus_ssl_fail_if_no_peer_cert]='false'
90+
[prometheus_ssl_verify]='verify_none'
91+
7892
[ssl_fail_if_no_peer_cert]='true'
7993
[ssl_verify]='verify_peer'
8094
)
@@ -126,6 +140,7 @@ for conf in "${allConfigKeys[@]}"; do
126140
case "$conf" in
127141
ssl_*) haveSslConfig=1 ;;
128142
management_ssl_*) haveManagementSslConfig=1 ;;
143+
prometheus_ssl_*) havePrometheusSslConfig=1 ;;
129144
esac
130145
fi
131146
done
@@ -271,6 +286,7 @@ rabbit_env_config() {
271286
case "$prefix" in
272287
ssl) key="ssl_options.$key" ;;
273288
management_ssl) key="management.ssl.$key" ;;
289+
prometheus_ssl) key="prometheus.ssl.$key" ;;
274290
esac
275291

276292
local val="${!var:-}"
@@ -374,7 +390,9 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
374390

375391
# if management plugin is installed, generate config for it
376392
# https://www.rabbitmq.com/management.html#configuration
393+
managementEnabled=
377394
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_management)" ]; then
395+
managementEnabled=1
378396
if [ "$haveManagementSslConfig" ]; then
379397
rabbit_set_config 'management.ssl.port' 15671
380398
rabbit_env_config 'management_ssl' "${sslConfigKeys[@]}"
@@ -390,6 +408,22 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
390408
rabbit_set_config 'management.load_definitions' "$managementDefinitionsFile"
391409
fi
392410
fi
411+
412+
# if prometheus plugin is installed, generate config for it
413+
# https://www.rabbitmq.com/prometheus.html#prometheus-configuration
414+
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_prometheus)" ]; then
415+
if [ "$havePrometheusSslConfig" ]; then
416+
rabbit_set_config 'prometheus.ssl.port' 15691
417+
rabbit_env_config 'prometheus_ssl' "${sslConfigKeys[@]}"
418+
else
419+
rabbit_set_config 'prometheus.tcp.port' 15692
420+
fi
421+
422+
# if the management plugin is not enabled, then disable the metrics collector in the management_agent plugin (https://github.com/rabbitmq/rabbitmq-management-agent/pull/78)
423+
if [ -z "$managementEnabled" ]; then
424+
rabbit_set_config 'management_agent.disable_metrics_collector' 'true'
425+
fi
426+
fi
393427
fi
394428

395429
combinedSsl='/tmp/rabbitmq-ssl/combined.pem'

3.7-rc/ubuntu/docker-entrypoint.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ file_env() {
3232
: "${RABBITMQ_MANAGEMENT_SSL_CACERTFILE:=$RABBITMQ_SSL_CACERTFILE}"
3333
: "${RABBITMQ_MANAGEMENT_SSL_CERTFILE:=$RABBITMQ_SSL_CERTFILE}"
3434
: "${RABBITMQ_MANAGEMENT_SSL_KEYFILE:=$RABBITMQ_SSL_KEYFILE}"
35+
# ... and so should "prometheus"
36+
: "${RABBITMQ_PROMETHEUS_SSL_CACERTFILE:=$RABBITMQ_SSL_CACERTFILE}"
37+
: "${RABBITMQ_PROMETHEUS_SSL_CERTFILE:=$RABBITMQ_SSL_CERTFILE}"
38+
: "${RABBITMQ_PROMETHEUS_SSL_KEYFILE:=$RABBITMQ_SSL_KEYFILE}"
3539

3640
# Allowed env vars that will be read from mounted files (i.e. Docker Secrets):
3741
fileEnvKeys=(
@@ -51,6 +55,9 @@ sslConfigKeys=(
5155
managementConfigKeys=(
5256
"${sslConfigKeys[@]/#/ssl_}"
5357
)
58+
prometheusConfigKeys=(
59+
"${sslConfigKeys[@]/#/ssl_}"
60+
)
5461
rabbitConfigKeys=(
5562
default_pass
5663
default_user
@@ -61,12 +68,16 @@ fileConfigKeys=(
6168
management_ssl_cacertfile
6269
management_ssl_certfile
6370
management_ssl_keyfile
71+
prometheus_ssl_cacertfile
72+
prometheus_ssl_certfile
73+
prometheus_ssl_keyfile
6474
ssl_cacertfile
6575
ssl_certfile
6676
ssl_keyfile
6777
)
6878
allConfigKeys=(
6979
"${managementConfigKeys[@]/#/management_}"
80+
"${prometheusConfigKeys[@]/#/prometheus_}"
7081
"${rabbitConfigKeys[@]}"
7182
"${sslConfigKeys[@]/#/ssl_}"
7283
)
@@ -75,6 +86,9 @@ declare -A configDefaults=(
7586
[management_ssl_fail_if_no_peer_cert]='false'
7687
[management_ssl_verify]='verify_none'
7788

89+
[prometheus_ssl_fail_if_no_peer_cert]='false'
90+
[prometheus_ssl_verify]='verify_none'
91+
7892
[ssl_fail_if_no_peer_cert]='true'
7993
[ssl_verify]='verify_peer'
8094
)
@@ -126,6 +140,7 @@ for conf in "${allConfigKeys[@]}"; do
126140
case "$conf" in
127141
ssl_*) haveSslConfig=1 ;;
128142
management_ssl_*) haveManagementSslConfig=1 ;;
143+
prometheus_ssl_*) havePrometheusSslConfig=1 ;;
129144
esac
130145
fi
131146
done
@@ -271,6 +286,7 @@ rabbit_env_config() {
271286
case "$prefix" in
272287
ssl) key="ssl_options.$key" ;;
273288
management_ssl) key="management.ssl.$key" ;;
289+
prometheus_ssl) key="prometheus.ssl.$key" ;;
274290
esac
275291

276292
local val="${!var:-}"
@@ -374,7 +390,9 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
374390

375391
# if management plugin is installed, generate config for it
376392
# https://www.rabbitmq.com/management.html#configuration
393+
managementEnabled=
377394
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_management)" ]; then
395+
managementEnabled=1
378396
if [ "$haveManagementSslConfig" ]; then
379397
rabbit_set_config 'management.ssl.port' 15671
380398
rabbit_env_config 'management_ssl' "${sslConfigKeys[@]}"
@@ -390,6 +408,22 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
390408
rabbit_set_config 'management.load_definitions' "$managementDefinitionsFile"
391409
fi
392410
fi
411+
412+
# if prometheus plugin is installed, generate config for it
413+
# https://www.rabbitmq.com/prometheus.html#prometheus-configuration
414+
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_prometheus)" ]; then
415+
if [ "$havePrometheusSslConfig" ]; then
416+
rabbit_set_config 'prometheus.ssl.port' 15691
417+
rabbit_env_config 'prometheus_ssl' "${sslConfigKeys[@]}"
418+
else
419+
rabbit_set_config 'prometheus.tcp.port' 15692
420+
fi
421+
422+
# if the management plugin is not enabled, then disable the metrics collector in the management_agent plugin (https://github.com/rabbitmq/rabbitmq-management-agent/pull/78)
423+
if [ -z "$managementEnabled" ]; then
424+
rabbit_set_config 'management_agent.disable_metrics_collector' 'true'
425+
fi
426+
fi
393427
fi
394428

395429
combinedSsl='/tmp/rabbitmq-ssl/combined.pem'

3.7/alpine/docker-entrypoint.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ file_env() {
3232
: "${RABBITMQ_MANAGEMENT_SSL_CACERTFILE:=$RABBITMQ_SSL_CACERTFILE}"
3333
: "${RABBITMQ_MANAGEMENT_SSL_CERTFILE:=$RABBITMQ_SSL_CERTFILE}"
3434
: "${RABBITMQ_MANAGEMENT_SSL_KEYFILE:=$RABBITMQ_SSL_KEYFILE}"
35+
# ... and so should "prometheus"
36+
: "${RABBITMQ_PROMETHEUS_SSL_CACERTFILE:=$RABBITMQ_SSL_CACERTFILE}"
37+
: "${RABBITMQ_PROMETHEUS_SSL_CERTFILE:=$RABBITMQ_SSL_CERTFILE}"
38+
: "${RABBITMQ_PROMETHEUS_SSL_KEYFILE:=$RABBITMQ_SSL_KEYFILE}"
3539

3640
# Allowed env vars that will be read from mounted files (i.e. Docker Secrets):
3741
fileEnvKeys=(
@@ -51,6 +55,9 @@ sslConfigKeys=(
5155
managementConfigKeys=(
5256
"${sslConfigKeys[@]/#/ssl_}"
5357
)
58+
prometheusConfigKeys=(
59+
"${sslConfigKeys[@]/#/ssl_}"
60+
)
5461
rabbitConfigKeys=(
5562
default_pass
5663
default_user
@@ -61,12 +68,16 @@ fileConfigKeys=(
6168
management_ssl_cacertfile
6269
management_ssl_certfile
6370
management_ssl_keyfile
71+
prometheus_ssl_cacertfile
72+
prometheus_ssl_certfile
73+
prometheus_ssl_keyfile
6474
ssl_cacertfile
6575
ssl_certfile
6676
ssl_keyfile
6777
)
6878
allConfigKeys=(
6979
"${managementConfigKeys[@]/#/management_}"
80+
"${prometheusConfigKeys[@]/#/prometheus_}"
7081
"${rabbitConfigKeys[@]}"
7182
"${sslConfigKeys[@]/#/ssl_}"
7283
)
@@ -75,6 +86,9 @@ declare -A configDefaults=(
7586
[management_ssl_fail_if_no_peer_cert]='false'
7687
[management_ssl_verify]='verify_none'
7788

89+
[prometheus_ssl_fail_if_no_peer_cert]='false'
90+
[prometheus_ssl_verify]='verify_none'
91+
7892
[ssl_fail_if_no_peer_cert]='true'
7993
[ssl_verify]='verify_peer'
8094
)
@@ -126,6 +140,7 @@ for conf in "${allConfigKeys[@]}"; do
126140
case "$conf" in
127141
ssl_*) haveSslConfig=1 ;;
128142
management_ssl_*) haveManagementSslConfig=1 ;;
143+
prometheus_ssl_*) havePrometheusSslConfig=1 ;;
129144
esac
130145
fi
131146
done
@@ -271,6 +286,7 @@ rabbit_env_config() {
271286
case "$prefix" in
272287
ssl) key="ssl_options.$key" ;;
273288
management_ssl) key="management.ssl.$key" ;;
289+
prometheus_ssl) key="prometheus.ssl.$key" ;;
274290
esac
275291

276292
local val="${!var:-}"
@@ -374,7 +390,9 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
374390

375391
# if management plugin is installed, generate config for it
376392
# https://www.rabbitmq.com/management.html#configuration
393+
managementEnabled=
377394
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_management)" ]; then
395+
managementEnabled=1
378396
if [ "$haveManagementSslConfig" ]; then
379397
rabbit_set_config 'management.ssl.port' 15671
380398
rabbit_env_config 'management_ssl' "${sslConfigKeys[@]}"
@@ -390,6 +408,22 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
390408
rabbit_set_config 'management.load_definitions' "$managementDefinitionsFile"
391409
fi
392410
fi
411+
412+
# if prometheus plugin is installed, generate config for it
413+
# https://www.rabbitmq.com/prometheus.html#prometheus-configuration
414+
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_prometheus)" ]; then
415+
if [ "$havePrometheusSslConfig" ]; then
416+
rabbit_set_config 'prometheus.ssl.port' 15691
417+
rabbit_env_config 'prometheus_ssl' "${sslConfigKeys[@]}"
418+
else
419+
rabbit_set_config 'prometheus.tcp.port' 15692
420+
fi
421+
422+
# if the management plugin is not enabled, then disable the metrics collector in the management_agent plugin (https://github.com/rabbitmq/rabbitmq-management-agent/pull/78)
423+
if [ -z "$managementEnabled" ]; then
424+
rabbit_set_config 'management_agent.disable_metrics_collector' 'true'
425+
fi
426+
fi
393427
fi
394428

395429
combinedSsl='/tmp/rabbitmq-ssl/combined.pem'

3.7/ubuntu/docker-entrypoint.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ file_env() {
3232
: "${RABBITMQ_MANAGEMENT_SSL_CACERTFILE:=$RABBITMQ_SSL_CACERTFILE}"
3333
: "${RABBITMQ_MANAGEMENT_SSL_CERTFILE:=$RABBITMQ_SSL_CERTFILE}"
3434
: "${RABBITMQ_MANAGEMENT_SSL_KEYFILE:=$RABBITMQ_SSL_KEYFILE}"
35+
# ... and so should "prometheus"
36+
: "${RABBITMQ_PROMETHEUS_SSL_CACERTFILE:=$RABBITMQ_SSL_CACERTFILE}"
37+
: "${RABBITMQ_PROMETHEUS_SSL_CERTFILE:=$RABBITMQ_SSL_CERTFILE}"
38+
: "${RABBITMQ_PROMETHEUS_SSL_KEYFILE:=$RABBITMQ_SSL_KEYFILE}"
3539

3640
# Allowed env vars that will be read from mounted files (i.e. Docker Secrets):
3741
fileEnvKeys=(
@@ -51,6 +55,9 @@ sslConfigKeys=(
5155
managementConfigKeys=(
5256
"${sslConfigKeys[@]/#/ssl_}"
5357
)
58+
prometheusConfigKeys=(
59+
"${sslConfigKeys[@]/#/ssl_}"
60+
)
5461
rabbitConfigKeys=(
5562
default_pass
5663
default_user
@@ -61,12 +68,16 @@ fileConfigKeys=(
6168
management_ssl_cacertfile
6269
management_ssl_certfile
6370
management_ssl_keyfile
71+
prometheus_ssl_cacertfile
72+
prometheus_ssl_certfile
73+
prometheus_ssl_keyfile
6474
ssl_cacertfile
6575
ssl_certfile
6676
ssl_keyfile
6777
)
6878
allConfigKeys=(
6979
"${managementConfigKeys[@]/#/management_}"
80+
"${prometheusConfigKeys[@]/#/prometheus_}"
7081
"${rabbitConfigKeys[@]}"
7182
"${sslConfigKeys[@]/#/ssl_}"
7283
)
@@ -75,6 +86,9 @@ declare -A configDefaults=(
7586
[management_ssl_fail_if_no_peer_cert]='false'
7687
[management_ssl_verify]='verify_none'
7788

89+
[prometheus_ssl_fail_if_no_peer_cert]='false'
90+
[prometheus_ssl_verify]='verify_none'
91+
7892
[ssl_fail_if_no_peer_cert]='true'
7993
[ssl_verify]='verify_peer'
8094
)
@@ -126,6 +140,7 @@ for conf in "${allConfigKeys[@]}"; do
126140
case "$conf" in
127141
ssl_*) haveSslConfig=1 ;;
128142
management_ssl_*) haveManagementSslConfig=1 ;;
143+
prometheus_ssl_*) havePrometheusSslConfig=1 ;;
129144
esac
130145
fi
131146
done
@@ -271,6 +286,7 @@ rabbit_env_config() {
271286
case "$prefix" in
272287
ssl) key="ssl_options.$key" ;;
273288
management_ssl) key="management.ssl.$key" ;;
289+
prometheus_ssl) key="prometheus.ssl.$key" ;;
274290
esac
275291

276292
local val="${!var:-}"
@@ -374,7 +390,9 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
374390

375391
# if management plugin is installed, generate config for it
376392
# https://www.rabbitmq.com/management.html#configuration
393+
managementEnabled=
377394
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_management)" ]; then
395+
managementEnabled=1
378396
if [ "$haveManagementSslConfig" ]; then
379397
rabbit_set_config 'management.ssl.port' 15671
380398
rabbit_env_config 'management_ssl' "${sslConfigKeys[@]}"
@@ -390,6 +408,22 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
390408
rabbit_set_config 'management.load_definitions' "$managementDefinitionsFile"
391409
fi
392410
fi
411+
412+
# if prometheus plugin is installed, generate config for it
413+
# https://www.rabbitmq.com/prometheus.html#prometheus-configuration
414+
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_prometheus)" ]; then
415+
if [ "$havePrometheusSslConfig" ]; then
416+
rabbit_set_config 'prometheus.ssl.port' 15691
417+
rabbit_env_config 'prometheus_ssl' "${sslConfigKeys[@]}"
418+
else
419+
rabbit_set_config 'prometheus.tcp.port' 15692
420+
fi
421+
422+
# if the management plugin is not enabled, then disable the metrics collector in the management_agent plugin (https://github.com/rabbitmq/rabbitmq-management-agent/pull/78)
423+
if [ -z "$managementEnabled" ]; then
424+
rabbit_set_config 'management_agent.disable_metrics_collector' 'true'
425+
fi
426+
fi
393427
fi
394428

395429
combinedSsl='/tmp/rabbitmq-ssl/combined.pem'

0 commit comments

Comments
 (0)