# Flow Monitor
[![Hex.pm](https://img.shields.io/hexpm/v/flow_monitor.svg)](https://hex.pm/packages/flow_monitor)
[![Build Status](https://travis-ci.org/mpraski/flow-monitor.svg?branch=master)](https://travis-ci.org/mpraski/flow-monitor)
Elixir macro for measuring progress of steps in a [Flow](https://hexdocs.pm/flow/Flow.html) pipeline.
## Installation
Add `flow_monitor` as a dependency in your `mix.exs` file.
```elixir
defp deps do
[
# ...
{:flow_monitor, "~> x.x.x"},
]
end
```
Where `x.x.x` equals the version in [`mix.exs`](mix.exs).
Afterwards run `mix deps.get` in your command line to fetch the dependency.
## Usage
#### `FlowMonitor.run/2`
Runs the metrics collector on a given `Flow` pipeline.
Results are store in a directory `{graph_name}-{timestamp}` in a given path.
See `FlowMonitor.Config` for configurable options which can be passed as keyword list `opts`.
## Examples
#### Specify path for collected metrics, name and title
```elixir
opts = [
path: "./metrics",
graph_name: "collected-metrics",
graph_title: "Metrics collected from a Flow execution"
]
FlowMonitor.run(
1..100_000
|> Flow.from_enumerable()
|> Flow.map(&(&1 * &1)),
opts
)
```
#### Specify other graph parameters
```elixir
opts = [
font_name: "Verdana",
font_size: 12,
graph_size: {800, 600},
graph_range: {1000, 15000}
]
FlowMonitor.run(
1..100_000
|> Flow.from_enumerable()
|> Flow.map(&(&1 * &1)),
opts
)
```
## To-Do
- Add tests