summaryrefslogtreecommitdiff
path: root/src/weatherreport/src/weatherreport_check_node_stats.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/weatherreport/src/weatherreport_check_node_stats.erl')
-rw-r--r--src/weatherreport/src/weatherreport_check_node_stats.erl68
1 files changed, 0 insertions, 68 deletions
diff --git a/src/weatherreport/src/weatherreport_check_node_stats.erl b/src/weatherreport/src/weatherreport_check_node_stats.erl
deleted file mode 100644
index 6c3353dc6..000000000
--- a/src/weatherreport/src/weatherreport_check_node_stats.erl
+++ /dev/null
@@ -1,68 +0,0 @@
-%% -------------------------------------------------------------------
-%%
-%% weatherreport - automated diagnostic tools for CouchDB
-%%
-%% Copyright (c) 2014 Cloudant
-%%
-%% 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.
-%%
-%% -------------------------------------------------------------------
-
-%% @doc Diagnostic that checks various erlang VM statistics that are
-%% useful for diagnostics. A warning message is printed if certain stats
-%% rise above pre-determined thresholds, otherwise an info message is sent.
--module(weatherreport_check_node_stats).
--behaviour(weatherreport_check).
-
--export([
- description/0,
- valid/0,
- check/1,
- format/1
-]).
-
--define(SAMPLES, 10).
--define(T_RUN_QUEUE, 40).
--define(T_PROCESS_COUNT, 100000).
-
--spec description() -> string().
-description() ->
- "Check useful erlang statistics for diagnostics".
-
--spec valid() -> boolean().
-valid() ->
- weatherreport_node:can_connect().
-
--spec sum_absolute_stats({list(), list()}, list()) -> list().
-sum_absolute_stats({AbsStats, _}, AbsSum) ->
- [{K, V + proplists:get_value(K, AbsSum, 0)} || {K, V} <- AbsStats].
-
--spec mean_to_message({atom(), integer()}) -> {atom(), {atom(), integer()}}.
-mean_to_message({run_queue, Mean}) when Mean > ?T_RUN_QUEUE ->
- {warning, {run_queue, Mean}};
-mean_to_message({process_count, Mean}) when Mean > ?T_PROCESS_COUNT ->
- {warning, {process_count, Mean}};
-mean_to_message({Statistic, Mean}) ->
- {info, {Statistic, Mean}}.
-
--spec check(list()) -> [{atom(), term()}].
-check(_Opts) ->
- SumOfStats = recon:node_stats(?SAMPLES, 100, fun sum_absolute_stats/2, []),
- MeanStats = [{K, erlang:round(V / ?SAMPLES)} || {K, V} <- SumOfStats],
- lists:map(fun mean_to_message/1, MeanStats).
-
--spec format(term()) -> {io:format(), [term()]}.
-format({Statistic, Value}) ->
- {"Mean ~w over one second is ~w", [Statistic, Value]}.