Essential ZMON Components

To use ZMON requires these four components: zmon-controller, zmon-scheduler, zmon-worker, and zmon-eventlog-service.

../_images/components1.svg

Controller

zmon-controller runs ZMON’s AngularJS frontend and serves as an endpoint for retrieving data and managing your ZMON deployment via REST API (with help from the command line client). It needs a connection configured to:

  • PostgreSQL to store/retrieve all kind of data: entities, checks, dashboards, alerts
  • Redis, to keep the state of ZMON’s alerts
  • KairosDB, if you want charts/Grafana

To provide a means of authentication and authorization, you can choose between the following options:

  • A basic credential file
  • An OAuth2 identity provider, e.g., GitHub

Scheduler

zmon-scheduler is responsible for keeping track of all existing entities, checks and alerts and scheduling checks in time for applicable entities, which are then executed by the worker.

Needs connections to:

  • Redis, which serves ZMON as a task queue
  • Controller, to get check/alerts/entities
  • Custom adapters might need connections for entity discovery in your platform

Worker

zmon-worker does the heavy lifting — executing tasks against entities and evaluating all alerts assigned to this check. Tasks are picked up from Redis and the resulting check value plus alert state changes are written back to Redis.

Needs connection to:
  • Redis to retrieve tasks and update current state
  • KairosDB if you want to have metrics
  • EventLog service to store history events for alert state changes

EventLog Service

zmon-eventlog-service is our slim implementation of an event store, keeping track of Events related to alert state changes as well as events like alert and check modification by the user.

Needs connection to:
  • PostgreSQL to store events using jsonb