diff options
Diffstat (limited to 'lib/ex_prometheus_io.ex')
-rw-r--r-- | lib/ex_prometheus_io.ex | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/ex_prometheus_io.ex b/lib/ex_prometheus_io.ex index e1c9427..cac39a5 100644 --- a/lib/ex_prometheus_io.ex +++ b/lib/ex_prometheus_io.ex @@ -1,2 +1,33 @@ defmodule ExPrometheusIo do + use Application + + def start(_, _) do + ExPrometheusIo.Supervisor.start_link + end + + def query(query, _opts \\ []) do + query_opts = [query] + spawn_query(:fetch_query, query_opts) + end + + def range(query, start_ts, end_ts, step, _opts \\ []) do + query_opts = [query, start_ts, end_ts, step] + spawn_query(:fetch_range, query_opts) + end + + def series(matches, _opts \\ []) do + spawn_query(:fetch_series, [matches]) + end + + defp spawn_query(fetch, query_opts, _opts \\ []) do + query_ref = make_ref() + query_opts = query_opts ++ [query_ref, self()] + {:ok, pid} = Task.Supervisor.start_child( + ExPrometheusIo.QuerySupervisor, + ExPrometheusIo.Query, + fetch, + query_opts) + {pid, query_ref} + end + end |