Skip to content

messagebird/sachet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
marcel corso gonzalez
Dec 20, 2022
65fcbcb · Dec 20, 2022
Mar 18, 2022
Dec 18, 2022
Dec 18, 2022
Dec 20, 2022
Feb 3, 2022
Mar 16, 2022
Mar 17, 2022
Apr 22, 2021
Apr 7, 2022
May 7, 2018
Mar 23, 2022
Aug 30, 2019
Feb 3, 2022
Feb 3, 2022
Apr 22, 2021
Oct 30, 2019

Repository files navigation

Sachet

Sachet (or सचेत) is Hindi for conscious. Sachet is an SMS alerting tool for the Prometheus Alertmanager.

The problem

There are many SMS providers and Alertmanager supporting all of them would make the code noisy. To get around this issue a new service needed to be created dedicated only for SMS.

The solution

An HTTP API that accepts Alertmanager webhook calls and allows an end-user to configure it for the SMS provider of their dreams.

Usage

First get it

$ go get github.com/messagebird/sachet/cmd/sachet

And then running Sachet is as easy as executing sachet on the command line.

$ sachet

Use the -h flag to get help information.

$ sachet -h
Usage of sachet:
  -config string
        The configuration file (default "config.yaml")
  -listen-address string
        The address to listen on for HTTP requests. (default ":9876")

Testing

Sachet expects a JSON object from Alertmanager. The format of this JSON is described in the Alertmanager documentation, or, alternatively, in the Alertmanager GoDoc.

To quickly test Sachet is working you can also run:

$ curl -H "Content-type: application/json" -X POST \
  -d '{"receiver": "team-sms", "status": "firing", "alerts": [{"status": "firing", "labels": {"alertname": "test-123"} }], "commonLabels": {"key": "value"}}' \
  http://localhost:9876/alert

Alertmanager configuration

To enable Sachet you need to configure a webhook in Alertmanager. You can do that by adding a webhook receiver to your Alertmanager configuration.

receivers:
- name: 'team-sms'
  webhook_configs:
  - url: 'http://localhost:9876/alert'

Message templating

Sachet supports Alertmanager-like templates for message content. You can do that by simply copying Alertmanager templates to Sachet. Some templates examples can be found in the Alertmanager documentation as well as available variables.

sachet.yml:

templates:
- /etc/sachet/notifications.tmpl

receivers:
- name: 'team-telegram'
  provider: telegram
  text: '{{ template "telegram_message" . }}'

notifications.tmpl:

{{ define "telegram_title" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} @ {{ .CommonLabels.identifier }} {{ end }}

{{ define "telegram_message" }}
{{ if gt (len .Alerts.Firing) 0 }}
*Alerts Firing:*
{{ range .Alerts.Firing }}• {{ .Labels.instance }}: {{ .Annotations.description }}
{{ end }}{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}
*Alerts Resolved:*
{{ range .Alerts.Resolved }}• {{ .Labels.instance }}: {{ .Annotations.description }}
{{ end }}{{ end }}{{ end }}

{{ define "telegram_text" }}{{ template "telegram_title" .}}
{{ template "telegram_message" . }}{{ end }}

License

Sachet is licensed under The BSD 2-Clause License. Copyright (c) 2016, MessageBird