Commit Graph

205 Commits

Author SHA1 Message Date
Gerhard Lazu 931e07455e Extract metrics services into a separate docker-compose file
Add cadvisor & node-exporter & Docker metrics.
Inspired by https://github.com/stefanprodan/dockprom
There are no Grafana dashboards for these metrics yet. The dockprom ones
don't show any panels in Grafana 6.

[#165818813]
2019-05-30 13:53:02 +01:00
Gerhard Lazu 7b632674c9 Update Distribution & Overview dashboard tags 2019-05-30 09:37:24 +01:00
Gerhard Lazu 6e614301d0 Bump Grafana & Prometheus images to latest stable 2019-05-30 09:36:52 +01:00
Gerhard Lazu 21aa9e9e68 Awlays install Grafana plugins
Even though this slows down Grafana container startup, we need to ensure
that this plugin is present, otherwise the panels that track process
state won't work. This will be slow the first time the plugin is
downloaded, and slightly faster on subsequent runs.

[#166004512]
2019-05-30 09:35:12 +01:00
Gerhard Lazu 06bae443f6 Put more pressure on the distribution
This forces the tls_connection and tls_sender processes to be in
runnable & running states more often. waiting is the ideal state.

[#166004512]
2019-05-30 09:30:21 +01:00
Gerhard Lazu f06502ff5a Improve RabbitMQ Overview Grafana dashboard
* pin nodes to specific colours
* add message-related single-stats
* reshuffle rows
  * node metrics are most useful
  * queue, channel & connection churn are least useful
2019-05-29 18:21:25 +01:00
Gerhard Lazu 2645082738 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]
2019-05-29 18:19:09 +01:00
Gerhard Lazu c4f0105bad Fix invalid docker-compose
An empty environment is not allowed
2019-05-20 22:21:06 +01:00
Gerhard Lazu 4e81af4cfc Pin RabbitMQ nodes to colours in all Grafana panesl
Regex is greedy, need to look into non-greedy matching, especially for
Erlang Distribution metrics.

[#166004512]
2019-05-20 22:19:43 +01:00
Gerhard Lazu 6a6877cc8b Do not install Grafana plugins all the time
Even if the plugins are stored on a volume, updating them can be slow.
2019-05-20 22:19:02 +01:00
Gerhard Lazu 204f170e7e Bump Grafana, Prometheus & PerfTest versions to latest 2019-05-20 22:18:32 +01:00
Gerhard Lazu d01f96a9af Bump Erlang/OTP to 22.0.1 in Docker image
Picking up the latest 3.8.0 alpha while at it.

It's time to start stress-testing OTP 22 re docker-library/rabbitmq#336

[#166037004]
2019-05-20 21:43:01 +01:00
Gerhard Lazu d1460d5b44 Stress Erlang Distribution metrics on OTP 21
We (+@essen) have answered a bunch of questions (see the story) and
improved the metrics + dashboard in the process. Added some improvements
to the RabbitMQ Overview metrics as well.

[#166004104]
2019-05-20 21:41:27 +01:00
Gerhard Lazu 1f333ebed6 Display the number of Erlang Distribution links
[#166004104]
2019-05-20 10:12:22 +01:00
Gerhard Lazu 691af35dfb Mirror slow-consumer-persistent queue to all 3 nodes
This puts load on the distribution and makes the Erlang-Distribution
dashboard show an interesting behaviour in TCP sockets. @dcorbacho
thinks so too.

re deadtrickster/prometheus.erl#92

[#166004512]
2019-05-15 18:49:58 +01:00
Gerhard Lazu f9ce43677b Review metrics with @dcorbacho
[accepts #165831668]
2019-05-15 17:06:42 +01:00
Gerhard Lazu ebde2ff663 Default Erlang Distribution Grafana dashboard to 10 minutes
It's the same as RabbitMQ Overview
2019-05-15 17:05:07 +01:00
Gerhard Lazu 7652799e05 Add Grafana dashboard for Erlang Distribution
Just the first version, imperfect in many ways, but better than nothing.

[#166004512]
2019-05-14 16:17:04 +01:00
Gerhard Lazu 6272f30724 Missed get empty Grafana panel
[#165831668]
2019-05-09 17:38:34 +01:00
Gerhard Lazu c596efb58e Review all metrics to ETS mappings
Clarify descriptions, improve metric names, fix typos etc. Follow-up to
deadtrickster/prometheus_rabbitmq_exporter#75.

Helpful metric descriptions

* https://www.rabbitmq.com/monitoring.html
* https://docs.signalfx.com/en/latest/integrations/integrations-reference/integrations.rabbitmq.html
* https://github.com/rabbitmq/rabbitmq-common/blob/master/include/rabbit_core_metrics.hrl
* https://github.com/rabbitmq/rabbitmq-common/blob/master/src/rabbit_core_metrics.erl

Thanks for the pair-up @michaelklishin!

[finishes #165831668]
2019-05-09 17:25:17 +01:00
Gerhard Lazu 8186847754 Increase msg redelivered / s thresholds to 20 & 100 2019-05-07 16:29:57 +01:00
Gerhard Lazu 982b1c798d Force connection, channel & queue churn 2019-05-07 16:25:49 +01:00
Gerhard Lazu 5b7a2edc62 Add redelivered thresholds & make unroutable panels red
Warn at 2 redelivered msg/s & critical at 10 redelivered msg/s
2019-05-07 15:40:37 +01:00
Gerhard Lazu ceffc587a1 Add consumer that nacks messages every 0.5s
re rabbitmq/rabbitmq-perf-test#204
2019-05-07 15:40:31 +01:00
Gerhard Lazu d78cb66435 Fix basic.get metrics on Grafana dashboard
Use 1m instead of $__interval for rates that track metrics with slow
rate of change. Using $__interval will miss changes.

Stop rounding, it skews values.

All `basic.get` metrics are bad. The 0 threshold and the red colour for
all lines is hopefully enought to convey this.

re rabbitmq/rabbitmq-perf-test#203

[finishes #165852775]
2019-05-07 13:03:41 +01:00
Gerhard Lazu ce89fdbcd1 Use latest PerfTest, with consumer rate fix
rabbitmq/rabbitmq-perf-test#202
2019-05-02 17:58:39 +01:00
Gerhard Lazu 9d6708ebab Use full descriptions in titles
Otherwise it's really hard to know what we are looking at when expanding
panels.

Also, pin to colours. Otherwise, rabbit@rabbitmq1 metrics in one panel
will appear yellow, and green in another panel. This is a one-off
which doesn't scale, should be automated in some way. Grafana doesn't
support pinning colors to labels 🤔
2019-05-02 17:33:47 +01:00
Gerhard Lazu d44c0edf35 Fix rate interval for / s metrics
This explains why we want rate() instead of irate() and a 1m interval
for smaller changes & $__interval for higher ones:
https://utcc.utoronto.ca/~cks/space/blog/sysadmin/PrometheusRateVsIrate

[finishes #164374397]
2019-05-02 14:43:09 +01:00
Gerhard Lazu 7206cd31f1 Expose Erlang distribution port 2019-05-01 18:18:16 +01:00
Gerhard Lazu 3ec84b3bbd Add object churn panels
queue_created is not currently exported via rabbitmq_prometheus.

[#164374397]
2019-05-01 18:16:49 +01:00
Gerhard Lazu a2e6687162 Bump prometheus.erl to v4.3.0
This includes the global_labels feature introduced in deadtrickster/prometheus.erl#91

To test, run `docker-compose up` in docker dir, then navigate to
localhost:15692/metrics & localhost:3000/dashboards (admin:admin) to see
the Grafana RabbitMQ Overview dashboard.
2019-05-01 12:58:35 +01:00
Gerhard Lazu c664fdc5e1 Make use of variable message size
re rabbitmq/rabbitmq-perf-test#200
2019-04-29 17:51:42 +01:00
Gerhard Lazu 58a8e5a011 Add vhosts instead of exchanges in global counts
Add nodes, alarms & partitions to global counts. These are too important
to not show them. Need to discuss how to expose these via metrics.

[#164374397]
2019-04-29 09:49:01 +01:00
Gerhard Lazu a2500b4784 Add global counts to RabbitMQ Overview dashboard
[#164374397]
2019-04-25 19:12:14 +01:00
Gerhard Lazu 2a645a4d8c Make all rates vary, force messages to be read from disk
Set memory high watermark to 256MiB to force trigger the memory alarm,
as well as ensure messages get paged to disk (forces disk reads).

Make all legends display as table so that values are easier to see when
toggling them.
2019-04-25 19:11:45 +01:00
Gerhard Lazu ba302951b9 Make use of PerfTest variable rate
Thanks @acogoluegnes! rabbitmq/rabbitmq-perf-test#195
2019-04-25 16:10:14 +01:00
Gerhard Lazu eb25d3ed87 Explain better why some messages were returned vs dropped
rabbitmq/rabbitmq-server#1988
2019-04-25 14:49:37 +01:00
Gerhard Lazu ca995223d9 Add panel for dropped messages / s
Acceptance for rabbitmq/rabbitmq-server#1988
2019-04-25 14:18:32 +01:00
Gerhard Lazu fcf278a7a2 Wording improvements
Thanks @MarcialRosales!

[#164374751]
2019-04-25 11:48:03 +01:00
Gerhard Lazu 4e25ce69c9 Build Docker image based on latest alpha release
Bump Erlang to v21.3.6
2019-04-25 11:47:30 +01:00
Gerhard Lazu cded1500fb Add persistent messages panels, improve panel grouping
[finishes #164374751]
2019-04-24 21:38:13 +01:00
Gerhard Lazu 9c3bbe8c76 Display more message metrics, simulate different types of publishers/consumers
[#164374751]
2019-04-24 18:38:13 +01:00
Gerhard Lazu efe803617b Set demo-friendly memory & disk-space limits
Capture limits in thresholds. Even if they are static and somewhat
specific to this RabbitMQ deployment, it's better to have them when
demo-ing the end-to-end Prometheus/Grafana experience.

[#164374751]
2019-04-23 18:56:30 +01:00
Gerhard Lazu ced5ee74ed Bump to latest rabbitmq-prometheus Docker image 2019-04-23 18:56:04 +01:00
Gerhard Lazu 9f8852b0c1 Make RabbitMQ container fd limit better-suited for demos
1k feels right for a demo environment, where we want to simulate hitting
threshold limits.
2019-04-23 14:06:57 +01:00
Gerhard Lazu ec03866172 Publish messages as mandatory, with publisher confirms
This lights up `Published confirmed / s` Grafana panel.

To light up `Published unroutable / s`, unbind all queues from the
direct exchange.

[#164374751]
2019-04-23 13:48:40 +01:00
Gerhard Lazu f3cae13394 Bump Docker image version used in docker-compose 2019-04-23 13:44:14 +01:00
Gerhard Lazu 0441fae092 Lower docker-compose file version
Not using anything that requires Docker 18.06, dropping to 18.02.
Thanks @MarcialRosales!
2019-04-23 13:42:05 +01:00
Gerhard Lazu 8ec633926b Use nc to check that all nodes are listening on AMQP
Related to rabbitmq/rabbitmq-perf-test#191
2019-04-23 13:41:15 +01:00
Gerhard Lazu dbb1bee383 Build Docker image with the latest management & management_agent
This has support for disabling metrics_collector, as captured in
rabbitmq/rabbitmq-management-agent#78 & rabbitmq/rabbitmq-management#691

Since we want management to be enabled, this doesn't help our use-case,
but this option is perfect for users that want metrics, but don't want
to pay the overhead of Management - especially metric aggregations.

[#164376052]
2019-04-22 17:47:22 +01:00
Gerhard Lazu 789f6c041e Preconfigure Grafana on boot
After running `docker-compose up`, open Grafana via
http://localhost:3000 and login with user admin & password admin. After
logging in, you will see a RabbitMQ Overview dashboard pre-loaded (/・0・)

Thanks @cirocosta! https://github.com/cirocosta/sample-grafana

cc @MarcialRosales

[finishes #164374321]
2019-04-16 15:48:44 +01:00
Gerhard Lazu 5329f9f836 Increse PerfTest publish rate to 10 msg/s per publisher
Wanted to put a bit more load on the RabbitMQ nodes
2019-04-16 15:48:44 +01:00
Gerhard Lazu 0a9a085e91 Make PerfTest wait longer for RabbitMQ nodes to start
If all 3 RabbitMQ nodes take 15s to start, PerfTest container will crash
and not be auto-restarted.
2019-04-16 15:48:43 +01:00
Gerhard Lazu e8e224cc57 Expose management & prometheus ports for all RabbitMQ nodes
* rabbitmq1 - http://localhost:15672 & http://localhost:15692/metrics
* rabbitmq2 - http://localhost:25672 & http://localhost:25692/metrics
* rabbitmq3 - http://localhost:35672 & http://localhost:35692/metrics

[#164374321]
2019-04-16 15:48:43 +01:00
Gerhard Lazu d61c58d0d6 Capture a 3-node RabbitMQ & Prometheus + Grafana stack
cd docker && docker-compose up

[#164374321]
2019-04-15 19:18:45 +01:00