Finish Erlang Distribution Grafana dashboard

Includes Erlang node to colour pinning

Adds a few make targets to help with docker-compose repetitive commands
& Grafana dashboard updates.

Split Overview & Distribution Docker deployments

re deadtrickster/prometheus.erl#92

[finishes #166004512]
This commit is contained in:
Gerhard Lazu 2019-05-29 18:19:09 +01:00
parent c4f0105bad
commit 2645082738
19 changed files with 1978 additions and 611 deletions

View File

@ -1,6 +1,6 @@
TODAY := $(shell date -u +'%Y.%m.%d')
# Use the latest alpha RabbitMQ 3.8 release - https://dl.bintray.com/rabbitmq/all-dev/rabbitmq-server/
BASED_ON_RABBITMQ_VERSION := 3.8.0-alpha.664
BASED_ON_RABBITMQ_VERSION := 3.8.0-alpha.671
DOCKER_IMAGE_VERSION := $(BASED_ON_RABBITMQ_VERSION)-$(TODAY)
# RABBITMQ_VERSION is used in rabbitmq-components.mk to set PROJECT_VERSION
RABBITMQ_VERSION ?= $(DOCKER_IMAGE_VERSION)
@ -109,3 +109,36 @@ find_latest_otp: $(JQ)
printf "Checksum: " && \
wget --continue --quiet --output-document="/tmp/OTP-$$VERSION.tar.gz" "https://github.com/erlang/otp/archive/OTP-$$VERSION.tar.gz" && \
shasum -a 256 "/tmp/OTP-$$VERSION.tar.gz"
.PHONY: flo
flo: find_latest_otp
define DOCKER_COMPOSE_UP
cd docker && \
docker-compose --file docker-compose-$@.yml up --detach && \
docker-compose --file docker-compose-$@.yml logs --follow
endef
.PHONY: overview distribution
overview distribution:
@$(DOCKER_COMPOSE_UP)
.PHONY: o d
o: overview
d: distribution
DOCKER_COMPOSE_FILES := $(wildcard docker/docker-compose-*.yml)
.PHONY: $(DOCKER_COMPOSE_FILES)
$(DOCKER_COMPOSE_FILES):
@(cd docker && docker-compose --file $(@F) down ; true)
.PHONY: down
down: $(DOCKER_COMPOSE_FILES)
DASHBOARDS_FROM_PATH := $(HOME)/Downloads
DASHBOARDS_TO_PATH := $(CURDIR)/docker/grafana/dashboards
.PHONY: update_dashboards
update_dashboards:
mv -fv $(DASHBOARDS_FROM_PATH)/RabbitMQ-Overview-*.json $(DASHBOARDS_TO_PATH)/RabbitMQ-Overview.json ; \
mv -fv $(DASHBOARDS_FROM_PATH)/Erlang-Distribution-*.json $(DASHBOARDS_TO_PATH)/Erlang-Distribution.json ; \
mv -fv $(DASHBOARDS_FROM_PATH)/Erlang-Memory-Allocators-*.json $(DASHBOARDS_TO_PATH)/Erlang-Memory-Allocators.json ; \
true
.PHONY: ud
ud: update_dashboards

View File

@ -0,0 +1,108 @@
# https://docs.docker.com/compose/compose-file/
version: "3.6"
# https://docs.docker.com/compose/compose-file/#networks
networks:
rabbitmq-prometheus:
# https://docs.docker.com/compose/compose-file/#volumes
volumes:
rabbitmq-prometheus_prometheus:
rabbitmq-prometheus_grafana:
services:
rabbitmq1: &rabbitmq
# https://hub.docker.com/r/pivotalrabbitmq/rabbitmq-prometheus/tags
image: pivotalrabbitmq/rabbitmq-prometheus:3.8.0-alpha.671-2019.05.29
networks:
- "rabbitmq-prometheus"
ports:
- "5672:5672"
- "15670:25672"
- "15672:15672"
- "15692:15692"
# https://unix.stackexchange.com/questions/71940/killing-tcp-connection-in-linux
# https://en.wikipedia.org/wiki/Tcpkill
# https://www.digitalocean.com/community/tutorials/iptables-essentials-common-firewall-rules-and-commands#block-an-ip-address
cap_add:
- ALL
hostname: rabbitmq1
environment:
RABBITMQ_ERLANG_COOKIE: rabbitmq-prometheus
volumes:
- ./rabbitmq-distribution.conf:/etc/rabbitmq/rabbitmq.conf:ro
- ./rabbitmq-env.conf:/etc/rabbitmq/rabbitmq-env.conf:ro
- ./rabbitmq-ssl_dist.config:/etc/rabbitmq/ssl_dist.config:ro
- ./rabbitmq-definitions.json:/etc/rabbitmq/rabbitmq-definitions.json:ro
- ./rabbitmq-ssl:/etc/rabbitmq/ssl:ro
# we want to simulate hitting thresholds
ulimits:
nofile:
soft: "1024"
hard: "2048"
rabbitmq2:
<< : *rabbitmq
hostname: rabbitmq2
ports:
- "6672:5672"
- "25670:25672"
- "25672:15672"
- "25692:15692"
rabbitmq3:
<< : *rabbitmq
hostname: rabbitmq3
ports:
- "7672:5672"
- "35670:25672"
- "35672:15672"
- "35692:15692"
stress_distribution:
# https://hub.docker.com/r/pivotalrabbitmq/perf-test/
image: &perf-test-image pivotalrabbitmq/perf-test:2.8.0-ubuntu
networks:
- "rabbitmq-prometheus"
environment:
URI: "amqp://guest:guest@rabbitmq1:5672/%2f"
QUEUE_PATTERN: "ha3-max1-%d"
QUEUE_PATTERN_FROM: 1
QUEUE_PATTERN_TO: 10
PRODUCERS: 10
CONSUMERS: 10
ROUTING_KEY: max1
SIZE: 512000
QOS: 100
AUTOACK: "false"
VARIABLE_RATE: "1:30,10:30,20:30"
SERVERS_STARTUP_TIMEOUT: &startup_timeout 30
prometheus:
# https://hub.docker.com/r/prom/prometheus/tags
image: prom/prometheus:v2.9.2
networks:
- "rabbitmq-prometheus"
ports:
- "9090:9090"
volumes:
- rabbitmq-prometheus_prometheus:/prometheus
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
# https://hub.docker.com/r/grafana/grafana/tags
image: grafana/grafana:6.1.6
ports:
- "3000:3000"
networks:
- "rabbitmq-prometheus"
volumes:
- rabbitmq-prometheus_grafana:/var/lib/grafana
- ./grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/rabbitmq.yaml
- ./grafana/datasources.yml:/etc/grafana/provisioning/datasources/prometheus.yaml
- ./grafana/dashboards:/dashboards
# environment:
# https://grafana.com/plugins/flant-statusmap-panel
# https://grafana.com/plugins/grafana-polystat-panel
# https://grafana.com/plugins/grafana-piechart-panel
# https://grafana.com/plugins/jdbranham-diagram-panel
# https://grafana.com/plugins/michaeldmoore-multistat-panel
# https://grafana.com/plugins/vonage-status-panel
# https://grafana.com/plugins/yesoreyeram-boomtable-panel
# Even if the plugins are stored on a volume, updating them can be slow - disabling this for now
# GF_INSTALL_PLUGINS: "flant-statusmap-panel,grafana-piechart-panel,grafana-polystat-panel,jdbranham-diagram-panel,michaeldmoore-multistat-panel,vonage-status-panel,yesoreyeram-boomtable-panel"

View File

@ -13,7 +13,7 @@ volumes:
services:
rabbitmq1: &rabbitmq
# https://hub.docker.com/r/pivotalrabbitmq/rabbitmq-prometheus/tags
image: pivotalrabbitmq/rabbitmq-prometheus:3.8.0-alpha.664-2019.05.20
image: pivotalrabbitmq/rabbitmq-prometheus:3.8.0-alpha.671-2019.05.29
networks:
- "rabbitmq-prometheus"
ports:
@ -30,8 +30,8 @@ services:
environment:
RABBITMQ_ERLANG_COOKIE: rabbitmq-prometheus
volumes:
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
- ./rabbitmq-definitions.json:/etc/rabbitmq/rabbitmq-definitions.json
- ./rabbitmq-overview.conf:/etc/rabbitmq/rabbitmq.conf:ro
- ./rabbitmq-definitions.json:/etc/rabbitmq/rabbitmq-definitions.json:ro
# we want to simulate hitting thresholds
ulimits:
nofile:
@ -55,7 +55,7 @@ services:
- "35692:15692"
publisher-confirms:
# https://hub.docker.com/r/pivotalrabbitmq/perf-test/
image: &perf-test-image pivotalrabbitmq/perf-test:dev-2019.05.20
image: &perf-test-image pivotalrabbitmq/perf-test:2.8.0-ubuntu
networks:
- "rabbitmq-prometheus"
environment:
@ -66,7 +66,7 @@ services:
VARIABLE_RATE: "12:30,25:30,50:30,100:30"
CONFIRM: 1
CONFIRM_TIMEOUT: 1
SERVERS_STARTUP_TIMEOUT: 30
SERVERS_STARTUP_TIMEOUT: &startup_timeout 60
unroutable-return:
image: *perf-test-image
networks:
@ -77,7 +77,7 @@ services:
VARIABLE_SIZE: "100:30,200:30"
CONSUMERS: 0
FLAG: mandatory
SERVERS_STARTUP_TIMEOUT: 30
SERVERS_STARTUP_TIMEOUT: *startup_timeout
unroutable-drop:
image: *perf-test-image
networks:
@ -87,7 +87,7 @@ services:
VARIABLE_RATE: "5:30,10:30,20:30"
VARIABLE_SIZE: "100:30,200:30"
CONSUMERS: 0
SERVERS_STARTUP_TIMEOUT: 30
SERVERS_STARTUP_TIMEOUT: *startup_timeout
slow-consumer-persistent:
image: *perf-test-image
networks:
@ -104,7 +104,7 @@ services:
CONSUMER_RATE: 10
QOS: 10
AUTOACK: "false"
SERVERS_STARTUP_TIMEOUT: 30
SERVERS_STARTUP_TIMEOUT: *startup_timeout
basic-get:
image: *perf-test-image
networks:
@ -117,7 +117,7 @@ services:
POLLING: "true"
POLLING_INTERVAL: 5000
AUTOACK: "false"
SERVERS_STARTUP_TIMEOUT: 30
SERVERS_STARTUP_TIMEOUT: *startup_timeout
basic-get-auto:
image: *perf-test-image
networks:
@ -130,7 +130,7 @@ services:
POLLING: "true"
POLLING_INTERVAL: 5000
AUTOACK: "true"
SERVERS_STARTUP_TIMEOUT: 30
SERVERS_STARTUP_TIMEOUT: *startup_timeout
nack:
image: *perf-test-image
networks:
@ -148,60 +148,7 @@ services:
NACK: "true"
QOS: 5
CONSUMER_LATENCY: 3000000
SERVERS_STARTUP_TIMEOUT: 30
# max1: &max
# image: pivotalrabbitmq/perf-test:dev-2019.05.20
# networks:
# - "rabbitmq-prometheus"
# environment:
# URI: "amqp://guest:guest@rabbitmq1:5672/%2f"
# QUEUE_PATTERN: "ha3-max1-%d"
# QUEUE_PATTERN_FROM: 1
# QUEUE_PATTERN_TO: 10
# PRODUCERS: 10
# CONSUMERS: 10
# ROUTING_KEY: max1
# SIZE: 512000
# QOS: 100
# AUTOACK: "false"
# SERVERS_STARTUP_TIMEOUT: 30
# prometheus:
# image: prom/prometheus:v2.9.0
# networks:
# - "rabbitmq-prometheus"
# ports:
# - "9090:9090"
# volumes:
# - rabbitmq-prometheus_prometheus:/prometheus
# - ./prometheus.yml:/etc/prometheus/prometheus.yml
# max2:
# << : *max
# environment:
# URI: "amqp://guest:guest@rabbitmq2:5672/%2f"
# QUEUE_PATTERN: "ha3-max2-%d"
# QUEUE_PATTERN_FROM: 1
# QUEUE_PATTERN_TO: 10
# PRODUCERS: 10
# CONSUMERS: 10
# ROUTING_KEY: max2
# SIZE: 512000
# QOS: 100
# AUTOACK: "false"
# SERVERS_STARTUP_TIMEOUT: 30
# max3:
# << : *max
# environment:
# URI: "amqp://guest:guest@rabbitmq3:5672/%2f"
# QUEUE_PATTERN: "ha3-max3-%d"
# QUEUE_PATTERN_FROM: 1
# QUEUE_PATTERN_TO: 10
# PRODUCERS: 10
# CONSUMERS: 10
# ROUTING_KEY: max3
# SIZE: 512000
# QOS: 100
# AUTOACK: "false"
# SERVERS_STARTUP_TIMEOUT: 30
SERVERS_STARTUP_TIMEOUT: *startup_timeout
prometheus:
# https://hub.docker.com/r/prom/prometheus/tags
image: prom/prometheus:v2.9.2
@ -227,10 +174,10 @@ services:
# environment:
# https://grafana.com/plugins/flant-statusmap-panel
# https://grafana.com/plugins/grafana-polystat-panel
# https://grafana.com/plugins/grafana-piechart-panel
# https://grafana.com/plugins/jdbranham-diagram-panel
# https://grafana.com/plugins/michaeldmoore-multistat-panel
# https://grafana.com/plugins/natel-discrete-panel
# https://grafana.com/plugins/vonage-status-panel
# https://grafana.com/plugins/yesoreyeram-boomtable-panel
# Even if the plugins are stored on a volume, updating them can be slow - disabling this for now
# GF_INSTALL_PLUGINS: "flant-statusmap-panel,grafana-polystat-panel,jdbranham-diagram-panel,michaeldmoore-multistat-panel,natel-discrete-panel,vonage-status-panel,yesoreyeram-boomtable-panel"
# GF_INSTALL_PLUGINS: "flant-statusmap-panel,grafana-piechart-panel,grafana-polystat-panel,jdbranham-diagram-panel,michaeldmoore-multistat-panel,vonage-status-panel,yesoreyeram-boomtable-panel"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
# https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example
loopback_users.guest = false
listeners.tcp.default = 5672
management.listener.port = 15672
management.listener.ssl = false
vm_memory_high_watermark.absolute = 4GiB
vm_memory_high_watermark_paging_ratio = 0.9
disk_free_limit.absolute = 2048MiB
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@rabbitmq1
cluster_formation.classic_config.nodes.2 = rabbit@rabbitmq2
cluster_formation.classic_config.nodes.3 = rabbit@rabbitmq3
management.load_definitions = /etc/rabbitmq/rabbitmq-definitions.json
# background_gc_enabled = true

View File

@ -0,0 +1,3 @@
INET_TLS="-proto_dist inet_tls -ssl_dist_optfile /etc/rabbitmq/ssl_dist.config"
SERVER_ADDITIONAL_ERL_ARGS="$INET_TLS"
CTL_ERL_ARGS="$INET_TLS"

View File

@ -1,3 +1,4 @@
# https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example
loopback_users.guest = false
listeners.tcp.default = 5672
management.listener.port = 15672
@ -5,7 +6,6 @@ management.listener.ssl = false
vm_memory_high_watermark.absolute = 256MiB
vm_memory_high_watermark_paging_ratio = 0.5
disk_free_limit.absolute = 2048MiB
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@rabbitmq1
@ -13,3 +13,5 @@ cluster_formation.classic_config.nodes.2 = rabbit@rabbitmq2
cluster_formation.classic_config.nodes.3 = rabbit@rabbitmq3
management.load_definitions = /etc/rabbitmq/rabbitmq-definitions.json
# background_gc_enabled = true

View File

@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDRTCCAi2gAwIBAgIJAJ6tbccLOBogMA0GCSqGSIb3DQEBCwUAMDExIDAeBgNV
BAMMF1RMU0dlblNlbGZTaWduZWR0Um9vdENBMQ0wCwYDVQQHDAQkJCQkMB4XDTE5
MDUyODExMzk1NFoXDTI5MDUyNTExMzk1NFowMTEgMB4GA1UEAwwXVExTR2VuU2Vs
ZlNpZ25lZHRSb290Q0ExDTALBgNVBAcMBCQkJCQwggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQDdG6L5G8lamSkbVB5fvwX+2HA5JOylrk7AxUnWRJJqtg3q
5QghMmVeBNYuO9h9spfZ4kMmfje4YyDHjgBzfymiu1nDWgQSJnWWCRV+RnT1OHsr
Qm+8Y4pMASb4dSobU9q7aXrwuVaSbuNFqyALay+A1ZY/RmxEF9PsmS2e08OPnGxt
lZc/h69udrx5E17WMN8KK3A8A6zAKDp5xVDOBURHJoujQgLrSQLZHrSr/GhWTT6Y
/aO7wJz5h9AK3O31COtbSoEVpv6z1rzTJe7TVmXmGJE40+SAP9/k0vu7TnLgBAVJ
38TlpTXqkxwSqdcqQOgRYl6MWS3JRVJCr3uVLqxpAgMBAAGjYDBeMAsGA1UdDwQE
AwIBBjAdBgNVHQ4EFgQU5uLt6Ju+zd4VLtzZIm7H92x7SN8wHwYDVR0jBBgwFoAU
5uLt6Ju+zd4VLtzZIm7H92x7SN8wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
AQsFAAOCAQEACvTdgRUZbkfzuCuhEgrCqxQtiyMTBJt1yPQ3s4j+T6ZpW/iz6D4r
7TwqP46gx8OL9wmQpgPskl8y+dtsG8YyMsoM4jL2jlSK0q+zZ2d2EGZUCbArZee9
m64wa2Z/ZRT59tRQFn7gEc0WcwvG9V4mPhuNwwSaYQcebDwJHybp8nmUu/0+JEVS
cm6Yyzqmy5z95voobya15sV/IrtsOg4ufPUhjDoBOd6pvOkxSMBG6P/ZPE904HdY
38m8KdsfyDeHWG5yGhtRdEnqJlaQ6a/MoR13MwaYhb3cevctTo+hYaBY1fM7MEEe
FbuyVxWhwm2JdgI+e0ychay/LzNOxr5nrg==
-----END CERTIFICATE-----

View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDdG6L5G8lamSkb
VB5fvwX+2HA5JOylrk7AxUnWRJJqtg3q5QghMmVeBNYuO9h9spfZ4kMmfje4YyDH
jgBzfymiu1nDWgQSJnWWCRV+RnT1OHsrQm+8Y4pMASb4dSobU9q7aXrwuVaSbuNF
qyALay+A1ZY/RmxEF9PsmS2e08OPnGxtlZc/h69udrx5E17WMN8KK3A8A6zAKDp5
xVDOBURHJoujQgLrSQLZHrSr/GhWTT6Y/aO7wJz5h9AK3O31COtbSoEVpv6z1rzT
Je7TVmXmGJE40+SAP9/k0vu7TnLgBAVJ38TlpTXqkxwSqdcqQOgRYl6MWS3JRVJC
r3uVLqxpAgMBAAECggEARciPKygF6L4mJyXpYDad4czVvnNU7QWSfWzG3QVPYLaM
tfILGs8ZBw9nubfRn/pZyr6Kiv+S/nLqyZCbu9gKf/25WtpyJnhU7EF5sxzxlON6
nDCfq0mPQGWsswXngDB6/GNSFd+o3xZ4TGix+Gif2X2PqfDEAsmybR37NAGJ2yzh
BBs0mzvWqxXXVkaJCe8M2P6VCaqOIEl0FRb/tOcP1kguQYOMh2/dPDOWQZApEZXA
OejQPveaywTc1ZmqOtWIIHHMPlNd+oayaUIsKGIz/D+KSsyjCwiV9sZ1BOye6bEd
Uw4C1COgVAEVC+4qYD/QZ3vy6smAvLTGWKRX61YMAQKBgQD5TojClmTOxZ1ihTtG
oD6PKmpKJz1fi3pt6X2FNW0RRefZfqx5m1DGFRuzEwREag65s79lTEUP3Y/D03Tz
7dfMMMiRdXLBC4fqq0b8Dlyhrylp0wgbJlKe003frM4UseZVN2JsrpaDfhzsmOsG
m6nFUx+Dimys8T3FvcB4B842SQKBgQDjC0tMr0UDhpV/OtBUmnHB/J/Bh5YI8zxs
fSH2UlwKC8omad8UCw0e9jOXcMoQ/Va0n9JXfRlOzBGxr/lUt+8xA3jq0nVWrzsB
rtHDEAxgYN9Ua4CpbGW91WnVd67oBzQHDb7E9H1jdv06KBGcciV1ubPAPW0HbPoY
QnZPJzhFIQKBgQDxoVNdveQgoFnFJjpoXmGj4sk368ZJN2dG5jn5BOocBrQLEgJa
rtVf1w+MxY6qPFzfUb7ckEqTcPupIebFkS1Jw7JxgPLi9akbIjxfig/vyVSLM7U0
kzUaqNReSR9H4ZDL4S0tBx3sfivMiP2p3u9xx/nQRTbFe9+SKzJDY9VSuQKBgQCr
f/yBEGOxJhgG4wY64e7L+WczaJeMay9ZQ6xDxDKB5CXunkpDeZWPramK20fHTZYR
GihorbZQLxWugp5zv/yNqXHM7uxzbinEO6l3DshKhOItgobNc3Pm0S4AcUdNPSOv
sFJJs+SDHX5qT5n98rsZEg0VSVDyKv8/E/UKFTYMAQKBgBa66F3msuNsOdmn23JT
CtByn0Rp+QjhxK03BlBy6WHsM2JCJW6V2TxvHkC0lIXx6QfEiZ7HTNFk9OXzO++i
GPQq9sKwZOICY3fu3rnEZIOFLTa1eqzLh9f2PftxnZG0SME9Mgmp4SYLLN7oV0UY
lEpI1sA6tlO+xGNwY7+aBaG0
-----END PRIVATE KEY-----

View File

@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDIzCCAgugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAxMSAwHgYDVQQDDBdUTFNH
ZW5TZWxmU2lnbmVkdFJvb3RDQTENMAsGA1UEBwwEJCQkJDAeFw0xOTA1MjgxMTM5
NTVaFw0yOTA1MjUxMTM5NTVaMCIxDzANBgNVBAMMBmZvY2tlcjEPMA0GA1UECgwG
Y2xpZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAygvU5TZhn127
pF4vU+GGUJ23g/oZcUStAmZJOm3f5WnUIsRCW8y+jA9G12Oav4Ntf90ctedWUAFk
C0dpWSw+951StA7TnBzZYUCnzhXf4IOstG86LdZZPlJMUlRB7S2C2p493WFtygnG
+6YSL38wC3O1EFImm8XJQ5mAX1EcN8YVWsKxeyIHn1T0Ql6HQ9Ij01k6CxWaRo8M
mzn80aMwCg06VsZB6WcYZKxS3Pc52xfYg0Mes31gO9TFHQORjvsRKRRW0aDIEFMq
7s2n/OkdKV5KMye8j0Yy86lyzJGgVtddidO0yfPS1KoFrS/pQDDwkAy2RG3O36pl
fib/zvYjAQIDAQABo1UwUzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFoDATBgNVHSUE
DDAKBggrBgEFBQcDAjAkBgNVHREEHTAbggZmb2NrZXKCBmZvY2tlcoIJbG9jYWxo
b3N0MA0GCSqGSIb3DQEBCwUAA4IBAQCq19cxFMhe2zhF8A8mccishK2QFH5fq5Kb
BRFFm5YoK/6YQU0JKyVC5jTLm1KvMdHjaT1s73znJTydOmy42CjAoLE8yIxZRZ6C
Txc+JP+dmBNQFLaldiiAxU58VbmM45ulbukrUmyA4V0M5REOxSdqfMOAltKIBHvO
PrRT2xDg2JIiTdKQngRO7rhPZw8Lwb6IhXju6SyEyRtNW5hkyghMYFdKrL/SmBB7
3gOaX/hqNvW3d8bzD7CrLxp04c4Ve7D3IrLYXzW1bgV4isLa5I0NPx91MTi26e1Z
1WpHt2VQIXO/z80ms4QTdNLJyfC48VB9jOvjm+ffjdGGq3ShZ8Wx
-----END CERTIFICATE-----

Binary file not shown.

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAygvU5TZhn127pF4vU+GGUJ23g/oZcUStAmZJOm3f5WnUIsRC
W8y+jA9G12Oav4Ntf90ctedWUAFkC0dpWSw+951StA7TnBzZYUCnzhXf4IOstG86
LdZZPlJMUlRB7S2C2p493WFtygnG+6YSL38wC3O1EFImm8XJQ5mAX1EcN8YVWsKx
eyIHn1T0Ql6HQ9Ij01k6CxWaRo8Mmzn80aMwCg06VsZB6WcYZKxS3Pc52xfYg0Me
s31gO9TFHQORjvsRKRRW0aDIEFMq7s2n/OkdKV5KMye8j0Yy86lyzJGgVtddidO0
yfPS1KoFrS/pQDDwkAy2RG3O36plfib/zvYjAQIDAQABAoIBAQCnEgGJR96RmUCA
OiGIiwQ1xTTqvPQs5UzqnwoOdqydV1VDKmZ04mjuB/PcR1C+7D6vbHdBM3n7ziqb
6QED68JlnoG0wk3Y2UInWP9pOk1VqYw154OEQ6qoDgVuTp31MZzyicc+OEJAvrT7
geenvtRLo/Ik/MlQJcy3SUcNilR7CKgwZVKZbLrMXEj9Oy4A9hjePA4EPuAqFL+6
g1FreIL/bOs/hLt10+WVRjTfxV+J5LpLxyOCEsCHiGcA5YgT3gytR5KcoR7hUi4n
8PAmwfg2PYKqe4abkPguyMFxP+q39AAd1T26zt9dqI31TcLcmrubJbsJoU/hk+dO
PnAXehXBAoGBAO6nvO4FGf34F1Pq58hXsadN39Jyf7Xg/dRh/qHilTYCATIilxIZ
1TqmOcbKmQdT4p3uutU3HKVyN734D4duDK9rM76NIJxUJOAylEhRYGSHxKVdxj6v
nsKuQb73EOX5mxfVXkO+w3bSByYtsS0Zq27v9oGE2N13ETg8BbgP7NCjAoGBANi6
+HJdxbs7DD7LY36ejytTHNVEBc9XowLKL5VdgpvRP+g/v6ZZ0Hh+rNlwzGabvxKY
J1E6Noq+YoiTBMbQtWO6m2/PjlN68pVwayUOibVrAIvHGqpIc7jVAjF7QAxCVXqa
vDVVM2kG6DQV7PjezfOnCLkY8DPVHik+BXk5qOQLAoGACgoqa4Txa/q02IXoTEhM
I/KluM+ySa92XinlMWA70LLS5A4Kdut5SedWROOe/mzr+qLhXzjbTqZ4a9h0psjd
Zb/HxHthZNIxXvEhxc0OlgwUHLTOMzLmJeB4yZTRNCuE98K1HXp39JavUE7ZxkDv
MlKL9zTkfqSUp932i6C34KsCgYBK7glrcOQl4TpQk3zoj+Urs2ZqjUP89W2UT1a4
K0Y2nNedcjzORIsAvbsAyjDA4OPkh9pACQJGYaArW7jxC8NKoX+P3pB0aDNqWx2Q
CECwCjh8GvArIzVvF6XUeaohEuX+p3Sec8B8dTjemR3+xPkrXfp0FB0nrmzpEVpP
GRI9FQKBgQCeBTw2VrLaAwLNlYeP9TfGwHmID7a8PFE4Atqgm0w7hoF2ABp1tVs0
U6i2T8ue3fuBPWGh8BJX4EPP0DBbmsSLti+kTKTaDwsW0nZ+yuos3LgP3BOx8fnJ
4xEZM+nh0qEwRny+nT0u0QJ3jwDOMFRPIVj7Vrf6tWJ0sNi8WUpAbg==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDZTCCAk2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAxMSAwHgYDVQQDDBdUTFNH
ZW5TZWxmU2lnbmVkdFJvb3RDQTENMAsGA1UEBwwEJCQkJDAeFw0xOTA1MjgxMTM5
NTRaFw0yOTA1MjUxMTM5NTRaMCIxDzANBgNVBAMMBmZvY2tlcjEPMA0GA1UECgwG
c2VydmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gs+lVgbg0Xg
Hd9Bj9sR1qqsBh9YzbccoN15ZLelYo0JCMGUq1jqrzOhjlffPA7iz6hon9hJVjps
MJTdIjutDKtP2y4BSN5P/tJ04cATGdDaOKAQztRY/gDVhUl2ZL8tZcfH0yuJ91AZ
pj7xZqGN12UDsLuiplevkBST5NBclks6lXK/ZyaUwHTXiB8my5BsMk8k97n8UfBo
x22jGT20LffzoEzA2Z85qUgyBVGmMG7C/uotvyqykjm3MP+Qdd/JaajnDCPxdQst
0olJwa2XIf9oslYFBo+R0wGVKMoa3fxWMlwh+43VOi1wsN9x6AdhmZvVMSCJ3MnB
52PgIkHU6wIDAQABo4GWMIGTMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMBMGA1Ud
JQQMMAoGCCsGAQUFBwMBMCQGA1UdEQQdMBuCBmZvY2tlcoIGZm9ja2Vygglsb2Nh
bGhvc3QwHQYDVR0OBBYEFNQf86rQEpzfJ1cpl9Y/P0H5S4RvMB8GA1UdIwQYMBaA
FObi7eibvs3eFS7c2SJux/dse0jfMA0GCSqGSIb3DQEBCwUAA4IBAQBaGzNihsml
vJTAewEmHopgK6CTPoXqk4x/ufRQx6AswgaroXACGCCyKqvZ6X4Xr89PF0TZF4Lu
q6sm9HYgVGZRUy2wlTjOCpgg/ObtfeWlfF89bcWn2RZKgca+N4CmA/t+3px7TY29
3uYXRHU6wWKUVtSHLYU3VeVv0LDwZ9vslm3S2FVziZmjU7y85Ikm9ZweknU/+Su0
aeo+um3v+/JUbnLJqwkNVg648NVmTlVi0NFVnsaC2R4tLTjh4MJrI/A1CL3hyqYd
08uSAsn/6uZZgyAri9qpjdqou8wTPvlqwHdPfkMve4K9EnPox3ys3nP1Cv15Ldmi
zUZ6LFLwhqB8
-----END CERTIFICATE-----

Binary file not shown.

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA2gs+lVgbg0XgHd9Bj9sR1qqsBh9YzbccoN15ZLelYo0JCMGU
q1jqrzOhjlffPA7iz6hon9hJVjpsMJTdIjutDKtP2y4BSN5P/tJ04cATGdDaOKAQ
ztRY/gDVhUl2ZL8tZcfH0yuJ91AZpj7xZqGN12UDsLuiplevkBST5NBclks6lXK/
ZyaUwHTXiB8my5BsMk8k97n8UfBox22jGT20LffzoEzA2Z85qUgyBVGmMG7C/uot
vyqykjm3MP+Qdd/JaajnDCPxdQst0olJwa2XIf9oslYFBo+R0wGVKMoa3fxWMlwh
+43VOi1wsN9x6AdhmZvVMSCJ3MnB52PgIkHU6wIDAQABAoIBAHUFlegHKnTwupCt
sn0ngNJqNPrwNfPqM6YuVylz2oIi2VdmtYikpweyuSExDfEouBfk9YncRbfOkSQd
sPTffEeRZcFnVm8qSVqkzvAd6uJvEb9UQNEQbFaeUfo/7Bez9wRqDVfLRTeDONDd
dSe0yvBwGWPvwCJwaxvzv1ANd7N83I7JWajZrBhIWdgu5Tq2E5m8beFxBVvVOdNX
s7hBdqqPf2SMQqDIw5/NIUuKc4dqBsnikEq9oSD9ueghDxRuNEYfsqk+31L6DpOr
CGIRekyFn+J0HDc2WyNG60GadSrUUhrV3XxT8+bRGYahkVAK9OazeD1/phHA/87O
scWGY8kCgYEA+aPORKSye5xgreEOYYQ7Xv1KqUadxj9X6MkUbFzDnLE3rrGbdyuy
L5L23kdIU5bsgQtSfLSAWvAT/PxmUvoKHQKL9TOljCnUYaHJo5E75AA4+XG2Tc8V
w93TFq8XBcGFzGsUC2HYSxRGTUmCV9LIRk8P7mpaUgcLQ2nX4tk1oR0CgYEA35ld
UtJxCNDmJBpGmRZtUo5jPgYOWtJnbp23wjQaFYlbG759pZyFSLwY+HA2F03iFRaz
VzBPNErs10EWovvFToKcWIdLA5GsL3nRhF2+z43BtxxR2PMGwtE7zzl0uxkl2fDM
G3JFpgS03VDK/1wgxWFpiKG6fvLIuStoTpFit6cCgYEAv59ve914a84ToCT7Jvub
n0SKhPmBrmV9E2EWXj+un56hAWWv0oAmHMKQ4PqSmCdnj36jaLodNLDIhw8vdE4e
aTpFOIjWcIrDTdYks3uOH2vUUBVrPLrTGDA0EluALpjoHYusLTiEEM2VUUo11Tgl
J2MU9YuJnSFvEeYzIxxcQDkCgYAGGa0OIWesEeb1fTIH4zDAW9ohSxEBMVRZFDx7
M+iyRbkSnLPY3NhWD6uuu4D+ScWtRZ1G965xgsnLZZ80eyH67l1NnQNS6ZqFARHS
Rqx6BSgP0tn4zUiV8Bdto+enYxxBQeyPoyJ7UQ2OLDIdnWnXeLzkWWU5KW6IfsKt
whGraQKBgQDDq0wYR7jqPuiM9ptB7Jc6odZrpBJftIyfKzw3CSeeMbPZujvR6gl3
32uTsZjlWNCy9TRwvVdbnzFJx5NTZmbUS3jupk3L/Je+TURGoxs2NGfSc9ldfQmA
FEtUyhEHWPkGJTjhE1sRh5LSV3aj0wHd1Qd40sOX16wDLZT8AFz09g==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,10 @@
[
{server, [
{certfile, "/etc/rabbitmq/ssl/server_certificate.pem"},
{keyfile, "/etc/rabbitmq/ssl/server_key.pem"},
{secure_renegotiate, true}
]},
{client, [
{secure_renegotiate, true}
]}
].

View File

@ -114,7 +114,7 @@ dep_cowboy = hex 2.6.1
dep_cowlib = hex 2.7.0
dep_jsx = hex 2.9.0
dep_lager = hex 3.6.10
dep_prometheus = git https://github.com/deadtrickster/prometheus.erl v4.3.0
dep_prometheus = hex 4.4.0
dep_ra = git https://github.com/rabbitmq/ra.git master
dep_ranch = hex 1.7.1
dep_recon = hex 2.5.0

View File

@ -117,10 +117,12 @@
{2, erlang_net_ticktime_seconds, gauge, "Inter-node heartbeat interval in seconds", net_ticktime}
]},
{node_node_metrics, [
{2, peer_node_bytes_in, counter, "Bytes received from peer node", recv_bytes},
{2, peer_node_bytes_out, counter, "Bytes sent to peer node", send_bytes}
]},
% These metrics are captured in Erlang Distribution collector, built-into prometheus.erl
% https://github.com/deadtrickster/prometheus.erl/pull/92
% {node_node_metrics, [
% {2, peer_node_bytes_in, counter, "Bytes received from peer node", recv_bytes},
% {2, peer_node_bytes_out, counter, "Bytes sent to peer node", send_bytes}
% ]},
{node_persister_metrics, [
{2, io_read, counter, "I/O read operations", io_read_count},

View File

@ -166,7 +166,6 @@ metrics_test(Config) ->
?assertEqual(match, re:run(Body, "rabbitmq_queue_messages_published", [{capture, none}])),
?assertEqual(match, re:run(Body, "rabbitmq_file_descriptors_open", [{capture, none}])),
?assertEqual(match, re:run(Body, "rabbitmq_file_descriptors_open_limit", [{capture, none}])),
?assertEqual(match, re:run(Body, "rabbitmq_peer_node_bytes_in", [{capture, none}])),
?assertEqual(match, re:run(Body, "rabbitmq_io_read", [{capture, none}])),
?assertEqual(match, re:run(Body, "rabbitmq_queue_messages_ready", [{capture, none}])),
?assertEqual(match, re:run(Body, "rabbitmq_queue_consumers", [{capture, none}])),