Home

Awesome

AppOptex

CircleCI Hex.pm

Client for AppOptics API, as listed on AppOptics community created language bindings

Installation

The package can be installed by adding app_optex to your list of dependencies in mix.exs:

def deps do
  [
    {:app_optex, "~> 0.1.0"}
  ]
end

Documentation can be found at https://hexdocs.pm/app_optex.

Usage

Uses the APPOPTICS_TOKEN environment variable.

Send a single measurement

  iex> AppOptex.measurement("my.metric", 10, %{my_tag: "value"})
  :ok
  iex> AppOptex.measurement(%{name: "my.metric", value: 10}, %{my_tag: "value"})
  :ok

Send multiple measurements

  iex> AppOptex.measurements([%{name: "my.metric", value: 1}, %{name: "my.other_metric", value: 5}], %{my_tag: "value"})
  :ok

Read metrics

  iex> AppOptex.read_measurements("my.metric", 60, %{duration: 86400})
  %{
    "attributes" => %{"created_by_ua" => "hackney/1.15.1"},
    "links" => [],
    "name" => "my.metric",
    "resolution" => 60,
    "series" => [
      %{
        "measurements" => [%{"time" => 1554720060, "value" => 10.0}],
        "tags" => %{"my_tag" => "value"}
      }
    ]
  }

Set global tags

These tags will be applied to every sent measurement.

  iex> AppOptex.put_global_tags(%{my: "tag"})
  :ok

Read global tags

  iex> AppOptex.get_global_tags()
  %{my: "tag"}

Send using a queue

  iex> AppOptex.push_to_queue([%{name: "my.metric.1", value: 1}], %{test: true})
  :ok
  iex> AppOptex.push_to_queue([%{name: "my.metric.2", value: 1}], %{test: true})
  :ok
  iex> AppOptex.push_to_queue([%{name: "my.metric.3", value: 1}], %{test: true})
  :ok
  iex> AppOptex.flush_queue()
  :ok