diff options
author | kballou <kballou@devnulllabs.io> | 2016-03-15 16:23:48 -0600 |
---|---|---|
committer | kballou <kballou@devnulllabs.io> | 2016-03-15 16:29:31 -0600 |
commit | 0dfe1f4d46f476812344915eb268f68d3f3783b3 (patch) | |
tree | 00d2c171a0527ed32adc0a75e9c0287096ae7cd9 /lib/ex_prometheus_io.ex | |
parent | 3b374935861b8869711f1f9694e82fdf7fb4bc6b (diff) | |
download | ex_prometheus_io-0dfe1f4d46f476812344915eb268f68d3f3783b3.tar.gz ex_prometheus_io-0dfe1f4d46f476812344915eb268f68d3f3783b3.tar.xz |
Add Prometheus Query Operations
These are basic fetch functions to query data from a prometheus endpoint.
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 |