GithubHelp home page GithubHelp logo

raystack / siren Goto Github PK

View Code? Open in Web Editor NEW
77.0 77.0 12.0 7.2 MB

Siren provides an easy-to-use universal alert, notification, channels management framework for the entire observability infrastructure.

Home Page: https://odpf.github.io/siren/

License: Apache License 2.0

Dockerfile 0.01% Makefile 0.32% Go 99.67%
alerting dataops influx monitoring prometheus

siren's Introduction

Siren

test workflow License Version Coverage Status

Siren provides alerting on metrics of your applications using Cortex metrics in a simple DIY configuration. With Siren, you can define templates(using go templates standard), and create/edit/enable/disable prometheus rules on demand. It also gives flexibility to manage bulk of rules via YAML files. Siren can be integrated with any client such as CI/CD pipelines, Self-Serve UI, microservices etc.

Key Features

  • Rule Templates: Siren provides a way to define templates over alerting rule which can be reused to create multiple instances of the same rule with configurable thresholds.
  • Subscriptions: Siren can be used to subscribe to notifications (with desired matching conditions) via the channel of your choice.
  • Multi-tenancy: Rules created with Siren are by default multi-tenancy aware.
  • DIY Interface: Siren can be used to easily create/edit alerting rules. It also provides soft-delete (disable) so that you can preserve thresholds in case you need to reuse the same alert.
  • Managing bulk rules: Siren enables users to manage bulk alerting rules using YAML files in specified format with simple CLI.
  • Receivers: Siren can be used to send out notifications to several channels (slack, pagerduty, email etc).
  • Alert History: Siren can store alerts triggered by monitoring & alerting provider e.g. Cortex Alertmanager, which can be used for audit purposes. To know more, follow the detailed documentation

Usage

Explore the following resources to get started with Siren:

  • Guides provides guidance on usage.
  • Concepts describes all important Siren concepts including system architecture.
  • Reference contains the details about configurations and other aspects of Siren.
  • Contribute contains resources for anyone who wants to contribute to Siren.

Run with Kubernetes

  • Create a siren deployment using the helm chart available here

Running locally

Siren requires the following dependencies:

  • Docker
  • Golang (version 1.18 or above)
  • Git

Run the application dependencies using Docker:

$ docker-compose up

Update the configs(db credentials etc.) as per your dev machine and docker configs.

Run the following commands to compile from source

$ git clone [email protected]:odpf/siren.git
$ cd siren
$ go build main.go

Running tests

# To run tests locally
$ make test

# To run tests locally with coverage
$ make test-coverage

Generate Server Configuration

# To generate server configuration
$ go run main.go server init

This will generate a file ./config.yaml.

Running Server

# To run server locally
$ go run main.go server start

To view swagger docs of HTTP APIs visit /documentation route on the server. e.g. http://localhost:3000/documentation

Contribute

Development of Siren happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving Siren.

Read our contributing guide to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to Siren.

To help you get your feet wet and get you familiar with our contribution process, we have a list of good first issues that contain bugs which have a relatively limited scope. This is a great place to get started.

This project exists thanks to all the contributors.

License

Siren is Apache 2.0 licensed.

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.