diff options
| author | Michael Klishin <mklishin@pivotal.io> | 2018-10-31 19:50:06 +0300 |
|---|---|---|
| committer | Michael Klishin <mklishin@pivotal.io> | 2018-10-31 19:50:06 +0300 |
| commit | c5d8a6dd7fa8d7cf6d7eeab90ccc17368be03f83 (patch) | |
| tree | b0b867613d364e2f3b2c2848929f309432120a65 /deps/rabbitmq_management_agent | |
| parent | 652e42298c6e69ec5e4c0a5f51c0c93dcf0523d7 (diff) | |
| parent | 09b0e90c98ac6b5e6666c38cf47948b725aafe83 (diff) | |
| download | rabbitmq-server-git-c5d8a6dd7fa8d7cf6d7eeab90ccc17368be03f83.tar.gz | |
Merge branch 'master' into serialise-decimal
Diffstat (limited to 'deps/rabbitmq_management_agent')
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}, |
