Alchemetrics Web

Alchemetrics Web

Metrics for phoenix and ecto.

Travis Hex

Installation

If available in Hex, the package can be installed by adding alchemetrics_web to your list of dependencies in mix.exs:

def deps do
[
{:alchemetrics_web, "~> 0.4.0"}
]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/alchemetrics_web.

Usage

  1. Add alchemetris_web to your application list in mix.exs file:
def application do
...
applications: [:phoenix, ..., :alchemetrics_web]
...
end
  1. Plug AlchemetricsWeb to your endpoint:
defmodule MyApp.Endpoint do
use Phoenix.Endpoint, otp_app: ...
use AlchemetricsWeb
end
%{datapoint: :last_interval, request_count: %{action: :index, controller: "page_controller", type: "controller"}, value: 1}
%{datapoint: :total, request_count: %{action: :index, controller: "page_controller", type: "controller"}, value: 1}
%{datapoint: :avg, request_time: %{action: :index, controller: "page_controller", type: "controller"}, value: 192090}
%{datapoint: :max, request_time: %{action: :index, controller: "page_controller", type: "controller"}, value: 192090}
%{datapoint: :min, request_time: %{action: :index, controller: "page_controller", type: "controller"}, value: 192090}
%{datapoint: :p95, request_time: %{action: :index, controller: "page_controller", type: "controller"}, value: 192090}
%{datapoint: :p99, request_time: %{action: :index, controller: "page_controller", type: "controller"}, value: 192090}
%{datapoint: :total, request_time: %{action: :index, controller: "page_controller", type: "controller"}, value: 192090}
%{datapoint: :last_interval, request_time: %{action: :index, controller: "page_controller",type: "controller"}, value: 192090}
  1. To collect and report ecto query metrics, config ecto logger in config.exs:
config :my_app, MyApp.Repo, ...,
loggers: [..., {AlchemetricsWeb.Collectors.Ecto, :collect, []}]

Ecto collector will report the follow data:

%{datapoint: :total, options: [], query_count: %{type: "database.ecto"}, value: 1}
%{datapoint: :total, name: "queue_time", options: [], type: "database.ecto", value: 46}