License
MIT License
The Sensu Go OpsGenie Handler is a Sensu Event Handler which manages
OpsGenie incidents, for alerting operators. With this handler,
Sensu can trigger OpsGenie incidents.
This handler was inspired by pagerduty plugin.
After version 1.0.0 we changed opsgenie sdk to sdk-v2.
Download the latest version of the sensu-opsgenie-handler from releases,
or create an executable script from this source.
From the local path of the sensu-opsgenie-handler repository:
go build -o /usr/local/bin/sensu-opsgenie-handler main.go
Example Sensu Go handler definition:
{
"api_version": "core/v2",
"type": "Handler",
"metadata": {
"namespace": "default",
"name": "opsgenie"
},
"spec": {
"type": "pipe",
"command": "sensu-opsgenie-handler",
"env_vars": [
"OPSGENIE_AUTHTOKEN=SECRET",
"OPSGENIE_TEAM=TEAM_NAME",
"OPSGENIE_REGION=eu"
],
"timeout": 10,
"filters": [
"is_incident"
]
}
}
Example Sensu Go check definition:
{
"api_version": "core/v2",
"type": "CheckConfig",
"metadata": {
"namespace": "default",
"name": "dummy-app-healthz"
},
"spec": {
"command": "check-http -u http://localhost:8080/healthz",
"subscriptions":[
"dummy"
],
"publish": true,
"interval": 10,
"handlers": [
"opsgenie"
]
}
}
Help:
The Sensu Go OpsGenie handler for incident management
Usage:
sensu-opsgenie-handler [flags]
Flags:
--allowOverride Using --allowOverride will enable settings from sensu event and it will override OPSGENIE_AUTHTOKEN and OPSGENIE_TEAM environment variables
-a, --auth string The OpsGenie V2 API authentication token, use default from OPSGENIE_AUTHTOKEN env var (no default value)
-h, --help help for sensu-opsgenie-handler
-r, --region string The OpsGenie V2 API URL, use default from OPSGENIE_REGION env var (default value us)
--sensuDashboard string The OpsGenie Handler will use it to create a source Sensu Dashboard URL. Use OPSGENIE_SENSU_DASHBOARD. Example: http://sensu-dashboard.example.local/c/~/n
-t, --team string The OpsGenie V2 API Team, use default from OPSGENIE_TEAM env var (no default value)
-w, --withAnnotations string The OpsGenie Handler will parse check and entity annotations with these values. Use OPSGENIE_ANNOTATIONS env var with commas, like: documentation,playbook (default value "documentation,playbook")
Note: Make sure to set the OPSGENIE_AUTHTOKEN
environment variable for sensitive credentials in production to prevent leaking into system process table. Please remember command arguments can be viewed by unprivileged users using commands such as ps
or top
. The --auth
argument is provided as an override primarily for testing purposes.
To configure OpsGenie Sensu Integration follow these first part in OpsGenie Docs.
Please add this annotations inside sensu-agent:
# /etc/sensu/agent.yml example
annotations:
opsgenie_priority: "P1"
Or inside check:
{
"type": "CheckConfig",
"api_version": "core/v2",
"metadata": {
"name": "interval_check",
"namespace": "default",
"annotations": {
"opsgenie_priority": "P2",
"documentation": "https://docs.sensu.io/sensu-go/latest"
}
},
"spec": {
"command": "check-cpu.sh -w 75 -c 90",
"subscriptions": ["system"],
"handlers": ["opsgenie"],
"interval": 60,
"publish": true
}
}
With this new feature you can include any annotation field in message to show inside OpsGenie alert. By default they will look for documentation and playbook.
Important: If you configure it in entity annotations or check annotations make sure to configure both options opsgenie_authtoken
and opsgenie_team
, because using a new api key should be related in another Team. And check annotations will always override entity annotation that means if it found 2 annotations with auth token, it will use that from check. Make sure to configure redact for opsgenie_authtoken
.
You should run sensu-opsgenie-handler with --allowOverride
flag. Example:
{
"api_version": "core/v2",
"type": "Handler",
"metadata": {
"namespace": "default",
"name": "opsgenie"
},
"spec": {
"type": "pipe",
"command": "sensu-opsgenie-handler --allowOverride",
"env_vars": [
"OPSGENIE_AUTHTOKEN=SECRET",
"OPSGENIE_TEAM=TEAM_NAME"
],
"timeout": 10,
"filters": [
"is_incident"
]
}
}
Example of Check using annotation opsgenie_authtoken
and opsgenie_team
:
{
"type": "CheckConfig",
"api_version": "core/v2",
"metadata": {
"name": "interval_check",
"namespace": "default",
"annotations": {
"opsgenie_priority": "P2",
"opsgenie_authtoken": "long-auth-token",
"opsgenie_team": "newTeam",
"documentation": "https://docs.sensu.io/sensu-go/latest"
}
},
"spec": {
"command": "check-cpu.sh -w 75 -c 90",
"subscriptions": ["system"],
"handlers": ["opsgenie"],
"interval": 60,
"publish": true
}
}
The easiest way to get this handler added to your Sensu environment, is to add it as an asset from Bonsai:
sensuctl asset add betorvs/sensu-opsgenie-handler --rename sensu-opsgenie-handler
See sensuctl asset --help
for details on how to specify version.
Another option is to manually register the asset by providing a URL to the tar.gz file, and sha512 hash for that file:
sensuctl asset create sensu-opsgenie-handler --url "https://assets.bonsai.sensu.io/fba8c41f2b5bc817f8fb201144627042a3e31ee3/sensu-opsgenie-handler_0.0.4_linux_amd64.tar.gz" --sha512 "5eda4b31371fae83860604dedbf8527d0d6919bfae8e4f5b33f71bd314f6d706ef80356b14f11d7d2f86923df722338a3d11b84fa1e35323959120b46b738487"
See https://github.com/sensu/sensu-go/blob/master/CONTRIBUTING.md
Please describe the reason for reporting this asset. Our moderators will be notified and will disable the asset if it is found to be inappropriate.
×