2021-05-04 06:58:39 -05:00
package alerting
import (
"fmt"
"io/ioutil"
"net/http"
"testing"
"github.com/stretchr/testify/require"
2021-05-13 12:28:19 -05:00
"github.com/grafana/grafana/pkg/bus"
2022-01-20 04:10:12 -06:00
"github.com/grafana/grafana/pkg/infra/tracing"
2021-05-04 06:58:39 -05:00
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/tests/testinfra"
)
func TestAvailableChannels ( t * testing . T ) {
2022-01-20 04:10:12 -06:00
_ , err := tracing . InitializeTracerForTest ( )
require . NoError ( t , err )
2021-05-04 06:58:39 -05:00
dir , path := testinfra . CreateGrafDir ( t , testinfra . GrafanaOpts {
2021-09-29 09:16:40 -05:00
DisableLegacyAlerting : true ,
EnableUnifiedAlerting : true ,
DisableAnonymous : true ,
2021-05-04 06:58:39 -05:00
} )
2021-08-25 08:11:22 -05:00
grafanaListedAddr , store := testinfra . StartGrafana ( t , dir , path )
2021-05-13 12:28:19 -05:00
store . Bus = bus . GetBus ( )
2021-05-04 06:58:39 -05:00
2021-05-13 12:28:19 -05:00
// Create a user to make authenticated requests
2021-08-12 08:04:09 -05:00
createUser ( t , store , models . CreateUserCommand {
DefaultOrgRole : string ( models . ROLE_EDITOR ) ,
Password : "password" ,
Login : "grafana" ,
} )
2021-05-13 12:28:19 -05:00
alertsURL := fmt . Sprintf ( "http://grafana:password@%s/api/alert-notifiers" , grafanaListedAddr )
2021-05-04 06:58:39 -05:00
// nolint:gosec
resp , err := http . Get ( alertsURL )
require . NoError ( t , err )
t . Cleanup ( func ( ) {
err := resp . Body . Close ( )
require . NoError ( t , err )
} )
b , err := ioutil . ReadAll ( resp . Body )
require . NoError ( t , err )
require . Equal ( t , 200 , resp . StatusCode )
require . JSONEq ( t , expAvailableChannelJsonOutput , string ( b ) )
}
var expAvailableChannelJsonOutput = `
[
{
"type" : "dingding" ,
"name" : "DingDing" ,
"heading" : "DingDing settings" ,
"description" : "Sends HTTP POST request to DingDing" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Url" ,
"description" : "" ,
"placeholder" : "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "Message Type" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "msgType" ,
"selectOptions" : [
{
"value" : "link" ,
"label" : "Link"
} ,
{
"value" : "actionCard" ,
"label" : "ActionCard"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Message" ,
"description" : "" ,
"placeholder" : "{{ template \"default.message\" . }}" ,
"propertyName" : "message" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
2021-05-19 13:02:09 -05:00
{
"type" : "kafka" ,
"name" : "Kafka REST Proxy" ,
"heading" : "Kafka settings" ,
"description" : "Sends notifications to Kafka Rest Proxy" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Kafka REST Proxy" ,
"description" : "" ,
"placeholder" : "http://localhost:8082" ,
"propertyName" : "kafkaRestProxy" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Topic" ,
"description" : "" ,
"placeholder" : "topic1" ,
"propertyName" : "kafkaTopic" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
2021-05-04 06:58:39 -05:00
{
"type" : "email" ,
"name" : "Email" ,
"heading" : "Email settings" ,
"description" : "Sends notifications using Grafana server configured SMTP settings" ,
"info" : "" ,
"options" : [
{
"element" : "checkbox" ,
"inputType" : "" ,
"label" : "Single email" ,
"description" : "Send a single email to all recipients" ,
"placeholder" : "" ,
"propertyName" : "singleEmail" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Addresses" ,
"description" : "You can enter multiple email addresses using a \";\" separator" ,
"placeholder" : "" ,
"propertyName" : "addresses" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
2021-05-17 05:35:09 -05:00
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Message" ,
"description" : "Optional message to include with the email. You can use template variables" ,
"placeholder" : "" ,
"propertyName" : "message" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
2021-05-04 06:58:39 -05:00
}
]
} ,
{
"type" : "pagerduty" ,
"name" : "PagerDuty" ,
"heading" : "PagerDuty settings" ,
"description" : "Sends notifications to PagerDuty" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Integration Key" ,
"description" : "" ,
"placeholder" : "Pagerduty Integration Key" ,
"propertyName" : "integrationKey" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "Severity" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "severity" ,
"selectOptions" : [
{
"value" : "critical" ,
"label" : "Critical"
} ,
{
"value" : "error" ,
"label" : "Error"
} ,
{
"value" : "warning" ,
"label" : "Warning"
} ,
{
"value" : "info" ,
"label" : "Info"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Class" ,
"description" : "The class/type of the event, for example 'ping failure' or 'cpu load'" ,
"placeholder" : "" ,
"propertyName" : "class" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Component" ,
"description" : "Component of the source machine that is responsible for the event, for example mysql or eth0" ,
"placeholder" : "Grafana" ,
"propertyName" : "component" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Group" ,
"description" : "Logical grouping of components of a service, for example 'app-stack'" ,
"placeholder" : "" ,
"propertyName" : "group" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Summary" ,
"description" : "You can use templates for summary" ,
"placeholder" : "{{ template \"default.message\" . }}" ,
"propertyName" : "summary" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
2021-05-19 12:52:14 -05:00
{
"type" : "victorops" ,
"name" : "VictorOps" ,
"heading" : "VictorOps settings" ,
"description" : "Sends notifications to VictorOps" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Url" ,
"description" : "" ,
"placeholder" : "VictorOps url" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "Message Type" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "messageType" ,
"selectOptions" : [
{
"value" : "CRITICAL" ,
"label" : "CRITICAL"
} ,
{
"value" : "WARNING" ,
"label" : "WARNING"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
2021-05-19 09:48:46 -05:00
{
"type" : "pushover" ,
"name" : "Pushover" ,
"description" : "Sends HTTP POST request to the Pushover API" ,
"heading" : "Pushover settings" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "API Token" ,
"description" : "" ,
"placeholder" : "Application token" ,
"propertyName" : "apiToken" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "User key(s)" ,
"description" : "" ,
"placeholder" : "comma-separated list" ,
"propertyName" : "userKey" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Device(s) (optional)" ,
"description" : "" ,
"placeholder" : "comma-separated list; leave empty to send to all devices" ,
"propertyName" : "device" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "Alerting priority" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "priority" ,
"selectOptions" : [
{
"value" : "2" ,
"label" : "Emergency"
} ,
{
"value" : "1" ,
"label" : "High"
} ,
{
"value" : "0" ,
"label" : "Normal"
} ,
{
"value" : "-1" ,
"label" : "Low"
} ,
{
"value" : "-2" ,
"label" : "Lowest"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "OK priority" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "okPriority" ,
"selectOptions" : [
{
"value" : "2" ,
"label" : "Emergency"
} ,
{
"value" : "1" ,
"label" : "High"
} ,
{
"value" : "0" ,
"label" : "Normal"
} ,
{
"value" : "-1" ,
"label" : "Low"
} ,
{
"value" : "-2" ,
"label" : "Lowest"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Retry (Only used for Emergency Priority)" ,
"description" : "How often (in seconds) the Pushover servers will send the same alerting or OK notification to the user." ,
"placeholder" : "minimum 30 seconds" ,
"propertyName" : "retry" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Expire (Only used for Emergency Priority)" ,
"description" : "How many seconds the alerting or OK notification will continue to be retried." ,
"placeholder" : "maximum 86400 seconds" ,
"propertyName" : "expire" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "Alerting sound" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "sound" ,
"selectOptions" : [
{
"value" : "default" ,
"label" : "Default"
} ,
{
"value" : "pushover" ,
"label" : "Pushover"
} ,
{
"value" : "bike" ,
"label" : "Bike"
} ,
{
"value" : "bugle" ,
"label" : "Bugle"
} ,
{
"value" : "cashregister" ,
"label" : "Cashregister"
} ,
{
"value" : "classical" ,
"label" : "Classical"
} ,
{
"value" : "cosmic" ,
"label" : "Cosmic"
} ,
{
"value" : "falling" ,
"label" : "Falling"
} ,
{
"value" : "gamelan" ,
"label" : "Gamelan"
} ,
{
"value" : "incoming" ,
"label" : "Incoming"
} ,
{
"value" : "intermission" ,
"label" : "Intermission"
} ,
{
"value" : "magic" ,
"label" : "Magic"
} ,
{
"value" : "mechanical" ,
"label" : "Mechanical"
} ,
{
"value" : "pianobar" ,
"label" : "Pianobar"
} ,
{
"value" : "siren" ,
"label" : "Siren"
} ,
{
"value" : "spacealarm" ,
"label" : "Spacealarm"
} ,
{
"value" : "tugboat" ,
"label" : "Tugboat"
} ,
{
"value" : "alien" ,
"label" : "Alien"
} ,
{
"value" : "climb" ,
"label" : "Climb"
} ,
{
"value" : "persistent" ,
"label" : "Persistent"
} ,
{
"value" : "echo" ,
"label" : "Echo"
} ,
{
"value" : "updown" ,
"label" : "Updown"
} ,
{
"value" : "none" ,
"label" : "None"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "OK sound" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "okSound" ,
"selectOptions" : [
{
"value" : "default" ,
"label" : "Default"
} ,
{
"value" : "pushover" ,
"label" : "Pushover"
} ,
{
"value" : "bike" ,
"label" : "Bike"
} ,
{
"value" : "bugle" ,
"label" : "Bugle"
} ,
{
"value" : "cashregister" ,
"label" : "Cashregister"
} ,
{
"value" : "classical" ,
"label" : "Classical"
} ,
{
"value" : "cosmic" ,
"label" : "Cosmic"
} ,
{
"value" : "falling" ,
"label" : "Falling"
} ,
{
"value" : "gamelan" ,
"label" : "Gamelan"
} ,
{
"value" : "incoming" ,
"label" : "Incoming"
} ,
{
"value" : "intermission" ,
"label" : "Intermission"
} ,
{
"value" : "magic" ,
"label" : "Magic"
} ,
{
"value" : "mechanical" ,
"label" : "Mechanical"
} ,
{
"value" : "pianobar" ,
"label" : "Pianobar"
} ,
{
"value" : "siren" ,
"label" : "Siren"
} ,
{
"value" : "spacealarm" ,
"label" : "Spacealarm"
} ,
{
"value" : "tugboat" ,
"label" : "Tugboat"
} ,
{
"value" : "alien" ,
"label" : "Alien"
} ,
{
"value" : "climb" ,
"label" : "Climb"
} ,
{
"value" : "persistent" ,
"label" : "Persistent"
} ,
{
"value" : "echo" ,
"label" : "Echo"
} ,
{
"value" : "updown" ,
"label" : "Updown"
} ,
{
"value" : "none" ,
"label" : "None"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Message" ,
"description" : "" ,
"placeholder" : "{{ template \"default.message\" . }}" ,
"propertyName" : "message" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
2021-05-04 06:58:39 -05:00
{
"type" : "slack" ,
"name" : "Slack" ,
"heading" : "Slack settings" ,
"description" : "Sends notifications to Slack" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Recipient" ,
2021-10-27 11:58:37 -05:00
"description" : "Specify channel, private group, or IM channel (can be an encoded ID or a name) - required unless you provide a webhook" ,
2021-05-04 06:58:39 -05:00
"placeholder" : "" ,
"propertyName" : "recipient" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Token" ,
"description" : "Provide a Slack API token (starts with \"xoxb\") - required unless you provide a webhook" ,
"placeholder" : "" ,
"propertyName" : "token" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Username" ,
"description" : "Set the username for the bot's message" ,
"placeholder" : "" ,
"propertyName" : "username" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Icon emoji" ,
"description" : "Provide an emoji to use as the icon for the bot's message. Overrides the icon URL." ,
"placeholder" : "" ,
"propertyName" : "icon_emoji" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Icon URL" ,
"description" : "Provide a URL to an image to use as the icon for the bot's message" ,
"placeholder" : "" ,
"propertyName" : "icon_url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Mention Users" ,
"description" : "Mention one or more users (comma separated) when notifying in a channel, by ID (you can copy this from the user's Slack profile)" ,
"placeholder" : "" ,
"propertyName" : "mentionUsers" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Mention Groups" ,
"description" : "Mention one or more groups (comma separated) when notifying in a channel (you can copy this from the group's Slack profile URL)" ,
"placeholder" : "" ,
"propertyName" : "mentionGroups" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "Mention Channel" ,
"description" : "Mention whole channel or just active members when notifying" ,
"placeholder" : "" ,
"propertyName" : "mentionChannel" ,
"selectOptions" : [
{
"value" : "" ,
"label" : "Disabled"
} ,
{
"value" : "here" ,
"label" : "Every active channel member"
} ,
{
"value" : "channel" ,
"label" : "Every channel member"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Webhook URL" ,
"description" : "Optionally provide a Slack incoming webhook URL for sending messages, in this case the token isn't necessary" ,
"placeholder" : "Slack incoming webhook URL" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Title" ,
"description" : "Templated title of the slack message" ,
"placeholder" : "{{ template \"slack.default.title\" . }}" ,
"propertyName" : "title" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Text Body" ,
"description" : "Body of the slack message" ,
"placeholder" : "{{ template \"slack.default.text\" . }}" ,
"propertyName" : "text" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
2021-05-18 09:31:51 -05:00
{
"type" : "sensugo" ,
"name" : "Sensu Go" ,
"description" : "Sends HTTP POST request to a Sensu Go API" ,
"heading" : "Sensu Go Settings" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Backend URL" ,
"description" : "" ,
"placeholder" : "http://sensu-api.local:8080" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "password" ,
"label" : "API Key" ,
"description" : "API key to auth to Sensu Go backend" ,
"placeholder" : "" ,
"propertyName" : "apikey" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Proxy entity name" ,
"description" : "" ,
"placeholder" : "default" ,
"propertyName" : "entity" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Check name" ,
"description" : "" ,
"placeholder" : "default" ,
"propertyName" : "check" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Handler" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "handler" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Namespace" ,
"description" : "" ,
"placeholder" : "default" ,
"propertyName" : "namespace" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Message" ,
"description" : "" ,
"placeholder" : "{{ template \"default.message\" . }}" ,
"propertyName" : "message" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
2021-05-04 06:58:39 -05:00
{
"type" : "teams" ,
"name" : "Microsoft Teams" ,
"heading" : "Teams settings" ,
"description" : "Sends notifications using Incoming Webhook connector to Microsoft Teams" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "URL" ,
"description" : "" ,
"placeholder" : "Teams incoming webhook url" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Message" ,
"description" : "" ,
"placeholder" : "{{ template \"default.message\" . }}" ,
"propertyName" : "message" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
{
"type" : "telegram" ,
"name" : "Telegram" ,
"heading" : "Telegram API settings" ,
"description" : "Sends notifications to Telegram" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "BOT API Token" ,
"description" : "" ,
"placeholder" : "Telegram BOT API Token" ,
"propertyName" : "bottoken" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Chat ID" ,
"description" : "Integer Telegram Chat Identifier" ,
"placeholder" : "" ,
"propertyName" : "chatid" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Message" ,
"description" : "" ,
"placeholder" : "{{ template \"default.message\" . }}" ,
"propertyName" : "message" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
{
"type" : "webhook" ,
"name" : "webhook" ,
"heading" : "Webhook settings" ,
"description" : "Sends HTTP POST request to a URL" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Url" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "Http Method" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "httpMethod" ,
"selectOptions" : [
{
"value" : "POST" ,
"label" : "POST"
} ,
{
"value" : "PUT" ,
"label" : "PUT"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Username" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "username" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "password" ,
"label" : "Password" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "password" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Max Alerts" ,
"description" : "Max alerts to include in a notification. Remaining alerts in the same batch will be ignored above this number. 0 means no limit." ,
"placeholder" : "" ,
"propertyName" : "maxAlerts" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
2021-05-19 08:27:41 -05:00
} ,
2021-12-15 10:42:03 -06:00
{
"type" : "wecom" ,
"name" : "WeCom" ,
"heading" : "WeCom settings" ,
"description" : "Send alerts generated by Grafana to WeCom" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Url" ,
"description" : "" ,
"placeholder" : "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Message" ,
"description" : "Custom WeCom message. You can use template variables." ,
"placeholder" : "{{ template \"default.message\" . }}" ,
"propertyName" : "message" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
} ,
2021-05-19 08:27:41 -05:00
{
2021-05-24 08:09:29 -05:00
"type" : "prometheus-alertmanager" ,
2021-05-19 08:27:41 -05:00
"name" : "Alertmanager" ,
"heading" : "Alertmanager Settings" ,
"description" : "Sends notifications to Alertmanager" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "URL" ,
"description" : "" ,
"placeholder" : "http://localhost:9093" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
2021-05-24 08:09:29 -05:00
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Basic Auth User" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "basicAuthUser" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "password" ,
"label" : "Basic Auth Password" ,
"description" : "" ,
"placeholder" : "" ,
"propertyName" : "basicAuthPassword" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : true
2021-05-19 08:27:41 -05:00
}
]
2021-05-19 10:31:55 -05:00
} ,
{
"type" : "discord" ,
"name" : "Discord" ,
"heading" : "Discord settings" ,
"description" : "Sends notifications to Discord" ,
"info" : "" ,
"options" : [
{
"label" : "Message Content" ,
"description" : "Mention a group using @ or a user using <@ID> when notifying in a channel" ,
"element" : "input" ,
"inputType" : "text" ,
"placeholder" : "{{ template \"default.message\" . }}" ,
"propertyName" : "message" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"label" : "Webhook URL" ,
"description" : "" ,
"element" : "input" ,
"inputType" : "text" ,
"placeholder" : "Discord webhook URL" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
2021-05-28 16:00:21 -05:00
} ,
{
"label" : "Avatar URL" ,
"description" : "" ,
"element" : "input" ,
"inputType" : "text" ,
"placeholder" : "" ,
"propertyName" : "avatar_url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
2021-10-26 13:55:10 -05:00
} ,
{
"element" : "checkbox" ,
"inputType" : "" ,
"label" : "Use Discord's Webhook Username" ,
"description" : "Use the username configured in Discord's webhook settings. Otherwise, the username will be 'Grafana'" ,
"placeholder" : "" ,
"propertyName" : "use_discord_username" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
2021-05-19 10:31:55 -05:00
]
2021-05-19 11:24:04 -05:00
} ,
{
"type" : "googlechat" ,
"name" : "Google Hangouts Chat" ,
"heading" : "Google Hangouts Chat settings" ,
"description" : "Sends notifications to Google Hangouts Chat via webhooks based on the official JSON message format" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Url" ,
"description" : "" ,
"placeholder" : "Google Hangouts Chat incoming webhook url" ,
"propertyName" : "url" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
2022-01-05 09:47:08 -06:00
} ,
{
"element" : "textarea" ,
"inputType" : "" ,
"label" : "Message" ,
"description" : "" ,
"placeholder" : "{{ template \"default.message\" . }}" ,
"propertyName" : "message" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
2021-05-19 11:24:04 -05:00
}
]
2021-05-19 12:04:48 -05:00
} ,
{
"type" : "LINE" ,
"name" : "LINE" ,
"heading" : "LINE notify settings" ,
"description" : "Send notifications to LINE notify" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Token" ,
"description" : "" ,
"placeholder" : "LINE notify token key" ,
"propertyName" : "token" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : true
}
]
2021-05-19 13:20:52 -05:00
} ,
{
"type" : "threema" ,
"name" : "Threema Gateway" ,
"heading" : "Threema Gateway settings" ,
2021-05-28 01:54:55 -05:00
"description" : "Sends notifications to Threema using Threema Gateway (Basic IDs)" ,
2021-05-19 13:20:52 -05:00
"info" : "Notifications can be configured for any Threema Gateway ID of type \"Basic\". End-to-End IDs are not currently supported.The Threema Gateway ID can be set up at https://gateway.threema.ch/." ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Gateway ID" ,
2021-05-28 01:54:55 -05:00
"description" : "Your 8 character Threema Gateway Basic ID (starting with a *)." ,
2021-05-19 13:20:52 -05:00
"placeholder" : "*3MAGWID" ,
"propertyName" : "gateway_id" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "\\*[0-9A-Z]{7}" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Recipient ID" ,
"description" : "The 8 character Threema ID that should receive the alerts." ,
"placeholder" : "YOUR3MID" ,
"propertyName" : "recipient_id" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "[0-9A-Z]{8}" ,
"secure" : false
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "API Secret" ,
"description" : "Your Threema Gateway API secret." ,
"placeholder" : "" ,
"propertyName" : "api_secret" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : true
}
]
2021-05-20 03:12:08 -05:00
} ,
{
"type" : "opsgenie" ,
"name" : "OpsGenie" ,
"heading" : "OpsGenie settings" ,
"description" : "Sends notifications to OpsGenie" ,
"info" : "" ,
"options" : [
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "API Key" ,
"description" : "" ,
"placeholder" : "OpsGenie API Key" ,
"propertyName" : "apiKey" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : true
} ,
{
"element" : "input" ,
"inputType" : "text" ,
"label" : "Alert API Url" ,
"description" : "" ,
"placeholder" : "https://api.opsgenie.com/v2/alerts" ,
"propertyName" : "apiUrl" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : true ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "checkbox" ,
"inputType" : "" ,
"label" : "Auto close incidents" ,
"description" : "Automatically close alerts in OpsGenie once the alert goes back to ok." ,
"placeholder" : "" ,
"propertyName" : "autoClose" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "checkbox" ,
"inputType" : "" ,
"label" : "Override priority" ,
"description" : "Allow the alert priority to be set using the og_priority annotation" ,
"placeholder" : "" ,
"propertyName" : "overridePriority" ,
"selectOptions" : null ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
} ,
{
"element" : "select" ,
"inputType" : "" ,
"label" : "Send notification tags as" ,
"description" : "Send the common annotations to Opsgenie as either Extra Properties, Tags or both" ,
"placeholder" : "" ,
"propertyName" : "sendTagsAs" ,
"selectOptions" : [
{
"value" : "tags" ,
"label" : "Tags"
} ,
{
"value" : "details" ,
"label" : "Extra Properties"
} ,
{
"value" : "both" ,
"label" : "Tags & Extra Properties"
}
] ,
"showWhen" : {
"field" : "" ,
"is" : ""
} ,
"required" : false ,
"validationRule" : "" ,
"secure" : false
}
]
2021-05-04 06:58:39 -05:00
}
]
`