aboutsummaryrefslogtreecommitdiff
path: root/lib/ex_prometheus_io.ex
diff options
context:
space:
mode:
authorkballou <kballou@devnulllabs.io>2016-03-15 16:23:48 -0600
committerkballou <kballou@devnulllabs.io>2016-03-15 16:29:31 -0600
commit0dfe1f4d46f476812344915eb268f68d3f3783b3 (patch)
tree00d2c171a0527ed32adc0a75e9c0287096ae7cd9 /lib/ex_prometheus_io.ex
parent3b374935861b8869711f1f9694e82fdf7fb4bc6b (diff)
downloadex_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.ex31
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