Send Prometheus Alerts to IRC using Webhooks
Go to file
Luca Bigliardi 581677b635 Update tests to handle new fingerprint field
Signed-off-by: Luca Bigliardi <shammash@google.com>
2020-01-25 16:16:10 +00:00
.circleci Add basic CircleCI config 2018-06-07 15:07:38 +01:00
.gitignore Initial commit 2018-05-21 15:11:55 +01:00
backoff_test.go Initial code check-in 2018-05-21 15:49:47 +01:00
backoff.go Initial code check-in 2018-05-21 15:49:47 +01:00
config_test.go Initial code check-in 2018-05-21 15:49:47 +01:00
config.go Initial code check-in 2018-05-21 15:49:47 +01:00
CONTRIBUTING.md Initial code check-in 2018-05-21 15:49:47 +01:00
data.go Initial code check-in 2018-05-21 15:49:47 +01:00
http_test.go Update tests to handle new fingerprint field 2020-01-25 16:16:10 +00:00
http.go Initial code check-in 2018-05-21 15:49:47 +01:00
irc_test.go Initial code check-in 2018-05-21 15:49:47 +01:00
irc.go Initial code check-in 2018-05-21 15:49:47 +01:00
LICENSE Initial code check-in 2018-05-21 15:49:47 +01:00
main.go Initial code check-in 2018-05-21 15:49:47 +01:00
README.md Initial code check-in 2018-05-21 15:49:47 +01:00
testdata.go Update tests to handle new fingerprint field 2020-01-25 16:16:10 +00:00

Alertmanager IRC Relay

Alertmanager IRC Relay is a bot relaying Prometheus alerts to IRC. Alerts are received from Prometheus using Webhooks and are relayed to an IRC channel.

Configuring and running the bot

To configure and run the bot you need to create a YAML configuration file and pass it to the service. Running the service without a configuration will use the default test values and connect to a default IRC channel, which you probably do not want to do.

Example configuration:

# Start the HTTP server receiving alerts from Prometheus Webhook binding to
# this host/port.
#
http_host: localhost
http_port: 8000

# Connect to this IRC host/port.
#
# Note: SSL is enabled by default, use "irc_use_ssl: no" to disable.
irc_host: irc.example.com
irc_port: 7000

# Use this IRC nickname.
irc_nickname: myalertbot
# Password used to identify with NickServ
irc_nickname_password: mynickserv_key
# Use this IRC real name
irc_realname: myrealname

# Optionally pre-join certain channels.
#
# Note: If an alert is sent to a non # pre-joined channel the bot will join
# that channel anyway before sending the notice. Of course this cannot work
# with password-protected channels.
irc_channels:
  - name: "#mychannel"
  - name: "#myprivatechannel"
    password: myprivatechannel_key

# Define how IRC messages should be sent.
#
# Send only one notice when webhook data is received.
# Note: By default a notice is sent for each alert in the webhook data.
notice_once_per_alert_group: no

# Define how IRC messages should be formatted.
#
# The formatting is based on golang's text/template .
notice_template: "Alert {{ .Labels.alertname }} on {{ .Labels.instance }} is {{ .Status }}"
# Note: When sending only one notice per alert group the default
# notice_template is set to
# "Alert {{ .GroupLabels.alertname }} for {{ .GroupLabels.job }} is {{ .Status }}"

Running the bot (assuming GOPATH* and *PATH are properly setup for go):

$ go install github.com/google/alertmanager-irc-relay
$ alertmanager-irc-relay --config /path/to/your/config/file

Prometheus configuration

Prometheus can be configured following the official Webhooks documentation. The url must specify the IRC channel name that alerts should be sent to:

send_resolved: false
url: http://localhost:8000/mychannel