emqttd_ctl vm

This commit is contained in:
Ery Lee 2015-03-23 21:35:16 +08:00
parent d0eb5cddb4
commit 2a9653f8a8
2 changed files with 46 additions and 2 deletions

View File

@ -37,6 +37,7 @@
io:format(Format, Args)).
-export([status/1,
vm/1,
broker/1,
stats/1,
metrics/1,
@ -77,13 +78,32 @@ cluster([SNode]) ->
?PRINT("failed to connect to ~p~n", [Node])
end.
useradd([Username, Password]) ->
?PRINT("~p", [emqttd_auth:add(list_to_binary(Username), list_to_binary(Password))]).
userdel([Username]) ->
?PRINT("~p", [emqttd_auth:delete(list_to_binary(Username))]).
vm([]) ->
[vm([Name]) || Name <- ["load", "memory", "process", "io"]];
vm(["load"]) ->
?PRINT_MSG("Load: ~n"),
[?PRINT(" ~s:~s~n", [L, V]) || {L, V} <- loads()];
vm(["memory"]) ->
?PRINT_MSG("Memory: ~n"),
[?PRINT(" ~s:~p~n", [Cat, Val]) || {Cat, Val} <- erlang:memory()];
vm(["process"]) ->
?PRINT_MSG("Process: ~n"),
?PRINT(" process_limit:~p~n", [erlang:system_info(process_limit)]),
?PRINT(" process_count:~p~n", [erlang:system_info(process_count)]);
vm(["io"]) ->
?PRINT_MSG("IO: ~n"),
?PRINT(" max_fds:~p~n", [proplists:get_value(max_fds, erlang:system_info(check_io))]).
broker([]) ->
Funs = [sysdescr, version, uptime, datetime],
[?PRINT("~s: ~s~n", [Fun, emqttd_broker:Fun()]) || Fun <- Funs].
@ -156,4 +176,11 @@ node_name(SNode) ->
end,
list_to_atom(SNode1).
loads() ->
[{load1, ftos(cpu_sup:avg1()/256)},
{load5, ftos(cpu_sup:avg5()/256)},
{load15, ftos(cpu_sup:avg15()/256)}].
ftos(F) ->
[S] = io_lib:format("~.2f", [F]), S.

View File

@ -147,6 +147,23 @@ case "$1" in
$NODETOOL rpc emqttd_ctl userdel $@
;;
vm)
if [ $# -gt 2 ]; then
echo "Usage: $SCRIPT vm [ load | memory | process | io ]"
exit 1
fi
# Make sure the local node IS running
RES=`$NODETOOL ping`
if [ "$RES" != "pong" ]; then
echo "emqttd is not running!"
exit 1
fi
shift
$NODETOOL rpc emqttd_ctl vm $@
;;
broker)
if [ $# -ne 1 ]; then
@ -199,7 +216,6 @@ case "$1" in
$NODETOOL rpc emqttd_ctl metrics $@
;;
bridges)
# Make sure the local node IS running
RES=`$NODETOOL ping`
@ -259,6 +275,7 @@ case "$1" in
*)
echo "Usage: $SCRIPT"
echo " status #query broker status"
echo " vm [ load | memory | process | io ] #query load, memory, process and io of erlang vm"
echo " broker #query broker version, uptime and description"
echo " stats #query broker statistics of clients, topics, subscribers"
echo " metrics #query broker metrics"