Log Boom

by alshamiri5

GitHub Readme.md

Log Boom

Provides a ring buffer storage for your Heroku logs.

Work in Progress

This is very much a work in progress project. There are many tasks remaining. The list below is merely a brain dump of ideas on where to take this project.

  • Configurable Backend Datastores
    • Memory
    • Redis
    • S3 Bucket
  • Multi Drain Capable
  • Log Drain Endpoint
    • Basic Endpoint (No Auth)
    • Heroku Drain Token Auth
  • List Endpoint
    • Basic Endpoint (No Auth)
    • Authentication
    • Live Tail Streaming
  • Healthcheck Endpoint
    • Ensures backend is functional
  • Welcome Success URL Endpoint
    • Guided steps to drain from another app to this collector
    • Authenticated, perhaps heroku-bouncer style to allow only app collaborators access to guided setup
  • CLI Binary
    • Dumps n items from ring buffer
    • Dumps n items from ring buffer then live tail

Installation

Click the button

Deploy

Customization

There are several environment variables that you can tweak to customize your experience

Name Default Description BUFFER_SIZE 1500 Optional, controls the size of the ring buffer in log lines. LISTEN 0.0.0.0 Optional, controls which interface to listen on. PORT N/A Required, controls which port to listen on, eg 5000. DATASTORE memory Optional, controls which backend to utilize. Available options are memory or redis.

Backend Datastores

Memory Store

The memory store will keep the logs buffered in memory. If the application restarts or crashes in anyway all the store logs are lost.

There is no additional configuration required for the memory datastore.

Redis Store

The redis datastore will utilize redis to store the logs. The persistance of the data in that redis datastore is completly up to the owner of that redis server.

The simplest way to to wire up a redis datastore is to use Heroku Redis or any 3rd Party Redis Add-on.

In order to utlize the memory datastore two additional environment variables that can be customized.

Name Default Description REDIS_URL N/A Required, controls which redis to connect to. Automatically set when using a Heroku Redis. REDIS_POOL_SIZE 4 Optional, controls the number of available redis pooled connections.