mirror of
https://github.com/valitydev/riak_test.git
synced 2024-11-06 16:45:29 +00:00
930 lines
35 KiB
Erlang
930 lines
35 KiB
Erlang
%% -------------------------------------------------------------------
|
|
%%
|
|
%% Copyright (c) 2012 Basho Technologies, Inc.
|
|
%%
|
|
%% This file is provided to you under the Apache License,
|
|
%% Version 2.0 (the "License"); you may not use this file
|
|
%% except in compliance with the License. You may obtain
|
|
%% a copy of the License at
|
|
%%
|
|
%% http://www.apache.org/licenses/LICENSE-2.0
|
|
%%
|
|
%% Unless required by applicable law or agreed to in writing,
|
|
%% software distributed under the License is distributed on an
|
|
%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
%% KIND, either express or implied. See the License for the
|
|
%% specific language governing permissions and limitations
|
|
%% under the License.
|
|
%%
|
|
%% -------------------------------------------------------------------
|
|
-module(verify_riak_stats).
|
|
-behavior(riak_test).
|
|
-export([confirm/0]).
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
-define(CTYPE, <<"counters">>).
|
|
-define(STYPE, <<"sets">>).
|
|
-define(MTYPE, <<"maps">>).
|
|
-define(TYPES, [{?CTYPE, counter},
|
|
{?STYPE, set},
|
|
{?MTYPE, map}]).
|
|
-define(CONF, [
|
|
{yokozuna,
|
|
[{enabled, true}]
|
|
}]).
|
|
|
|
%% You should have curl installed locally to do this.
|
|
confirm() ->
|
|
Nodes = rt:deploy_nodes(1, ?CONF),
|
|
[Node1] = Nodes,
|
|
verify_dt_converge:create_bucket_types(Nodes, ?TYPES),
|
|
?assertEqual(ok, rt:wait_until_nodes_ready([Node1])),
|
|
Stats1 = get_stats(Node1),
|
|
|
|
lager:info("Verifying that all expected stats keys are present from the HTTP endpoint"),
|
|
ok = verify_stats_keys_complete(Node1, Stats1),
|
|
|
|
AdminStats1 = get_console_stats(Node1),
|
|
lager:info("Verifying that the stats keys in riak-admin status and HTTP match"),
|
|
ok = compare_http_and_console_stats(Stats1, AdminStats1),
|
|
|
|
%% make sure a set of stats have valid values
|
|
lager:info("Verifying that the system and ring stats have valid values"),
|
|
verify_nz(Stats1,[<<"cpu_nprocs">>,
|
|
<<"mem_total">>,
|
|
<<"mem_allocated">>,
|
|
<<"sys_logical_processors">>,
|
|
<<"sys_process_count">>,
|
|
<<"sys_thread_pool_size">>,
|
|
<<"sys_wordsize">>,
|
|
<<"ring_num_partitions">>,
|
|
<<"ring_creation_size">>,
|
|
<<"memory_total">>,
|
|
<<"memory_processes">>,
|
|
<<"memory_processes_used">>,
|
|
<<"memory_system">>,
|
|
<<"memory_atom">>,
|
|
<<"memory_atom_used">>,
|
|
<<"memory_binary">>,
|
|
<<"memory_code">>,
|
|
<<"memory_ets">>]),
|
|
|
|
|
|
lager:info("perform 5 x PUT and a GET to increment the stats"),
|
|
lager:info("as the stat system only does calcs for > 5 readings"),
|
|
|
|
C = rt:httpc(Node1),
|
|
[rt:httpc_write(C, <<"systest">>, <<X>>, <<"12345">>) || X <- lists:seq(1, 5)],
|
|
[rt:httpc_read(C, <<"systest">>, <<X>>) || X <- lists:seq(1, 5)],
|
|
|
|
Stats2 = get_stats(Node1),
|
|
|
|
%% make sure the stats that were supposed to increment did
|
|
verify_inc(Stats1, Stats2, [{<<"node_gets">>, 10},
|
|
{<<"node_puts">>, 5},
|
|
{<<"node_gets_total">>, 10},
|
|
{<<"node_puts_total">>, 5},
|
|
{<<"vnode_gets">>, 30},
|
|
{<<"vnode_puts">>, 15},
|
|
{<<"vnode_gets_total">>, 30},
|
|
{<<"vnode_puts_total">>, 15}]),
|
|
|
|
%% verify that fsm times were tallied
|
|
verify_nz(Stats2, [<<"node_get_fsm_time_mean">>,
|
|
<<"node_get_fsm_time_median">>,
|
|
<<"node_get_fsm_time_95">>,
|
|
<<"node_get_fsm_time_99">>,
|
|
<<"node_get_fsm_time_100">>,
|
|
<<"node_put_fsm_time_mean">>,
|
|
<<"node_put_fsm_time_median">>,
|
|
<<"node_put_fsm_time_95">>,
|
|
<<"node_put_fsm_time_99">>,
|
|
<<"node_put_fsm_time_100">>]),
|
|
|
|
|
|
lager:info("Make PBC Connection"),
|
|
Pid = rt:pbc(Node1),
|
|
|
|
Stats3 = get_stats(Node1),
|
|
|
|
rt:systest_write(Node1, 1),
|
|
%% make sure the stats that were supposed to increment did
|
|
verify_inc(Stats2, Stats3, [{<<"pbc_connects_total">>, 1},
|
|
{<<"pbc_connects">>, 1},
|
|
{<<"pbc_active">>, 1}]),
|
|
|
|
|
|
|
|
lager:info("Force Read Repair"),
|
|
rt:pbc_write(Pid, <<"testbucket">>, <<"1">>, <<"blah!">>),
|
|
rt:pbc_set_bucket_prop(Pid, <<"testbucket">>, [{n_val, 4}]),
|
|
|
|
Stats4 = get_stats(Node1),
|
|
verify_inc(Stats3, Stats4, [{<<"read_repairs_total">>, 0},
|
|
{<<"read_repairs">>, 0}]),
|
|
|
|
_Value = rt:pbc_read(Pid, <<"testbucket">>, <<"1">>),
|
|
|
|
Stats5 = get_stats(Node1),
|
|
|
|
verify_inc(Stats3, Stats5, [{<<"read_repairs_total">>, 1},
|
|
{<<"read_repairs">>, 1}]),
|
|
|
|
_ = do_datatypes(Pid),
|
|
|
|
lager:info("Verifying datatype stats are non-zero."),
|
|
|
|
Stats6 = get_stats(Node1),
|
|
[
|
|
begin
|
|
lager:info("~s: ~p (expected non-zero)", [S, proplists:get_value(S, Stats6)]),
|
|
verify_nz(Stats6, [S])
|
|
end || S <- datatype_stats() ],
|
|
pass.
|
|
|
|
verify_inc(Prev, Props, Keys) ->
|
|
[begin
|
|
Old = proplists:get_value(Key, Prev, 0),
|
|
New = proplists:get_value(Key, Props, 0),
|
|
lager:info("~s: ~p -> ~p (expected ~p)", [Key, Old, New, Old + Inc]),
|
|
?assertEqual(New, (Old + Inc))
|
|
end || {Key, Inc} <- Keys].
|
|
|
|
verify_nz(Props, Keys) ->
|
|
[?assertNotEqual(proplists:get_value(Key,Props,0), 0) || Key <- Keys].
|
|
|
|
get_stats(Node) ->
|
|
timer:sleep(10000),
|
|
lager:info("Retrieving stats from node ~s", [Node]),
|
|
StatsCommand = io_lib:format("curl -s -S ~s/stats", [rt:http_url(Node)]),
|
|
lager:debug("Retrieving stats using command ~s", [StatsCommand]),
|
|
StatString = os:cmd(StatsCommand),
|
|
{struct, Stats} = mochijson2:decode(StatString),
|
|
%%lager:debug(StatString),
|
|
Stats.
|
|
|
|
get_console_stats(Node) ->
|
|
%% Problem: rt:admin(Node, Cmd) seems to drop parts of the output when
|
|
%% used for "riak-admin status" in 'rtdev'.
|
|
%% Temporary workaround: use os:cmd/1 when in 'rtdev' (needs some cheats
|
|
%% in order to find the right path etc.)
|
|
try
|
|
Stats =
|
|
case rt_config:get(rt_harness) of
|
|
rtdev ->
|
|
N = rtdev:node_id(Node),
|
|
Path = rtdev:relpath(rtdev:node_version(N)),
|
|
Cmd = rtdev:riak_admin_cmd(Path, N, ["status"]),
|
|
lager:info("Cmd = ~p~n", [Cmd]),
|
|
os:cmd(Cmd);
|
|
_ ->
|
|
rt:admin(Node, "status")
|
|
end,
|
|
[S || {_,_} = S <-
|
|
[list_to_tuple(re:split(L, " : ", []))
|
|
|| L <- tl(tl(string:tokens(Stats, "\n")))]]
|
|
catch
|
|
error:Reason ->
|
|
lager:info("riak-admin status ERROR: ~p~n~p~n",
|
|
[Reason, erlang:get_stacktrace()]),
|
|
[]
|
|
end.
|
|
|
|
compare_http_and_console_stats(Stats1, Stats2) ->
|
|
OnlyInHttp = [S || {K,_} = S <- Stats1,
|
|
not lists:keymember(K, 1, Stats2)],
|
|
OnlyInAdmin = [S || {K,_} = S <- Stats2,
|
|
not lists:keymember(K, 1, Stats1)],
|
|
maybe_log_stats_keys(OnlyInHttp, "Keys missing from riak-admin"),
|
|
maybe_log_stats_keys(OnlyInAdmin, "Keys missing from HTTP"),
|
|
?assertEqual([], OnlyInHttp),
|
|
?assertEqual([], OnlyInAdmin),
|
|
ok.
|
|
|
|
verify_stats_keys_complete(Node, Stats) ->
|
|
ActualKeys = proplists:get_keys(Stats),
|
|
ExpectedKeys = all_stats(Node),
|
|
MissingStatsKeys = diff_lists(ActualKeys, ExpectedKeys),
|
|
AdditionalStatsKeys = diff_lists(ExpectedKeys, ActualKeys),
|
|
maybe_log_stats_keys(MissingStatsKeys, "missing stats keys"),
|
|
maybe_log_stats_keys(AdditionalStatsKeys, "additional stats"),
|
|
?assertEqual({[],[]}, {MissingStatsKeys, AdditionalStatsKeys}),
|
|
ok.
|
|
|
|
diff_lists(List, ThatList) ->
|
|
lists:filter(fun(Element) -> not lists:member(Element, List) end, ThatList).
|
|
|
|
-spec maybe_log_stats_keys([binary()], string()) -> ok.
|
|
maybe_log_stats_keys(StatsKeys, _Description) when length(StatsKeys) == 0 ->
|
|
ok;
|
|
maybe_log_stats_keys(StatsKeys, Description) ->
|
|
lager:info("~s: ~s", [Description, pretty_print_stats_keys(StatsKeys)]).
|
|
|
|
-spec pretty_print_stats_keys([binary()]) -> string().
|
|
pretty_print_stats_keys(StatsKeys) ->
|
|
ConvertedStatsKeys = lists:map(fun(StatsKey) -> binary_to_list(StatsKey) end, StatsKeys),
|
|
string:join(ConvertedStatsKeys, ", ").
|
|
|
|
datatype_stats() ->
|
|
%% Merge stats are excluded because we likely never merge disjoint
|
|
%% copies on a single node after a single write each.
|
|
[ list_to_binary(Stat) ||
|
|
Stat <- [
|
|
%% "object_counter_merge"
|
|
%% ,"object_counter_merge_total"
|
|
%% ,"object_counter_merge_time_mean"
|
|
%% ,"object_counter_merge_time_median"
|
|
%% ,"object_counter_merge_time_95"
|
|
%% ,"object_counter_merge_time_99"
|
|
%% ,"object_counter_merge_time_100"
|
|
%% ,
|
|
"vnode_counter_update"
|
|
,"vnode_counter_update_total"
|
|
,"vnode_counter_update_time_mean"
|
|
,"vnode_counter_update_time_median"
|
|
,"vnode_counter_update_time_95"
|
|
,"vnode_counter_update_time_99"
|
|
,"vnode_counter_update_time_100"
|
|
%% ,"object_set_merge"
|
|
%% ,"object_set_merge_total"
|
|
%% ,"object_set_merge_time_mean"
|
|
%% ,"object_set_merge_time_median"
|
|
%% ,"object_set_merge_time_95"
|
|
%% ,"object_set_merge_time_99"
|
|
%% ,"object_set_merge_time_100"
|
|
,"vnode_set_update"
|
|
,"vnode_set_update_total"
|
|
,"vnode_set_update_time_mean"
|
|
,"vnode_set_update_time_median"
|
|
,"vnode_set_update_time_95"
|
|
,"vnode_set_update_time_99"
|
|
,"vnode_set_update_time_100"
|
|
%% ,"object_map_merge"
|
|
%% ,"object_map_merge_total"
|
|
%% ,"object_map_merge_time_mean"
|
|
%% ,"object_map_merge_time_median"
|
|
%% ,"object_map_merge_time_95"
|
|
%% ,"object_map_merge_time_99"
|
|
%% ,"object_map_merge_time_100"
|
|
,"vnode_map_update"
|
|
,"vnode_map_update_total"
|
|
,"vnode_map_update_time_mean"
|
|
,"vnode_map_update_time_median"
|
|
,"vnode_map_update_time_95"
|
|
,"vnode_map_update_time_99"
|
|
,"vnode_map_update_time_100"
|
|
,"node_gets_counter"
|
|
,"node_gets_counter_total"
|
|
,"node_get_fsm_counter_siblings_mean"
|
|
,"node_get_fsm_counter_siblings_median"
|
|
,"node_get_fsm_counter_siblings_95"
|
|
,"node_get_fsm_counter_siblings_99"
|
|
,"node_get_fsm_counter_siblings_100"
|
|
,"node_get_fsm_counter_objsize_mean"
|
|
,"node_get_fsm_counter_objsize_median"
|
|
,"node_get_fsm_counter_objsize_95"
|
|
,"node_get_fsm_counter_objsize_99"
|
|
,"node_get_fsm_counter_objsize_100"
|
|
,"node_get_fsm_counter_time_mean"
|
|
,"node_get_fsm_counter_time_median"
|
|
,"node_get_fsm_counter_time_95"
|
|
,"node_get_fsm_counter_time_99"
|
|
,"node_get_fsm_counter_time_100"
|
|
,"node_gets_set"
|
|
,"node_gets_set_total"
|
|
,"node_get_fsm_set_siblings_mean"
|
|
,"node_get_fsm_set_siblings_median"
|
|
,"node_get_fsm_set_siblings_95"
|
|
,"node_get_fsm_set_siblings_99"
|
|
,"node_get_fsm_set_siblings_100"
|
|
,"node_get_fsm_set_objsize_mean"
|
|
,"node_get_fsm_set_objsize_median"
|
|
,"node_get_fsm_set_objsize_95"
|
|
,"node_get_fsm_set_objsize_99"
|
|
,"node_get_fsm_set_objsize_100"
|
|
,"node_get_fsm_set_time_mean"
|
|
,"node_get_fsm_set_time_median"
|
|
,"node_get_fsm_set_time_95"
|
|
,"node_get_fsm_set_time_99"
|
|
,"node_get_fsm_set_time_100"
|
|
,"node_gets_map"
|
|
,"node_gets_map_total"
|
|
,"node_get_fsm_map_siblings_mean"
|
|
,"node_get_fsm_map_siblings_median"
|
|
,"node_get_fsm_map_siblings_95"
|
|
,"node_get_fsm_map_siblings_99"
|
|
,"node_get_fsm_map_siblings_100"
|
|
,"node_get_fsm_map_objsize_mean"
|
|
,"node_get_fsm_map_objsize_median"
|
|
,"node_get_fsm_map_objsize_95"
|
|
,"node_get_fsm_map_objsize_99"
|
|
,"node_get_fsm_map_objsize_100"
|
|
,"node_get_fsm_map_time_mean"
|
|
,"node_get_fsm_map_time_median"
|
|
,"node_get_fsm_map_time_95"
|
|
,"node_get_fsm_map_time_99"
|
|
,"node_get_fsm_map_time_100"
|
|
,"node_puts_counter"
|
|
,"node_puts_counter_total"
|
|
,"node_put_fsm_counter_time_mean"
|
|
,"node_put_fsm_counter_time_median"
|
|
,"node_put_fsm_counter_time_95"
|
|
,"node_put_fsm_counter_time_99"
|
|
,"node_put_fsm_counter_time_100"
|
|
,"node_puts_set"
|
|
,"node_puts_set_total"
|
|
,"node_put_fsm_set_time_mean"
|
|
,"node_put_fsm_set_time_median"
|
|
,"node_put_fsm_set_time_95"
|
|
,"node_put_fsm_set_time_99"
|
|
,"node_put_fsm_set_time_100"
|
|
,"node_puts_map"
|
|
,"node_puts_map_total"
|
|
,"node_put_fsm_map_time_mean"
|
|
,"node_put_fsm_map_time_median"
|
|
,"node_put_fsm_map_time_95"
|
|
,"node_put_fsm_map_time_99"
|
|
,"node_put_fsm_map_time_100"
|
|
,"counter_actor_counts_mean"
|
|
,"counter_actor_counts_median"
|
|
,"counter_actor_counts_95"
|
|
,"counter_actor_counts_99"
|
|
,"counter_actor_counts_100"
|
|
,"set_actor_counts_mean"
|
|
,"set_actor_counts_median"
|
|
,"set_actor_counts_95"
|
|
,"set_actor_counts_99"
|
|
,"set_actor_counts_100"
|
|
,"map_actor_counts_mean"
|
|
,"map_actor_counts_median"
|
|
,"map_actor_counts_95"
|
|
,"map_actor_counts_99"
|
|
,"map_actor_counts_100"
|
|
]
|
|
].
|
|
|
|
do_datatypes(Pid) ->
|
|
_ = [ get_and_update(Pid, Type) || Type <- [counter, set, map]].
|
|
|
|
get_and_update(Pid, counter) ->
|
|
|
|
_ = [ riakc_pb_socket:update_type(Pid, {?CTYPE, <<"pb">>}, <<I>>,
|
|
{counter, {increment, 5},
|
|
undefined})
|
|
|| I <- lists:seq(1, 10) ],
|
|
|
|
_ = [ riakc_pb_socket:fetch_type(Pid, {?CTYPE, <<"pb">>}, <<I>>)
|
|
|| I <- lists:seq(1, 10) ];
|
|
|
|
get_and_update(Pid, set) ->
|
|
|
|
_ = [ riakc_pb_socket:update_type(Pid, {?STYPE, <<"pb">>}, <<I>>,
|
|
{set, {add_all, [<<"a">>, <<"b">>]}, undefined})
|
|
|| I <- lists:seq(1, 10) ],
|
|
|
|
_ = [ riakc_pb_socket:fetch_type(Pid, {?STYPE, <<"pb">>}, <<I>>)
|
|
|| I <- lists:seq(1, 10) ];
|
|
|
|
get_and_update(Pid, map) ->
|
|
|
|
_ = [ riakc_pb_socket:update_type(Pid, {?MTYPE, <<"pb">>}, <<I>>,
|
|
{map,
|
|
{update,[
|
|
{update, {<<"a">>, counter}, {increment, 5}}
|
|
]},
|
|
undefined})
|
|
|| I <- lists:seq(1, 10) ],
|
|
|
|
_ = [ riakc_pb_socket:fetch_type(Pid, {?MTYPE, <<"pb">>}, <<I>>)
|
|
|| I <- lists:seq(1, 10) ].
|
|
|
|
all_stats(Node) ->
|
|
common_stats() ++ product_stats(rt:product(Node)) ++ maybe_ts_stats(binary:match(rtdev:get_version(current),<<"ts">>)).
|
|
|
|
maybe_ts_stats(nomatch) ->
|
|
[];
|
|
|
|
maybe_ts_stats(_) ->
|
|
[
|
|
<<"riak_ql_version">>,
|
|
<<"riak_shell_version">>
|
|
].
|
|
|
|
common_stats() ->
|
|
[
|
|
<<"asn1_version">>,
|
|
<<"basho_stats_version">>,
|
|
<<"bitcask_version">>,
|
|
<<"clique_version">>,
|
|
<<"cluster_info_version">>,
|
|
<<"compiler_version">>,
|
|
<<"connected_nodes">>,
|
|
<<"consistent_get_objsize_100">>,
|
|
<<"consistent_get_objsize_95">>,
|
|
<<"consistent_get_objsize_99">>,
|
|
<<"consistent_get_objsize_mean">>,
|
|
<<"consistent_get_objsize_median">>,
|
|
<<"consistent_get_time_100">>,
|
|
<<"consistent_get_time_95">>,
|
|
<<"consistent_get_time_99">>,
|
|
<<"consistent_get_time_mean">>,
|
|
<<"consistent_get_time_median">>,
|
|
<<"consistent_gets">>,
|
|
<<"consistent_gets_total">>,
|
|
<<"consistent_put_objsize_100">>,
|
|
<<"consistent_put_objsize_95">>,
|
|
<<"consistent_put_objsize_99">>,
|
|
<<"consistent_put_objsize_mean">>,
|
|
<<"consistent_put_objsize_median">>,
|
|
<<"consistent_put_time_100">>,
|
|
<<"consistent_put_time_95">>,
|
|
<<"consistent_put_time_99">>,
|
|
<<"consistent_put_time_mean">>,
|
|
<<"consistent_put_time_median">>,
|
|
<<"consistent_puts">>,
|
|
<<"consistent_puts_total">>,
|
|
<<"converge_delay_last">>,
|
|
<<"converge_delay_max">>,
|
|
<<"converge_delay_mean">>,
|
|
<<"converge_delay_min">>,
|
|
<<"coord_redirs_total">>,
|
|
<<"counter_actor_counts_100">>,
|
|
<<"counter_actor_counts_95">>,
|
|
<<"counter_actor_counts_99">>,
|
|
<<"counter_actor_counts_mean">>,
|
|
<<"counter_actor_counts_median">>,
|
|
<<"cpu_avg1">>,
|
|
<<"cpu_avg15">>,
|
|
<<"cpu_avg5">>,
|
|
<<"cpu_nprocs">>,
|
|
<<"crypto_version">>,
|
|
<<"disk">>,
|
|
<<"dropped_vnode_requests_total">>,
|
|
<<"eleveldb_version">>,
|
|
<<"erlang_js_version">>,
|
|
<<"erlydtl_version">>,
|
|
<<"executing_mappers">>,
|
|
<<"exometer_core_version">>,
|
|
<<"fuse_version">>,
|
|
<<"goldrush_version">>,
|
|
<<"gossip_received">>,
|
|
<<"handoff_timeouts">>,
|
|
<<"hll_bytes">>,
|
|
<<"hll_bytes_mean">>,
|
|
<<"hll_bytes_100">>,
|
|
<<"hll_bytes_95">>,
|
|
<<"hll_bytes_99">>,
|
|
<<"hll_bytes_median">>,
|
|
<<"hll_bytes_total">>,
|
|
<<"ibrowse_version">>,
|
|
<<"ignored_gossip_total">>,
|
|
<<"index_fsm_active">>,
|
|
<<"index_fsm_create">>,
|
|
<<"index_fsm_create_error">>,
|
|
<<"inets_version">>,
|
|
<<"kernel_version">>,
|
|
<<"lager_version">>,
|
|
<<"late_put_fsm_coordinator_ack">>,
|
|
<<"leveldb_read_block_error">>,
|
|
<<"list_fsm_active">>,
|
|
<<"list_fsm_create">>,
|
|
<<"list_fsm_create_error">>,
|
|
<<"list_fsm_create_error_total">>,
|
|
<<"list_fsm_create_total">>,
|
|
<<"map_actor_counts_100">>,
|
|
<<"map_actor_counts_95">>,
|
|
<<"map_actor_counts_99">>,
|
|
<<"map_actor_counts_mean">>,
|
|
<<"map_actor_counts_median">>,
|
|
<<"mem_allocated">>,
|
|
<<"mem_total">>,
|
|
<<"memory_atom">>,
|
|
<<"memory_atom_used">>,
|
|
<<"memory_binary">>,
|
|
<<"memory_code">>,
|
|
<<"memory_ets">>,
|
|
<<"memory_processes">>,
|
|
<<"memory_processes_used">>,
|
|
<<"memory_system">>,
|
|
<<"memory_total">>,
|
|
<<"merge_index_version">>,
|
|
<<"mochiweb_version">>,
|
|
<<"node_get_fsm_active">>,
|
|
<<"node_get_fsm_active_60s">>,
|
|
<<"node_get_fsm_counter_objsize_100">>,
|
|
<<"node_get_fsm_counter_objsize_95">>,
|
|
<<"node_get_fsm_counter_objsize_99">>,
|
|
<<"node_get_fsm_counter_objsize_mean">>,
|
|
<<"node_get_fsm_counter_objsize_median">>,
|
|
<<"node_get_fsm_counter_siblings_100">>,
|
|
<<"node_get_fsm_counter_siblings_95">>,
|
|
<<"node_get_fsm_counter_siblings_99">>,
|
|
<<"node_get_fsm_counter_siblings_mean">>,
|
|
<<"node_get_fsm_counter_siblings_median">>,
|
|
<<"node_get_fsm_counter_time_100">>,
|
|
<<"node_get_fsm_counter_time_95">>,
|
|
<<"node_get_fsm_counter_time_99">>,
|
|
<<"node_get_fsm_counter_time_mean">>,
|
|
<<"node_get_fsm_counter_time_median">>,
|
|
<<"node_get_fsm_errors">>,
|
|
<<"node_get_fsm_errors_total">>,
|
|
<<"node_get_fsm_hll_objsize_100">>,
|
|
<<"node_get_fsm_hll_objsize_95">>,
|
|
<<"node_get_fsm_hll_objsize_99">>,
|
|
<<"node_get_fsm_hll_objsize_mean">>,
|
|
<<"node_get_fsm_hll_objsize_median">>,
|
|
<<"node_get_fsm_hll_siblings_100">>,
|
|
<<"node_get_fsm_hll_siblings_95">>,
|
|
<<"node_get_fsm_hll_siblings_99">>,
|
|
<<"node_get_fsm_hll_siblings_mean">>,
|
|
<<"node_get_fsm_hll_siblings_median">>,
|
|
<<"node_get_fsm_hll_time_100">>,
|
|
<<"node_get_fsm_hll_time_95">>,
|
|
<<"node_get_fsm_hll_time_99">>,
|
|
<<"node_get_fsm_hll_time_mean">>,
|
|
<<"node_get_fsm_hll_time_median">>,
|
|
<<"node_get_fsm_in_rate">>,
|
|
<<"node_get_fsm_map_objsize_100">>,
|
|
<<"node_get_fsm_map_objsize_95">>,
|
|
<<"node_get_fsm_map_objsize_99">>,
|
|
<<"node_get_fsm_map_objsize_mean">>,
|
|
<<"node_get_fsm_map_objsize_median">>,
|
|
<<"node_get_fsm_map_siblings_100">>,
|
|
<<"node_get_fsm_map_siblings_95">>,
|
|
<<"node_get_fsm_map_siblings_99">>,
|
|
<<"node_get_fsm_map_siblings_mean">>,
|
|
<<"node_get_fsm_map_siblings_median">>,
|
|
<<"node_get_fsm_map_time_100">>,
|
|
<<"node_get_fsm_map_time_95">>,
|
|
<<"node_get_fsm_map_time_99">>,
|
|
<<"node_get_fsm_map_time_mean">>,
|
|
<<"node_get_fsm_map_time_median">>,
|
|
<<"node_get_fsm_objsize_100">>,
|
|
<<"node_get_fsm_objsize_95">>,
|
|
<<"node_get_fsm_objsize_99">>,
|
|
<<"node_get_fsm_objsize_mean">>,
|
|
<<"node_get_fsm_objsize_median">>,
|
|
<<"node_get_fsm_out_rate">>,
|
|
<<"node_get_fsm_rejected">>,
|
|
<<"node_get_fsm_rejected_60s">>,
|
|
<<"node_get_fsm_rejected_total">>,
|
|
<<"node_get_fsm_set_objsize_100">>,
|
|
<<"node_get_fsm_set_objsize_95">>,
|
|
<<"node_get_fsm_set_objsize_99">>,
|
|
<<"node_get_fsm_set_objsize_mean">>,
|
|
<<"node_get_fsm_set_objsize_median">>,
|
|
<<"node_get_fsm_set_siblings_100">>,
|
|
<<"node_get_fsm_set_siblings_95">>,
|
|
<<"node_get_fsm_set_siblings_99">>,
|
|
<<"node_get_fsm_set_siblings_mean">>,
|
|
<<"node_get_fsm_set_siblings_median">>,
|
|
<<"node_get_fsm_set_time_100">>,
|
|
<<"node_get_fsm_set_time_95">>,
|
|
<<"node_get_fsm_set_time_99">>,
|
|
<<"node_get_fsm_set_time_mean">>,
|
|
<<"node_get_fsm_set_time_median">>,
|
|
<<"node_get_fsm_siblings_100">>,
|
|
<<"node_get_fsm_siblings_95">>,
|
|
<<"node_get_fsm_siblings_99">>,
|
|
<<"node_get_fsm_siblings_mean">>,
|
|
<<"node_get_fsm_siblings_median">>,
|
|
<<"node_get_fsm_time_100">>,
|
|
<<"node_get_fsm_time_95">>,
|
|
<<"node_get_fsm_time_99">>,
|
|
<<"node_get_fsm_time_mean">>,
|
|
<<"node_get_fsm_time_median">>,
|
|
<<"node_gets">>,
|
|
<<"node_gets_counter">>,
|
|
<<"node_gets_counter_total">>,
|
|
<<"node_gets_hll">>,
|
|
<<"node_gets_hll_total">>,
|
|
<<"node_gets_map">>,
|
|
<<"node_gets_map_total">>,
|
|
<<"node_gets_set">>,
|
|
<<"node_gets_set_total">>,
|
|
<<"node_gets_total">>,
|
|
<<"node_put_fsm_active">>,
|
|
<<"node_put_fsm_active_60s">>,
|
|
<<"node_put_fsm_counter_time_100">>,
|
|
<<"node_put_fsm_counter_time_95">>,
|
|
<<"node_put_fsm_counter_time_99">>,
|
|
<<"node_put_fsm_counter_time_mean">>,
|
|
<<"node_put_fsm_counter_time_median">>,
|
|
<<"node_put_fsm_hll_time_100">>,
|
|
<<"node_put_fsm_hll_time_95">>,
|
|
<<"node_put_fsm_hll_time_99">>,
|
|
<<"node_put_fsm_hll_time_mean">>,
|
|
<<"node_put_fsm_hll_time_median">>,
|
|
<<"node_put_fsm_in_rate">>,
|
|
<<"node_put_fsm_map_time_100">>,
|
|
<<"node_put_fsm_map_time_95">>,
|
|
<<"node_put_fsm_map_time_99">>,
|
|
<<"node_put_fsm_map_time_mean">>,
|
|
<<"node_put_fsm_map_time_median">>,
|
|
<<"node_put_fsm_out_rate">>,
|
|
<<"node_put_fsm_rejected">>,
|
|
<<"node_put_fsm_rejected_60s">>,
|
|
<<"node_put_fsm_rejected_total">>,
|
|
<<"node_put_fsm_set_time_100">>,
|
|
<<"node_put_fsm_set_time_95">>,
|
|
<<"node_put_fsm_set_time_99">>,
|
|
<<"node_put_fsm_set_time_mean">>,
|
|
<<"node_put_fsm_set_time_median">>,
|
|
<<"node_put_fsm_time_100">>,
|
|
<<"node_put_fsm_time_95">>,
|
|
<<"node_put_fsm_time_99">>,
|
|
<<"node_put_fsm_time_mean">>,
|
|
<<"node_put_fsm_time_median">>,
|
|
<<"node_puts">>,
|
|
<<"node_puts_counter">>,
|
|
<<"node_puts_counter_total">>,
|
|
<<"node_puts_hll">>,
|
|
<<"node_puts_hll_total">>,
|
|
<<"node_puts_map">>,
|
|
<<"node_puts_map_total">>,
|
|
<<"node_puts_set">>,
|
|
<<"node_puts_set_total">>,
|
|
<<"node_puts_total">>,
|
|
<<"nodename">>,
|
|
<<"object_counter_merge">>,
|
|
<<"object_counter_merge_time_100">>,
|
|
<<"object_counter_merge_time_95">>,
|
|
<<"object_counter_merge_time_99">>,
|
|
<<"object_counter_merge_time_mean">>,
|
|
<<"object_counter_merge_time_median">>,
|
|
<<"object_counter_merge_total">>,
|
|
<<"object_hll_merge">>,
|
|
<<"object_hll_merge_time_100">>,
|
|
<<"object_hll_merge_time_95">>,
|
|
<<"object_hll_merge_time_99">>,
|
|
<<"object_hll_merge_time_mean">>,
|
|
<<"object_hll_merge_time_median">>,
|
|
<<"object_hll_merge_total">>,
|
|
<<"object_map_merge">>,
|
|
<<"object_map_merge_time_100">>,
|
|
<<"object_map_merge_time_95">>,
|
|
<<"object_map_merge_time_99">>,
|
|
<<"object_map_merge_time_mean">>,
|
|
<<"object_map_merge_time_median">>,
|
|
<<"object_map_merge_total">>,
|
|
<<"object_merge">>,
|
|
<<"object_merge_time_100">>,
|
|
<<"object_merge_time_95">>,
|
|
<<"object_merge_time_99">>,
|
|
<<"object_merge_time_mean">>,
|
|
<<"object_merge_time_median">>,
|
|
<<"object_merge_total">>,
|
|
<<"object_set_merge">>,
|
|
<<"object_set_merge_time_100">>,
|
|
<<"object_set_merge_time_95">>,
|
|
<<"object_set_merge_time_99">>,
|
|
<<"object_set_merge_time_mean">>,
|
|
<<"object_set_merge_time_median">>,
|
|
<<"object_set_merge_total">>,
|
|
<<"os_mon_version">>,
|
|
<<"pbc_active">>,
|
|
<<"pbc_connects">>,
|
|
<<"pbc_connects_total">>,
|
|
<<"pbkdf2_version">>,
|
|
<<"pipeline_active">>,
|
|
<<"pipeline_create_count">>,
|
|
<<"pipeline_create_error_count">>,
|
|
<<"pipeline_create_error_one">>,
|
|
<<"pipeline_create_one">>,
|
|
<<"poolboy_version">>,
|
|
<<"postcommit_fail">>,
|
|
<<"precommit_fail">>,
|
|
<<"protobuffs_version">>,
|
|
<<"public_key_version">>,
|
|
<<"read_repairs">>,
|
|
<<"read_repairs_counter">>,
|
|
<<"read_repairs_counter_total">>,
|
|
<<"read_repairs_fallback_notfound_count">>,
|
|
<<"read_repairs_fallback_notfound_one">>,
|
|
<<"read_repairs_fallback_outofdate_count">>,
|
|
<<"read_repairs_fallback_outofdate_one">>,
|
|
<<"read_repairs_hll">>,
|
|
<<"read_repairs_hll_total">>,
|
|
<<"read_repairs_map">>,
|
|
<<"read_repairs_map_total">>,
|
|
<<"read_repairs_primary_notfound_count">>,
|
|
<<"read_repairs_primary_notfound_one">>,
|
|
<<"read_repairs_primary_outofdate_count">>,
|
|
<<"read_repairs_primary_outofdate_one">>,
|
|
<<"read_repairs_set">>,
|
|
<<"read_repairs_set_total">>,
|
|
<<"read_repairs_total">>,
|
|
<<"rebalance_delay_last">>,
|
|
<<"rebalance_delay_max">>,
|
|
<<"rebalance_delay_mean">>,
|
|
<<"rebalance_delay_min">>,
|
|
<<"rejected_handoffs">>,
|
|
<<"riak_api_version">>,
|
|
<<"riak_auth_mods_version">>,
|
|
<<"riak_control_version">>,
|
|
<<"riak_core_version">>,
|
|
<<"riak_dt_version">>,
|
|
<<"riak_kv_version">>,
|
|
<<"riak_kv_vnodeq_max">>,
|
|
<<"riak_kv_vnodeq_mean">>,
|
|
<<"riak_kv_vnodeq_median">>,
|
|
<<"riak_kv_vnodeq_min">>,
|
|
<<"riak_kv_vnodeq_total">>,
|
|
<<"riak_kv_vnodes_running">>,
|
|
<<"riak_pb_version">>,
|
|
<<"riak_pipe_version">>,
|
|
<<"riak_pipe_vnodeq_max">>,
|
|
<<"riak_pipe_vnodeq_mean">>,
|
|
<<"riak_pipe_vnodeq_median">>,
|
|
<<"riak_pipe_vnodeq_min">>,
|
|
<<"riak_pipe_vnodeq_total">>,
|
|
<<"riak_pipe_vnodes_running">>,
|
|
<<"riak_search_version">>,
|
|
<<"riak_sysmon_version">>,
|
|
<<"ring_creation_size">>,
|
|
<<"ring_members">>,
|
|
<<"ring_num_partitions">>,
|
|
<<"ring_ownership">>,
|
|
<<"rings_reconciled">>,
|
|
<<"rings_reconciled_total">>,
|
|
<<"runtime_tools_version">>,
|
|
<<"sasl_version">>,
|
|
<<"search_blockedvnode_count">>,
|
|
<<"search_blockedvnode_one">>,
|
|
<<"search_detected_repairs_count">>,
|
|
<<"search_index_bad_entry_count">>,
|
|
<<"search_index_bad_entry_one">>,
|
|
<<"search_index_error_threshold_blown_count">>,
|
|
<<"search_index_error_threshold_blown_one">>,
|
|
<<"search_index_error_threshold_failure_count">>,
|
|
<<"search_index_error_threshold_failure_one">>,
|
|
<<"search_index_error_threshold_ok_count">>,
|
|
<<"search_index_error_threshold_ok_one">>,
|
|
<<"search_index_error_threshold_recovered_count">>,
|
|
<<"search_index_error_threshold_recovered_one">>,
|
|
<<"search_index_extract_fail_count">>,
|
|
<<"search_index_extract_fail_one">>,
|
|
<<"search_index_fail_count">>,
|
|
<<"search_index_fail_one">>,
|
|
<<"search_index_latency_95">>,
|
|
<<"search_index_latency_99">>,
|
|
<<"search_index_latency_999">>,
|
|
<<"search_index_latency_max">>,
|
|
<<"search_index_latency_mean">>,
|
|
<<"search_index_latency_median">>,
|
|
<<"search_index_latency_min">>,
|
|
<<"search_index_throughput_count">>,
|
|
<<"search_index_throughput_one">>,
|
|
<<"search_query_fail_count">>,
|
|
<<"search_query_fail_one">>,
|
|
<<"search_query_latency_95">>,
|
|
<<"search_query_latency_99">>,
|
|
<<"search_query_latency_999">>,
|
|
<<"search_query_latency_max">>,
|
|
<<"search_query_latency_mean">>,
|
|
<<"search_query_latency_median">>,
|
|
<<"search_query_latency_min">>,
|
|
<<"search_query_throughput_count">>,
|
|
<<"search_query_throughput_one">>,
|
|
<<"search_queue_batch_latency_95">>,
|
|
<<"search_queue_batch_latency_99">>,
|
|
<<"search_queue_batch_latency_999">>,
|
|
<<"search_queue_batch_latency_max">>,
|
|
<<"search_queue_batch_latency_mean">>,
|
|
<<"search_queue_batch_latency_median">>,
|
|
<<"search_queue_batch_latency_min">>,
|
|
<<"search_queue_batch_throughput_count">>,
|
|
<<"search_queue_batch_throughput_one">>,
|
|
<<"search_queue_batchsize_max">>,
|
|
<<"search_queue_batchsize_mean">>,
|
|
<<"search_queue_batchsize_median">>,
|
|
<<"search_queue_batchsize_min">>,
|
|
<<"search_queue_drain_cancel_timeout_count">>,
|
|
<<"search_queue_drain_cancel_timeout_one">>,
|
|
<<"search_queue_drain_count">>,
|
|
<<"search_queue_drain_fail_count">>,
|
|
<<"search_queue_drain_fail_one">>,
|
|
<<"search_queue_drain_latency_95">>,
|
|
<<"search_queue_drain_latency_99">>,
|
|
<<"search_queue_drain_latency_999">>,
|
|
<<"search_queue_drain_latency_max">>,
|
|
<<"search_queue_drain_latency_mean">>,
|
|
<<"search_queue_drain_latency_median">>,
|
|
<<"search_queue_drain_latency_min">>,
|
|
<<"search_queue_drain_one">>,
|
|
<<"search_queue_drain_timeout_count">>,
|
|
<<"search_queue_drain_timeout_one">>,
|
|
<<"search_queue_hwm_purged_count">>,
|
|
<<"search_queue_hwm_purged_one">>,
|
|
<<"search_queue_total_length">>,
|
|
<<"set_actor_counts_100">>,
|
|
<<"set_actor_counts_95">>,
|
|
<<"set_actor_counts_99">>,
|
|
<<"set_actor_counts_mean">>,
|
|
<<"set_actor_counts_median">>,
|
|
<<"sidejob_version">>,
|
|
<<"skipped_read_repairs">>,
|
|
<<"skipped_read_repairs_total">>,
|
|
<<"ssl_version">>,
|
|
<<"stdlib_version">>,
|
|
<<"storage_backend">>,
|
|
<<"syntax_tools_version">>,
|
|
<<"sys_driver_version">>,
|
|
<<"sys_global_heaps_size">>,
|
|
<<"sys_heap_type">>,
|
|
<<"sys_logical_processors">>,
|
|
<<"sys_monitor_count">>,
|
|
<<"sys_otp_release">>,
|
|
<<"sys_port_count">>,
|
|
<<"sys_process_count">>,
|
|
<<"sys_smp_support">>,
|
|
<<"sys_system_architecture">>,
|
|
<<"sys_system_version">>,
|
|
<<"sys_thread_pool_size">>,
|
|
<<"sys_threads_enabled">>,
|
|
<<"sys_wordsize">>,
|
|
<<"vnode_counter_update">>,
|
|
<<"vnode_counter_update_time_100">>,
|
|
<<"vnode_counter_update_time_95">>,
|
|
<<"vnode_counter_update_time_99">>,
|
|
<<"vnode_counter_update_time_mean">>,
|
|
<<"vnode_counter_update_time_median">>,
|
|
<<"vnode_counter_update_total">>,
|
|
<<"vnode_get_fsm_time_100">>,
|
|
<<"vnode_get_fsm_time_95">>,
|
|
<<"vnode_get_fsm_time_99">>,
|
|
<<"vnode_get_fsm_time_mean">>,
|
|
<<"vnode_get_fsm_time_median">>,
|
|
<<"vnode_gets">>,
|
|
<<"vnode_gets_total">>,
|
|
<<"vnode_hll_update">>,
|
|
<<"vnode_hll_update_time_100">>,
|
|
<<"vnode_hll_update_time_95">>,
|
|
<<"vnode_hll_update_time_99">>,
|
|
<<"vnode_hll_update_time_mean">>,
|
|
<<"vnode_hll_update_time_median">>,
|
|
<<"vnode_hll_update_total">>,
|
|
<<"vnode_index_deletes">>,
|
|
<<"vnode_index_deletes_postings">>,
|
|
<<"vnode_index_deletes_postings_total">>,
|
|
<<"vnode_index_deletes_total">>,
|
|
<<"vnode_index_reads">>,
|
|
<<"vnode_index_reads_total">>,
|
|
<<"vnode_index_refreshes">>,
|
|
<<"vnode_index_refreshes_total">>,
|
|
<<"vnode_index_writes">>,
|
|
<<"vnode_index_writes_postings">>,
|
|
<<"vnode_index_writes_postings_total">>,
|
|
<<"vnode_index_writes_total">>,
|
|
<<"vnode_map_update">>,
|
|
<<"vnode_map_update_time_100">>,
|
|
<<"vnode_map_update_time_95">>,
|
|
<<"vnode_map_update_time_99">>,
|
|
<<"vnode_map_update_time_mean">>,
|
|
<<"vnode_map_update_time_median">>,
|
|
<<"vnode_map_update_total">>,
|
|
<<"vnode_put_fsm_time_100">>,
|
|
<<"vnode_put_fsm_time_95">>,
|
|
<<"vnode_put_fsm_time_99">>,
|
|
<<"vnode_put_fsm_time_mean">>,
|
|
<<"vnode_put_fsm_time_median">>,
|
|
<<"vnode_puts">>,
|
|
<<"vnode_puts_total">>,
|
|
<<"vnode_set_update">>,
|
|
<<"vnode_set_update_time_100">>,
|
|
<<"vnode_set_update_time_95">>,
|
|
<<"vnode_set_update_time_99">>,
|
|
<<"vnode_set_update_time_mean">>,
|
|
<<"vnode_set_update_time_median">>,
|
|
<<"vnode_set_update_total">>,
|
|
<<"webmachine_version">>,
|
|
<<"write_once_merge">>,
|
|
<<"write_once_put_objsize_100">>,
|
|
<<"write_once_put_objsize_95">>,
|
|
<<"write_once_put_objsize_99">>,
|
|
<<"write_once_put_objsize_mean">>,
|
|
<<"write_once_put_objsize_median">>,
|
|
<<"write_once_put_time_100">>,
|
|
<<"write_once_put_time_95">>,
|
|
<<"write_once_put_time_99">>,
|
|
<<"write_once_put_time_mean">>,
|
|
<<"write_once_put_time_median">>,
|
|
<<"write_once_puts">>,
|
|
<<"write_once_puts_total">>,
|
|
<<"xmerl_version">>,
|
|
<<"yokozuna_version">>
|
|
].
|
|
|
|
product_stats(riak_ee) ->
|
|
[
|
|
<<"ebloom_version">>,
|
|
<<"mnesia_version">>,
|
|
<<"ranch_version">>,
|
|
<<"riak_jmx_version">>,
|
|
<<"riak_repl_version">>,
|
|
<<"riak_snmp_version">>,
|
|
<<"snmp_version">>
|
|
];
|
|
product_stats(riak) ->
|
|
[].
|