GithubHelp home page GithubHelp logo

jbravo / cerebro Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sncf-connect-tech/cerebro

0.0 2.0 0.0 611 KB

Open alerting platform over Graphite (timeseries) and Seyren (scheduling).

License: GNU Affero General Public License v3.0

ApacheConf 3.80% CSS 2.96% HTML 24.92% TypeScript 23.25% JavaScript 0.55% Java 44.52%

cerebro's Introduction

Cerebro: open alerting for DevOps teams

Cerebro

Cerebro is an open alerting system over Graphite, the opensource timeseries database. The service layer currently integrates with Seyren to store alarms, schedule checks and send alerts. (More backends in the future.)

Cerebro provides a service layer (REST API) and a dashboard (Web UI) to make alerting over various types of metrics more accessible to Graphite non-experts. It is dedicated to DevOps teams monitoring their product/services.

Whereas still a beta, we already use Cerebro over various types of production metrics: system, applicative, business. We have teams and users, from ops to developers as well as product owners, which find it useful as a general-purpose open alerting service. That is why we chose to share Cerebro with the community, even though there is (much) place for improvements: scalability, resilience, API, integrations…​

Features

  • Supports alarms over Graphite timeseries and email alerts for now. (More backends and alert types in the future.)

  • Use wizard-like forms to create basic, as well as advanced alarms:

    • Define basic fixed-thresholds alarms, as well as history-leveraging targets (combining Graphite functions, such as summarize or timeShift)

    • Follow natural-language instructions and illustrations to set alarm modes and options

    • Preview data and thresholds results at each step (over 1h, 1d, 1w)

  • Browse, inspect, susbscribe to existing alarms:

    • Find / browse alarms and recent alerts

    • Subscribe/Unsubscribe to any alarm (setting active status/weekdays/hours of notifications)

    • Inspect alarm details, previews, subscribers

  • Edit alarms and subscriptions in a non-blocking manner:

    • Enable/Disable, edit or duplicate existing alarms (no owner - subscribers will be notified instead)

    • Enable/Disable, edit and delete subscriptions (when no subscription remains, the alarm is deleted to)

  • Leverage the REST API for programmatic usage (deploy alarms automatically with applications?)

  • Browse basic stats over alarms, alerts and subscribers

  • Get online help, links, info:

    • Contextual help from every page (Prof. Xavier)

    • Customizable links to your wiki, chatroom, issues, mailing list…​

    • Technical details about the version (commit, author, build job, etc.)

    • API online documentation (with Swagger UI)

Note
Questions about existing/missing features and supports? auth? alarm ownership?…​ Please check the FAQ wiki.

Getting started

The following instructions show how to create an alarm with Cerebro, as well as several other features, running everything locally as Docker containers.

  • Install Maven and Docker Compose.

  • Build Cerebro:

    $ mvn clean verify
  • Run Cerebro over fresh Graphite+Seyren backends as containers:

    $ cd docker
    $ docker-compose up
  • Open the Cerebro dashboard on http://localhost (IP may be different for Docker Toolbox users).

  • Once the dashboard is loaded, click on the Prof. Xavier button to get a short description of what you see. Click on Learn more…​ to get more info and a bunch of external links.

  • Create your first alarm:

    • Open Create an alarm…​,

    • Enter some title and description,

    • Set the Graphite target, for instance carbon.agents.*.cpuUsage, then check the Preview…​ to verify there actually are values in the backend,

    • In Next step, select a Time range (summarize) function, such as the Average value over the last hour,

    • In Next step, set some Fixed thresholds values for warnings/errors, then check the Preview…​ to see the results of smoothing and thresholds,

    • In Next steps, configure email notifications (who, what, when), check the summary then Finish saving the alarm.

  • From the alarm page, scroll to Subscribers then Subscribe…​ another email with different notification params, try disabling or editing a subscription (the buttons on the cards) or the alarm itself.

  • When back to the All alarms page, verify your first alarm is visible. Click it to go back to details.

  • Cerebro Docker containers won’t actually send emails (no SMTP configured), but congratulations: you’ve just created your first alarm and subscriptions with Cerebro.

User documentation

In addition to comments and labels in the user interface, the dashboard Prof. Xavier button provides contextual information from for every page.

More user documentation will come soon.

Installation / Configuration

See the INSTALL.adoc file for installation and configuration instructions, as well as general information about dependencies, integrations, etc.

Code structure

  • dashboard : graphical user interface, running Angular 2 (TypeScript, Bootstrap, etc.)

  • docker : Docker / Compose implementation to run a Graphite+Mongo+Seyren+Cerebro stack of containers

  • selenium : Selenium integration tests over dashboard features

  • services : REST API over backends, running Spring / Java

License

See the LICENSE file.

NOTE

Cerebro sources include several links to external images from the X-Men licence/movies. Those images are not part of Cerebro sources, only their URL is embedded, merely illustrating a possible look’n’feel for the application. Please see the configuration instructions to replace them with other resources.

Frequently Asked Questions

Why Seyren? Angular 2? Why not <insert_your_language>?

Get auth? Why no ownership over alarms?

Does it scale? Can I use the beta in production?

Where is the commit history? Who are you? Where do you want to go with Cerebro?

Please check the project wiki for FAQ.

Contact

For most developers in the team, this is the first project we share to the community.

We would be glad to have your feedback.

mailto:cerebro-team(at)framalistes.org.

cerebro's People

Contributors

francoisno avatar

Watchers

Joaquin Bravo Montero avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.