From 2c43934bab502b29e524475d55b88ec72ea9613e Mon Sep 17 00:00:00 2001 From: Chris Duranti Date: Fri, 6 Jan 2017 13:24:02 -0800 Subject: [PATCH 1/7] Allow name to deal with floats/ints * Elixometer and Exometer were generating paths like: ["app_name", "db", "read", 75, "latency"] which wouldn't get munged into a collectd path via the name function --- src/exometer_report_collectd.erl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/exometer_report_collectd.erl b/src/exometer_report_collectd.erl index df7bd6d..68034f5 100644 --- a/src/exometer_report_collectd.erl +++ b/src/exometer_report_collectd.erl @@ -311,6 +311,12 @@ ets_key(Metric, DataPoint) -> Metric ++ [ DataPoint ]. %% Add metric and datapoint within metric +name(Metric, DataPoint) when is_integer(DataPoint) or is_float(DataPoint) -> + name(Metric, value(DataPoint)); + +name(Metric, DataPoint) when is_atom(DataPoint) -> + name(Metric, atom_to_list(DataPoint)); + name(Metric, DataPoint) -> metric_to_string(Metric) ++ "_" ++ atom_to_list(DataPoint). From f031e3fa438766e3f6111c42e3ec8175db976aa2 Mon Sep 17 00:00:00 2001 From: Chris Duranti Date: Wed, 11 Jan 2017 09:17:21 -0800 Subject: [PATCH 2/7] fix bug introduced in merge --- src/exometer_report_collectd.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/exometer_report_collectd.erl b/src/exometer_report_collectd.erl index 68034f5..0177688 100644 --- a/src/exometer_report_collectd.erl +++ b/src/exometer_report_collectd.erl @@ -318,7 +318,7 @@ name(Metric, DataPoint) when is_atom(DataPoint) -> name(Metric, atom_to_list(DataPoint)); name(Metric, DataPoint) -> - metric_to_string(Metric) ++ "_" ++ atom_to_list(DataPoint). + metric_to_string(Metric) ++ "_" ++ DataPoint. metric_to_string([Final]) -> metric_elem_to_list(Final); From e1f9e331d3021d1897267637fc313339f48b867b Mon Sep 17 00:00:00 2001 From: Chris Duranti Date: Mon, 7 Aug 2017 10:55:24 -0700 Subject: [PATCH 3/7] use otp unix domain sockets * Remove afunix --- rebar.config | 3 +-- src/exometer_collectd.app.src | 2 +- src/exometer_report_collectd.erl | 13 +++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/rebar.config b/rebar.config index f9753e9..2801790 100644 --- a/rebar.config +++ b/rebar.config @@ -1,8 +1,7 @@ %% -*- erlang -*- {deps, [ - {exometer_core, ".*", {git, "git://github.com/Feuerlabs/exometer_core.git", "09c2a93"}}, - {afunix, ".*", {git, "git://github.com/tonyrog/afunix.git", "180eed9"}} + {exometer_core, ".*", {git, "git://github.com/Feuerlabs/exometer_core.git", "09c2a93"}} ]}. {erl_opts, diff --git a/src/exometer_collectd.app.src b/src/exometer_collectd.app.src index e3a08f4..daaaa7c 100644 --- a/src/exometer_collectd.app.src +++ b/src/exometer_collectd.app.src @@ -5,7 +5,7 @@ {vsn, git}, {registered, []}, {applications, [kernel, stdlib, - lager, afunix, exometer_core]}, + lager, exometer_core]}, {included_applications, []}, {env, []} ]}. diff --git a/src/exometer_report_collectd.erl b/src/exometer_report_collectd.erl index 4b2ef0a..4ece468 100644 --- a/src/exometer_report_collectd.erl +++ b/src/exometer_report_collectd.erl @@ -91,7 +91,7 @@ -define(UNIX_EPOCH, 62167219200). exometer_init(Opts) -> - ?log(info, "exometer_report_collectd(~p): Starting~n", [Opts]), + ?log(info, "Exometer(~p): Starting~n", [Opts]), SockPath = get_opt(path, Opts, ?DEFAULT_PATH), ConnectTimeout = get_opt(connect_timeout, Opts, ?CONNECT_TIMEOUT), ReconnectInterval = @@ -119,6 +119,7 @@ exometer_init(Opts) -> }, case connect_collectd(SockPath, ConnectTimeout) of {ok, Sock} -> + ?log(info, "Exometer collectd connection succeeded"), {ok, St0#st{socket = Sock}}; {error, _} = Error -> ?log(warning, "Exometer collectd connection failed; ~p. Retry in ~p~n", @@ -247,7 +248,7 @@ report_exometer_(Metric, DataPoint, Extra, Value, type_map = TypeMap} = St) -> case get_type(TypeMap, Extra, ets_key(Metric, DataPoint)) of error -> - ?log(warning, + ?log(warning, "Could not resolve ~p to a collectd type." "Update exometer_report_collectd -> type_map in app.config. " "Value lost~n", [ets_key(Metric, DataPoint)]), @@ -262,9 +263,9 @@ report_exometer_(Metric, DataPoint, Extra, Value, send_request(Sock, Request, Metric, DataPoint, Extra, Value, #st{read_timeout = TOut} = St) -> - try afunix:send(Sock, Request) of + try gen_tcp:send(Sock, Request) of ok -> - case afunix:recv(Sock, 0, TOut) of + case gen_tcp:recv(Sock, 0, TOut) of {ok, Bin} -> %% Parse the reply case parse_reply(Request, Bin, St) of @@ -351,7 +352,7 @@ connect_collectd(St) -> end. connect_collectd(SocketPath, ConnectTimeout) -> - afunix:connect(SocketPath, [{active, false}, {mode, binary}], ConnectTimeout). + gen_tcp:connect({local, SocketPath}, 0, [{active, false}, {mode, binary}, local], ConnectTimeout). unix_time() -> datetime_to_unix_time(erlang:universaltime()). @@ -422,7 +423,7 @@ get_type(TypeMap, Extra, Name) -> maybe_reconnect_after(Socket) -> %% Close socket if open - if Socket =/= undefined -> afunix:close(Socket); + if Socket =/= undefined -> gen_tcp:close(Socket); true -> true end, prepare_reconnect(). From 74898b881cdd472a42affaa4e7fe5eebbd0c6857 Mon Sep 17 00:00:00 2001 From: Chris Duranti Date: Thu, 19 Apr 2018 15:38:56 -0700 Subject: [PATCH 4/7] Forgot that we're already using a forked exometer_collectd * So we can do what we want. Like removing this annoying log message --- src/exometer_report_collectd.erl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/exometer_report_collectd.erl b/src/exometer_report_collectd.erl index 4ece468..78e431a 100644 --- a/src/exometer_report_collectd.erl +++ b/src/exometer_report_collectd.erl @@ -161,7 +161,6 @@ exometer_unsubscribe(Metric, DataPoint, _Extra, St) -> %% Exometer report when no collectd socket connection exists. exometer_report(_Metric, _DataPoint, _Extra, _Value, St) when St#st.socket =:= undefined -> - ?log(warning, "Report metric: No connection. Value lost~n"), {ok, St}; %% Invoked through the remote_exometer() function to From 009209b812de6ee49ca9bacea9629ac991441337 Mon Sep 17 00:00:00 2001 From: Chris Duranti Date: Mon, 13 Aug 2018 11:01:08 -0700 Subject: [PATCH 5/7] Less log spam - because docker goofiness --- src/exometer_report_collectd.erl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/exometer_report_collectd.erl b/src/exometer_report_collectd.erl index 78e431a..79d2f70 100644 --- a/src/exometer_report_collectd.erl +++ b/src/exometer_report_collectd.erl @@ -217,12 +217,11 @@ exometer_info({exometer_callback, refresh_metric, {ok, report_exometer_(Metric, DataPoint, Extra, Value, St)} end; exometer_info({exometer_callback, reconnect}, St) -> - ?log(info, "Reconnecting: ~p~n", [St]), case connect_collectd(St) of {ok, NSt} -> {ok, NSt}; Err -> - ?log(warning, "Could not reconnect: ~p~n", [Err]), + Err, prepare_reconnect(), {ok, St} end; From e28c4e56650c5949777e9aa337edee7df2304c9d Mon Sep 17 00:00:00 2001 From: Chris Duranti Date: Mon, 12 Nov 2018 10:09:51 -0800 Subject: [PATCH 6/7] rm noisy log line --- .rebar3/erlcinfo | Bin 0 -> 219 bytes src/exometer_report_collectd.erl | 1 - 2 files changed, 1 deletion(-) create mode 100644 .rebar3/erlcinfo diff --git a/.rebar3/erlcinfo b/.rebar3/erlcinfo new file mode 100644 index 0000000000000000000000000000000000000000..bf53b2cb9735767899beb82539cfd829fa489f86 GIT binary patch literal 219 zcmV<103`o|Pyhe|yLeu$lEH4mFbsy>W>Tvicmj@`@pZd!=CWr%ZerxLfgrbKd)>Xs z8rZ6Vm^4IBi5%(w?9UP7pkxi!@3)b1F#!OK<(xo>ym^2g9Z$GWjmc_jQ)|H2dr zv%Zb_l^6os&S9$-$ExxnYB%7{kITW#^&m5Pp?RG&cK V7g(QEW)0wf7xw+p>MtlZ^V;Xeb1wh@ literal 0 HcmV?d00001 diff --git a/src/exometer_report_collectd.erl b/src/exometer_report_collectd.erl index 79d2f70..2e39828 100644 --- a/src/exometer_report_collectd.erl +++ b/src/exometer_report_collectd.erl @@ -212,7 +212,6 @@ exometer_info({exometer_callback, refresh_metric, [Metric, DataPoint]), {ok, St}; [{_, _TRef}] -> - ?log(info, "Refreshing metric ~p_~p = ~p~n", [Metric, DataPoint, Value]), {ok, report_exometer_(Metric, DataPoint, Extra, Value, St)} end; From eba8c8acdd366e9040dce53951de411fb3932cfb Mon Sep 17 00:00:00 2001 From: Chris Duranti Date: Mon, 12 Nov 2018 11:52:31 -0800 Subject: [PATCH 7/7] oops --- src/exometer_report_collectd.erl | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/exometer_report_collectd.erl b/src/exometer_report_collectd.erl index 2e39828..0b175b9 100644 --- a/src/exometer_report_collectd.erl +++ b/src/exometer_report_collectd.erl @@ -208,11 +208,8 @@ exometer_info({exometer_callback, refresh_metric, %% the entry, and we should do nothing. case ets:lookup(exometer_collectd, ets_key(Metric, DataPoint)) of [] -> - ?log(debug, "refresh_metric(~p, ~p): No longer subscribed~n", - [Metric, DataPoint]), {ok, St}; [{_, _TRef}] -> - [Metric, DataPoint, Value]), {ok, report_exometer_(Metric, DataPoint, Extra, Value, St)} end; exometer_info({exometer_callback, reconnect}, St) ->