Skip to content

Commit 6bda400

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

21 files changed

+281
-6
lines changed

3.7-rc/alpine/docker-entrypoint.sh

Lines changed: 27 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:-}"
@@ -390,6 +406,17 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
390406
rabbit_set_config 'management.load_definitions' "$managementDefinitionsFile"
391407
fi
392408
fi
409+
410+
# if prometheus plugin is installed, generate config for it
411+
# https://www.rabbitmq.com/prometheus.html#prometheus-configuration
412+
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_prometheus)" ]; then
413+
if [ "$havePrometheusSslConfig" ]; then
414+
rabbit_set_config 'prometheus.ssl.port' 15691
415+
rabbit_env_config 'prometheus_ssl' "${sslConfigKeys[@]}"
416+
else
417+
rabbit_set_config 'prometheus.tcp.port' 15692
418+
fi
419+
fi
393420
fi
394421

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

3.7-rc/ubuntu/docker-entrypoint.sh

Lines changed: 27 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:-}"
@@ -390,6 +406,17 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
390406
rabbit_set_config 'management.load_definitions' "$managementDefinitionsFile"
391407
fi
392408
fi
409+
410+
# if prometheus plugin is installed, generate config for it
411+
# https://www.rabbitmq.com/prometheus.html#prometheus-configuration
412+
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_prometheus)" ]; then
413+
if [ "$havePrometheusSslConfig" ]; then
414+
rabbit_set_config 'prometheus.ssl.port' 15691
415+
rabbit_env_config 'prometheus_ssl' "${sslConfigKeys[@]}"
416+
else
417+
rabbit_set_config 'prometheus.tcp.port' 15692
418+
fi
419+
fi
393420
fi
394421

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

3.7/alpine/docker-entrypoint.sh

Lines changed: 27 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:-}"
@@ -390,6 +406,17 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
390406
rabbit_set_config 'management.load_definitions' "$managementDefinitionsFile"
391407
fi
392408
fi
409+
410+
# if prometheus plugin is installed, generate config for it
411+
# https://www.rabbitmq.com/prometheus.html#prometheus-configuration
412+
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_prometheus)" ]; then
413+
if [ "$havePrometheusSslConfig" ]; then
414+
rabbit_set_config 'prometheus.ssl.port' 15691
415+
rabbit_env_config 'prometheus_ssl' "${sslConfigKeys[@]}"
416+
else
417+
rabbit_set_config 'prometheus.tcp.port' 15692
418+
fi
419+
fi
393420
fi
394421

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

3.7/ubuntu/docker-entrypoint.sh

Lines changed: 27 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:-}"
@@ -390,6 +406,17 @@ if [ "$1" = 'rabbitmq-server' ] && [ "$shouldWriteConfig" ]; then
390406
rabbit_set_config 'management.load_definitions' "$managementDefinitionsFile"
391407
fi
392408
fi
409+
410+
# if prometheus plugin is installed, generate config for it
411+
# https://www.rabbitmq.com/prometheus.html#prometheus-configuration
412+
if [ "$(rabbitmq-plugins list -q -m -e rabbitmq_prometheus)" ]; then
413+
if [ "$havePrometheusSslConfig" ]; then
414+
rabbit_set_config 'prometheus.ssl.port' 15691
415+
rabbit_env_config 'prometheus_ssl' "${sslConfigKeys[@]}"
416+
else
417+
rabbit_set_config 'prometheus.tcp.port' 15692
418+
fi
419+
fi
393420
fi
394421

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

3.8-rc/alpine/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ RUN set -eux; \
229229
su-exec rabbitmq rabbitmq-plugins list; \
230230
# no stale cookies
231231
rm "$RABBITMQ_DATA_DIR/.erlang.cookie"
232+
# Enable Prometheus-style metrics by default (https://github.com/docker-library/rabbitmq/issues/419)
233+
RUN set -eux; rabbitmq-plugins enable --offline rabbitmq_prometheus; echo 'management_agent.disable_metrics_collector = true' >> /etc/rabbitmq/rabbitmq.conf
232234

233235
# Added for backwards compatibility - users can simply COPY custom plugins to /plugins
234236
RUN ln -sf /opt/rabbitmq/plugins /plugins
@@ -246,5 +248,5 @@ ENV LANG=C.UTF-8 LANGUAGE=C.UTF-8 LC_ALL=C.UTF-8
246248
COPY docker-entrypoint.sh /usr/local/bin/
247249
ENTRYPOINT ["docker-entrypoint.sh"]
248250

249-
EXPOSE 4369 5671 5672 25672
251+
EXPOSE 4369 5671 5672 15691 15692 25672
250252
CMD ["rabbitmq-server"]

0 commit comments

Comments
 (0)