This receives webhook requests from Alertmanager and creates GitHub issues.
It does:
- open an issue on a new alert
- close the issue when the alert is in resolved status
- reopen the issue when the alert is in firing status
- alerts are identified by
groupKey
; configurable via--alert-id-template
option
- alerts are identified by
docker pull quay.io/pfnet-alertmanager-to-github/alertmanager-to-github:v0.0.1
go get github.com/pfnet-research/alertmanager-to-github
Start webhook server:
$ read ATG_GITHUB_TOKEN
(Personal Access Token)
$ export ATG_GITHUB_TOKEN
$ alertmanager-to-github start
Add a receiver to Alertmanager config:
route:
receiver: 'togithub' # default
receivers:
- name: "togithub"
webhook_configs:
# Create issues in "bar" repo in "foo" organization.
# repo and owner parameters must be URL-encoded.
- url: 'http://localhost:8080/v1/webhook?owner=foo&repo=bar'
$ alertmanager-to-github start -h
NAME:
alertmanager-to-github start - Start webhook HTTP server
USAGE:
alertmanager-to-github start [command options] [arguments...]
OPTIONS:
--listen value HTTP listen on (default: ":8080") [$ATG_LISTEN]
--github-url value GitHub Enterprise URL (e.g. https://github.example.com) [$ATG_GITHUB_URL]
--labels value Issue labels [$ATG_LABELS]
--body-template-file value Body template file [$ATG_BODY_TEMPLATE_FILE]
--title-template-file value Title template file [$ATG_TITLE_TEMPLATE_FILE]
--alert-id-template value Alert ID template (default: "{{.Payload.GroupKey}}") [$ATG_ALERT_ID_TEMPLATE]
--github-token value GitHub API token (command line argument is not recommended) [$ATG_GITHUB_TOKEN]
--help, -h show help (default: false)
To create issues in GHE, set --github-url
option or ATG_GITHUB_URL
environment variable.
Issue title and body are rendered from Go template and you can use custom templates via --body-template-file
and --title-template-file
options. In the templates, you can use the following variables and functions.
- Variables
.Payload
: Webhook payload incoming to this receiver. For more information, seeWebhookPayload
in pkg/types/payload.go
- Functions
urlQueryEscape
: Escape a string as a URL queryjson
: Marshal an object to JSON stringtimeNow
: Get current time
https://github.com/pfnet-research/alertmanager-to-github/tree/master/example/kubernetes