Merge pull request #51 from rabbitmq/add-zdbbl-metric-demo

Add test & update Grafana dashboard for Erlang distribution buffer busy limit, a.k.a. zdbbl
This commit is contained in:
Gerhard Lazu 2020-06-24 16:46:28 +01:00 committed by GitHub
commit 3783d67230
3 changed files with 11 additions and 4 deletions

View File

@ -497,7 +497,7 @@
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "Data currently buffered in the output queue of the distribution link\n\nAny values above the 64MB threshold hint to an overloaded distribution\n\nBy default, RabbitMQ sets an upper limit of 128MB for the distribution buffer\n\n* [erlang/otp#2270](https://github.com/erlang/otp/pull/2270)\n* [erl +zdbbl](http://erlang.org/doc/man/erl.html#+zdbbl)\n",
"description": "Data currently buffered in the output queue of the distribution link.\n\nAny values above the 64MB threshold hint to an overloaded distribution. This applies to the default `zdbbl` value in RabbitMQ, which is 128MB.\n\n- [RabbitMQ Runtime Tuning - zdbbl](https://www.rabbitmq.com/runtime.html#distribution-buffer)\n- [erl +zdbbl](http://erlang.org/doc/man/erl.html#+zdbbl)",
"fill": 0,
"fillGradient": 0,
"gridPos": {
@ -586,7 +586,7 @@
"steppedLine": false,
"targets": [
{
"expr": "erlang_vm_dist_node_queue_size * on(instance) group_left(rabbitmq_node, rabbitmq_cluster) rabbitmq_identity_info{rabbitmq_cluster=\"$rabbitmq_cluster\"}",
"expr": "erlang_vm_dist_node_queue_size_bytes * on(instance) group_left(rabbitmq_node, rabbitmq_cluster) rabbitmq_identity_info{rabbitmq_cluster=\"$rabbitmq_cluster\"}",
"format": "time_series",
"interval": "",
"intervalFactor": 1,

View File

@ -218,6 +218,7 @@
| erlang_vm_dist_proc_reductions | The number of reductions executed by the process. |
| erlang_vm_dist_proc_status | The current status of the distribution process. The status is represented as a numerical value where `exiting=1', `suspended=2', `runnable=3', `garbage_collecting=4', `running=5' and `waiting=6'. |
| erlang_vm_dist_node_state | The current state of the distribution link. The state is represented as a numerical value where `pending=1', `up_pending=2' and `up=3'. |
| erlang_vm_dist_node_queue_size_bytes | The number of bytes in the output distribution queue. This queue sits between the Erlang code and the port driver. |
| erlang_vm_memory_atom_bytes_total | The total amount of memory currently allocated for atoms. This memory is part of the memory presented as system memory. |
| erlang_vm_memory_bytes_total | The total amount of memory currently allocated. This is the same as the sum of the memory size for processes and system. |
| erlang_vm_memory_dets_tables | Erlang VM DETS Tables count. |

View File

@ -39,10 +39,12 @@ groups() ->
{config_path, [], generic_tests()},
{config_port, [], generic_tests()},
{aggregated_metrics, [], [
aggregated_metrics_test
aggregated_metrics_test,
specific_erlang_metrics_present_test
]},
{per_object_metrics, [], [
per_object_metrics_test
per_object_metrics_test,
specific_erlang_metrics_present_test
]},
{commercial, [], [
build_info_product_test
@ -269,6 +271,10 @@ identity_info_test(Config) ->
?assertEqual(match, re:run(Body, "rabbitmq_node=", [{capture, none}])),
?assertEqual(match, re:run(Body, "rabbitmq_cluster=", [{capture, none}])).
specific_erlang_metrics_present_test(Config) ->
{_Headers, Body} = http_get_with_pal(Config, [], 200),
?assertEqual(match, re:run(Body, "^erlang_vm_dist_node_queue_size_bytes{", [{capture, none}, multiline])).
http_get(Config, ReqHeaders, CodeExp) ->
Path = proplists:get_value(prometheus_path, Config, "/metrics"),
Port = proplists:get_value(prometheus_port, Config, 15692),