kollekt-erlang

Created: 2012-03-20 09:20
Updated: 2017-11-13 14:02

README.md

kollekt-erlang

Yet another implementation of the kollekt service (origin by Paul Asmuth).

Motivation

Collect statistical data without handling them in the corresponding app itself.

Using UDP for a fire-and-forget mechanism (if we loose some packets we don't care).

Using Erlang to reduce the packet drops as much as possible (because Erlang has message inboxes for every process).

Building a distributed collector app, so the overlying production app servers do not need to communicate to one single collect service. And the distributed system will give fault-tolerance by sharing collected data across the node cluster.

Bucket data

Can be send as following:

mybucket;mybucketdata

or as concatenated list:

bucket1;valueA|||bucket2;valueB|||...

Delimiters can be changed in src/kollekt.hrl.

Take care, which delimiters you want to use, they must not occur in the bucket or value data!

Usage

Prerequisites

Install Erlang (I build with R15B).

Compile

./compile

Run

Demo service:

./run

Test emitter:

./run_emitter

in development, everything can (and will) change, stay tuned …

Status

  • OTP'fied where possible and reasonable
  • statistical output on console
  • app handles incoming buckets, collects data and let buckets die when needed

TODOs

  • when buckets die they should export their bucket data to a storage (files, DB, …)
  • exports rules (time based, size based, …)
  • distributable (running on different nodes)
  • using Mnesia as a first level storage (a dedicated process can then export to further targets based on rules)
Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more