summaryrefslogtreecommitdiff
path: root/deps/rabbitmq_management_agent
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2018-10-31 19:50:06 +0300
committerMichael Klishin <mklishin@pivotal.io>2018-10-31 19:50:06 +0300
commitc5d8a6dd7fa8d7cf6d7eeab90ccc17368be03f83 (patch)
treeb0b867613d364e2f3b2c2848929f309432120a65 /deps/rabbitmq_management_agent
parent652e42298c6e69ec5e4c0a5f51c0c93dcf0523d7 (diff)
parent09b0e90c98ac6b5e6666c38cf47948b725aafe83 (diff)
downloadrabbitmq-server-git-c5d8a6dd7fa8d7cf6d7eeab90ccc17368be03f83.tar.gz
Merge branch 'master' into serialise-decimal
Diffstat (limited to 'deps/rabbitmq_management_agent')
-rw-r--r--deps/rabbitmq_management_agent/rabbitmq-components.mk3
-rw-r--r--deps/rabbitmq_management_agent/src/rabbit_mgmt_db_handler.erl1
-rw-r--r--deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl31
-rw-r--r--deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl6
4 files changed, 32 insertions, 9 deletions
diff --git a/deps/rabbitmq_management_agent/rabbitmq-components.mk b/deps/rabbitmq_management_agent/rabbitmq-components.mk
index bf47b3bec8..b440169d0d 100644
--- a/deps/rabbitmq_management_agent/rabbitmq-components.mk
+++ b/deps/rabbitmq_management_agent/rabbitmq-components.mk
@@ -40,7 +40,6 @@ endif
dep_amqp_client = git_rmq rabbitmq-erlang-client $(current_rmq_ref) $(base_rmq_ref) master
dep_amqp10_client = git_rmq rabbitmq-amqp1.0-client $(current_rmq_ref) $(base_rmq_ref) master
dep_amqp10_common = git_rmq rabbitmq-amqp1.0-common $(current_rmq_ref) $(base_rmq_ref) master
-dep_ra = git_rmq ra $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbit = git_rmq rabbitmq-server $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbit_common = git_rmq rabbitmq-common $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_amqp1_0 = git_rmq rabbitmq-amqp1.0 $(current_rmq_ref) $(base_rmq_ref) master
@@ -115,6 +114,7 @@ dep_cowboy = hex 2.4.0
dep_cowlib = hex 2.3.0
dep_jsx = hex 2.9.0
dep_lager = hex 3.6.5
+dep_ra = git https://github.com/rabbitmq/ra.git master
dep_ranch = hex 1.6.2
dep_ranch_proxy_protocol = hex 2.1.1
dep_recon = hex 2.3.6
@@ -124,7 +124,6 @@ dep_sockjs = git https://github.com/rabbitmq/sockjs-erlang.git 405990ea62353d98d
RABBITMQ_COMPONENTS = amqp_client \
amqp10_common \
amqp10_client \
- ra \
rabbit \
rabbit_common \
rabbitmq_amqp1_0 \
diff --git a/deps/rabbitmq_management_agent/src/rabbit_mgmt_db_handler.erl b/deps/rabbitmq_management_agent/src/rabbit_mgmt_db_handler.erl
index 0240c2386a..2e2ce3015e 100644
--- a/deps/rabbitmq_management_agent/src/rabbit_mgmt_db_handler.erl
+++ b/deps/rabbitmq_management_agent/src/rabbit_mgmt_db_handler.erl
@@ -78,7 +78,6 @@ ensure_statistics_enabled() ->
{_, _} ->
ok
end,
- rabbit:force_event_refresh(erlang:make_ref()),
ok.
%%----------------------------------------------------------------------------
diff --git a/deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl b/deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl
index d3f485cfc7..1c4a79f3e5 100644
--- a/deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl
+++ b/deps/rabbitmq_management_agent/src/rabbit_mgmt_external_stats.erl
@@ -42,7 +42,7 @@
rates_mode, uptime, run_queue, processors, exchange_types,
auth_mechanisms, applications, contexts, log_files,
db_dir, config_files, net_ticktime, enabled_plugins,
- mem_calculation_strategy]).
+ mem_calculation_strategy, ra_open_file_metrics]).
%%--------------------------------------------------------------------
@@ -230,7 +230,22 @@ i(gc_bytes_reclaimed, _State) ->
Words * erlang:system_info(wordsize);
i(context_switches, _State) ->
{Sw, 0} = erlang:statistics(context_switches),
- Sw.
+ Sw;
+i(ra_open_file_metrics, _State) ->
+ [{ra_log_wal, ra_metrics(ra_log_wal)},
+ {ra_log_segment_writer, ra_metrics(ra_log_segment_writer)}].
+
+ra_metrics(K) ->
+ try
+ case ets:lookup(ra_open_file_metrics, whereis(K)) of
+ [] -> 0;
+ [{_, C}] -> C
+ end
+ catch
+ error:badarg ->
+ %% On startup the mgmt might start before ra does
+ 0
+ end.
resource_alarm_set(Source) ->
lists:member({{resource_limit, Source, node()},[]},
@@ -340,7 +355,7 @@ format_mochiweb_option(_K, V) ->
init([]) ->
{ok, Interval} = application:get_env(rabbit, collect_statistics_interval),
State = #state{fd_total = file_handle_cache:ulimit(),
- fhc_stats = file_handle_cache_stats:get(),
+ fhc_stats = get_fhc_stats(),
node_owners = sets:new(),
interval = Interval},
%% We can update stats straight away as they need to be available
@@ -395,5 +410,13 @@ emit_node_node_stats(State = #state{node_owners = Owners}) ->
update_state(State0) ->
%% Store raw data, the average operation time is calculated during querying
%% from the accumulated total
- FHC = file_handle_cache_stats:get(),
+ FHC = get_fhc_stats(),
State0#state{fhc_stats = FHC}.
+
+get_fhc_stats() ->
+ dict:to_list(dict:merge(fun(_, V1, V2) -> V1 + V2 end,
+ dict:from_list(file_handle_cache_stats:get()),
+ dict:from_list(get_ra_io_metrics()))).
+
+get_ra_io_metrics() ->
+ lists:sort(ets:tab2list(ra_io_metrics)).
diff --git a/deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl b/deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl
index 76e8d0faf1..4bf3cdba6a 100644
--- a/deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl
+++ b/deps/rabbitmq_management_agent/src/rabbit_mgmt_format.erl
@@ -61,6 +61,8 @@ format_queue_stats({slave_pids, ''}) ->
[];
format_queue_stats({slave_pids, Pids}) ->
[{slave_nodes, [node(Pid) || Pid <- Pids]}];
+format_queue_stats({leader, Leader}) ->
+ [{node, Leader}];
format_queue_stats({synchronised_slave_pids, ''}) ->
[];
format_queue_stats({synchronised_slave_pids, Pids}) ->
@@ -380,7 +382,7 @@ queue(#amqqueue{name = Name,
exclusive_owner = ExclusiveOwner,
arguments = Arguments,
pid = Pid,
- state = State}) ->
+ state = State} = Q) ->
format(
[{name, Name},
{durable, Durable},
@@ -389,7 +391,7 @@ queue(#amqqueue{name = Name,
{owner_pid, ExclusiveOwner},
{arguments, Arguments},
{pid, Pid},
- {state, State}],
+ {state, State}] ++ rabbit_amqqueue:format(Q),
{fun format_exchange_and_queue/1, false}).
queue_state({syncing, Msgs}) -> [{state, syncing},