1 |
|
-module(stats_api). |
2 |
|
|
3 |
|
-export([incoming_s2s_number/0, outgoing_s2s_number/0, stats/1, stats/2]). |
4 |
|
|
5 |
|
-include("mongoose.hrl"). |
6 |
|
|
7 |
|
-spec incoming_s2s_number() -> {ok, non_neg_integer()}. |
8 |
|
incoming_s2s_number() -> |
9 |
4 |
{ok, length(supervisor:which_children(ejabberd_s2s_in_sup))}. |
10 |
|
|
11 |
|
-spec outgoing_s2s_number() -> {ok, non_neg_integer()}. |
12 |
|
outgoing_s2s_number() -> |
13 |
4 |
{ok, length(supervisor:which_children(ejabberd_s2s_out_sup))}. |
14 |
|
|
15 |
|
-spec stats(binary()) -> {ok, integer()} | {not_found, string()}. |
16 |
|
stats(<<"uptimeseconds">>) -> |
17 |
4 |
{ok, trunc(element(1, erlang:statistics(wall_clock)) / 1000)}; |
18 |
|
stats(<<"registeredusers">>) -> |
19 |
4 |
Domains = lists:flatmap(fun mongoose_domain_api:get_domains_by_host_type/1, |
20 |
|
?ALL_HOST_TYPES), |
21 |
4 |
{ok, lists:sum([ejabberd_auth:get_vh_registered_users_number(Domain) || Domain <- Domains])}; |
22 |
|
stats(<<"onlineusersnode">>) -> |
23 |
4 |
{ok, ejabberd_sm:get_node_sessions_number()}; |
24 |
|
stats(<<"onlineusers">>) -> |
25 |
4 |
{ok, ejabberd_sm:get_total_sessions_number()}; |
26 |
|
stats(_Name) -> |
27 |
:-( |
{not_found, "Stats not found"}. |
28 |
|
|
29 |
|
-spec stats(binary(), jid:server()) -> {ok, integer()} | {not_found, string()}. |
30 |
|
stats(<<"registeredusers">>, Host) -> |
31 |
14 |
{ok, ejabberd_auth:get_vh_registered_users_number(Host)}; |
32 |
|
stats(<<"onlineusers">>, Host) -> |
33 |
14 |
{ok, ejabberd_sm:get_vh_session_number(Host)}; |
34 |
|
stats(_Name, _Host) -> |
35 |
:-( |
{not_found, "Stats not found"}. |