mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
* Separate Tracer interface to TracerService and Tracer * Fix lint * Fix:Make it possible to start spans for both opentracing and opentelemetry in ds proxy * Add span methods, use span interface for rest of tracing * Fix logs in tracing * Fix tests that are related to tracing * Fix resourcepermissions test * Fix some tests * Fix more tests * Add TracingService to wire cli runner * Remove GlobalTracer from bus * Renaming test function * Remove GlobalTracer from TSDB * Replace GlobalTracer in api * Adjust tests to the InitializeForTests func * Remove GlobalTracer from services * Remove GlobalTracer * Remove bus.NewTest * Remove Tracer interface * Add InitializeForBus * Simplify tests * Clean up tests * Rename TracerService to Tracer * Update pkg/middleware/request_tracing.go Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com> * Initialize tracer before passing it to SQLStore initialization in commands * Remove tests for opentracing * Set span attributes correctly, remove unnecessary trace initiliazation form test * Add tracer instance to newSQLStore * Fix changes due to rebase * Add modified tracing middleware test * Fix opentracing implementation tags Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
1699 lines
44 KiB
Go
1699 lines
44 KiB
Go
package alerting
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/grafana/grafana/pkg/bus"
|
|
"github.com/grafana/grafana/pkg/infra/tracing"
|
|
"github.com/grafana/grafana/pkg/models"
|
|
"github.com/grafana/grafana/pkg/tests/testinfra"
|
|
)
|
|
|
|
func TestAvailableChannels(t *testing.T) {
|
|
_, err := tracing.InitializeTracerForTest()
|
|
require.NoError(t, err)
|
|
|
|
dir, path := testinfra.CreateGrafDir(t, testinfra.GrafanaOpts{
|
|
DisableLegacyAlerting: true,
|
|
EnableUnifiedAlerting: true,
|
|
DisableAnonymous: true,
|
|
})
|
|
|
|
grafanaListedAddr, store := testinfra.StartGrafana(t, dir, path)
|
|
store.Bus = bus.GetBus()
|
|
|
|
// Create a user to make authenticated requests
|
|
createUser(t, store, models.CreateUserCommand{
|
|
DefaultOrgRole: string(models.ROLE_EDITOR),
|
|
Password: "password",
|
|
Login: "grafana",
|
|
})
|
|
|
|
alertsURL := fmt.Sprintf("http://grafana:password@%s/api/alert-notifiers", grafanaListedAddr)
|
|
// 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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "slack",
|
|
"name": "Slack",
|
|
"heading": "Slack settings",
|
|
"description": "Sends notifications to Slack",
|
|
"info": "",
|
|
"options": [
|
|
{
|
|
"element": "input",
|
|
"inputType": "text",
|
|
"label": "Recipient",
|
|
"description": "Specify channel, private group, or IM channel (can be an encoded ID or a name) - required unless you provide a webhook",
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "prometheus-alertmanager",
|
|
"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
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
{
|
|
"label": "Avatar URL",
|
|
"description": "",
|
|
"element": "input",
|
|
"inputType": "text",
|
|
"placeholder": "",
|
|
"propertyName": "avatar_url",
|
|
"selectOptions": null,
|
|
"showWhen": {
|
|
"field": "",
|
|
"is": ""
|
|
},
|
|
"required": false,
|
|
"validationRule": "",
|
|
"secure": false
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
},
|
|
{
|
|
"element": "textarea",
|
|
"inputType": "",
|
|
"label": "Message",
|
|
"description": "",
|
|
"placeholder": "{{ template \"default.message\" . }}",
|
|
"propertyName": "message",
|
|
"selectOptions": null,
|
|
"showWhen": {
|
|
"field": "",
|
|
"is": ""
|
|
},
|
|
"required": false,
|
|
"validationRule": "",
|
|
"secure": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "threema",
|
|
"name": "Threema Gateway",
|
|
"heading": "Threema Gateway settings",
|
|
"description": "Sends notifications to Threema using Threema Gateway (Basic IDs)",
|
|
"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",
|
|
"description": "Your 8 character Threema Gateway Basic ID (starting with a *).",
|
|
"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
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
}
|
|
]
|
|
`
|