crow

A munin node implementation written in Elixir


Keywords
elixir, graphs, monitoring, munin, munin-node
License
ISC

Documentation

crow

Crow implements an extensible Munin node in Elixir. Extensive documentation can be found on https://hexdocs.pm/crow.

Using Crow, you can set up informative graphs about your Elixir applications quickly and easily. For instance, this is what the CrowPlugins.BEAM.Memory and CrowPlugins.BEAM.IO plugins generate for you to view in Munin:

daily & weekly memory usage & bytes via port in / out graphs

Overview

Crow has an acceptor process that deals with listening to connections on a configured port (defaulting to 4949). On connection, a worker is spawned that speaks the munin master-node data exchange protocol.

The worker provides the connected peer with access to plugins, plugins are modules that implement the Crow.Plugin behaviour. The crow_plugins repository contains a couple of plugins that can be used in monitoring the BEAM itself.

Installation

You can install crow by adding it to your mix.exs:

def deps do
  [
    {:crow, "~> 0.1"}
  ]
end

After adding Crow to your Elixir app, register the server running it in your Munin master configuration. For instance, if you have an Elixir app with Crow listening on port 4949, the following configuration would suffice (assuming you also installed a munin node):

[myapp]
    address 127.0.0.1

However, it's recommended to run Crow alongside a regular Munin node, which tends to listen on 4949 itself. Therefore, assuming you want to have information from both your server and the app, you could use a configuration like the following:

[example.com]
    address 127.0.0.1

[example.com;myapp]
    address 127.0.0.1
    port    4950