alerta / docker-alerta

Run alerta in a docker container
https://hub.docker.com/r/alerta/alerta-web
MIT License
159 stars 139 forks source link
alerta docker monitoring

What is Alerta?

The alerta monitoring system is a tool used to consolidate and de-duplicate alerts from multiple sources for quick ‘at-a-glance’ visualisation. With just one system you can monitor alerts from many other monitoring tools on a single screen.

How to use this image

To use this image run either a mongo or postgres container first:

$ docker run --name alerta-db -d mongo

Then link to the database container when running the alerta-web container:

$ export DATABASE_URL=mongodb://db:27017/monitoring
$ docker run --name alerta-web -e DATABASE_URL=$DATABASE_URL --link alerta-db:db \
-d -p <port>:8080 alerta/alerta-web

The API endpoint is at:

http://<docker>:<port>/api

Browse to the alerta console at:

http://<docker>:<port>/

Environment Variables

The following environment variables are supported for configuring the alerta-web container specifically for Docker deployments:

ADMIN_PASSWORD

ADMIN_KEY

ADMIN_KEY_MAXAGE

HEARTBEAT_SEVERITY

The following environment variables are supported by the Alerta API to ease deployment more generally:

DEBUG

LOG_LEVEL

SUPERVISORD_LOG_LEVEL

SECRET_KEY

DATABASE_URL

DATABASE_NAME

AUTH_REQUIRED

AUTH_PROVIDER

ADMIN_USERS

CUSTOMER_VIEWS

OAUTH2_CLIENT_ID

OAUTH2_CLIENT_SECRET

ALLOWED_EMAIL_DOMAINS

GITHUB_URL

ALLOWED_GITHUB_ORGS

GITLAB_URL

ALLOWED_GITLAB_GROUPS

KEYCLOAK_URL

KEYCLOAK_REALM

ALLOWED_KEYCLOAK_ROLES

CORS_ORIGINS

MAIL_FROM

SMTP_PASSWORD

PLUGINS

NGINX_WORKER_PROCESSES

NGINX_WORKER_CONNECTIONS

UWSGI_PROCESSES

UWSGI_LISTEN

UWSGI_BUFFER_SIZE

UWSGI_MAX_WORKER_LIFETIME

UWSGI_WORKER_LIFETIME_DELTA

Configuration Files

To set configuration settings not supported by environment variables use configuration files instead. For example:

$ docker run -v $PWD/config/alertad.conf:/app/alertad.conf \
  -v $PWD/config/config.json:/web/config.json \
  -p <port>:8080 alerta/alerta-web

For a full list of server configuration options see https://docs.alerta.io.

Plugins

All built-in and contributed plugins are installed at image build time. Only plugins listed in PLUGINS environment variabled will be enabled.

In the example below, of all the plugins installed only those listed will be enabled at container start time:

PLUGINS=remote_ip,reject,heartbeat,blackout,slack,prometheus

Custom plugins should be installed as an additional image layer.

Authentication

To make it easy to get going with Alerta on docker quickly, the default image will use Basic Auth for user logins and login will be optional.

To allow users to login using Google OAuth, go to the Google Developer Console and create a new client ID for a web application. Then set the CLIENT_ID and CLIENT_SECRET environment variables on the command line as follows:

$ export CLIENT_ID=379647311730-6tfdcopl5fodke08el52nnoj3x8mpl3.apps.googleusercontent.com
$ export CLIENT_SECRET=UpJxs02c_bx9GlI3X8MPL3-p

Now pass in the defined environment variables to the docker run command:

$ docker run --name alerta-web  -e AUTH_PROVIDER=google -e CLIENT_ID=$CLIENT_ID \
-e CLIENT_SECRET=$CLIENT_SECRET -d -p <port>:8080 alerta/alerta-web

This will allow users to login but will only make it optional. To enforce users to login you must also set the AUTH_REQUIRED environment variable to True when starting the docker image:

$ docker run --name alerta-web -e AUTH_REQUIRED=True -e ...

To restrict logins to a certain email domain set the ALLOWED_EMAIL_DOMAIN environment variable as follows:

$ docker run --name alerta-web -e ALLOWED_EMAIL_DOMAIN=example.com ...

GitHub and GitLab can also be used as the OAuth2 providers by setting the AUTH_PROVIDER environment variable to github and gitlab respectively. For more information on using GitHub, GitHub Enterprise or GitLab as th OAuth2 provider see https://docs.alerta.io

Docker Compose

Use docker-compose to create and start Alerta and Postgres with one command:

$ docker-compose up

Example Docker Compose File

version: '2.1'
services:
  web:
    image: alerta/alerta-web
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      - DEBUG=1  # remove this line to turn DEBUG off
      - DATABASE_URL=postgres://postgres:postgres@db:5432/monitoring
      - AUTH_REQUIRED=True
      - ADMIN_USERS=admin@alerta.io,devops@alerta.io #default password: alerta
      - ADMIN_KEY=demo-key
      - PLUGINS=reject,blackout,normalise,enhance
    restart: always
  db:
    image: postgres
    volumes:
      - ./pg-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: monitoring
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    restart: always

Command-line Tool

A command-line tool for alerta is available. To install it run:

$ pip install alerta

Configuration file $HOME/.alerta.conf:

[DEFAULT]
endpoint = http://<docker>:<port>/api

If authentication is enabled (ie. AUTH_REQUIRED is True), then create a new API key in the Alerta console and add the key to the configuration file. For example:

[DEFAULT]
endpoint = ...
key = 4nHAAslsGjLQ9P0QxmAlKIapLTSDfEfMDSy8BT+0

Further Reading

More information about Alerta can be found at http://docs.alerta.io

License

Copyright (c) 2014-2020 Nick Satterly. Available under the MIT License.