Merge pull request #12 from grafana/testing-endpoints
Add testing endpoints
This commit is contained in:
@@ -10,6 +10,7 @@ require (
|
|||||||
github.com/prometheus/alertmanager v0.21.1-0.20210211203738-a7ca7b1d2951
|
github.com/prometheus/alertmanager v0.21.1-0.20210211203738-a7ca7b1d2951
|
||||||
github.com/prometheus/client_golang v1.9.0
|
github.com/prometheus/client_golang v1.9.0
|
||||||
github.com/prometheus/common v0.15.0
|
github.com/prometheus/common v0.15.0
|
||||||
|
github.com/prometheus/prometheus v1.8.2-0.20201014093524-73e2ce1bd643
|
||||||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect
|
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect
|
||||||
golang.org/x/oauth2 v0.0.0-20210210192628-66670185b0cd // indirect
|
golang.org/x/oauth2 v0.0.0-20210210192628-66670185b0cd // indirect
|
||||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
|
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
|
||||||
|
|||||||
@@ -0,0 +1,111 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/grafana/grafana/pkg/services/ngalert/eval"
|
||||||
|
"github.com/prometheus/alertmanager/config"
|
||||||
|
"github.com/prometheus/prometheus/promql"
|
||||||
|
)
|
||||||
|
|
||||||
|
// swagger:route Get /api/v1/receiver/test testing RouteTestReceiverConfig
|
||||||
|
//
|
||||||
|
// Test receiver
|
||||||
|
//
|
||||||
|
// Consumes:
|
||||||
|
// - application/json
|
||||||
|
//
|
||||||
|
// Produces:
|
||||||
|
// - application/json
|
||||||
|
//
|
||||||
|
// Responses:
|
||||||
|
// 200: Success
|
||||||
|
// 412: SmtpNotEnabled
|
||||||
|
// 500: Failure
|
||||||
|
|
||||||
|
// swagger:route Get /api/v1/rule/test testing RouteTestRuleConfig
|
||||||
|
//
|
||||||
|
// Test rule
|
||||||
|
//
|
||||||
|
// Consumes:
|
||||||
|
// - application/json
|
||||||
|
//
|
||||||
|
// Produces:
|
||||||
|
// - application/json
|
||||||
|
//
|
||||||
|
// Responses:
|
||||||
|
// 200: TestRuleResponse
|
||||||
|
|
||||||
|
// swagger:parameters RouteTestReceiverConfig
|
||||||
|
type TestReceiverRequest struct {
|
||||||
|
// in:body
|
||||||
|
Body ExtendedReceiver
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:parameters RouteTestRuleConfig
|
||||||
|
type TestRuleRequest struct {
|
||||||
|
// in:body
|
||||||
|
Body TestRulePayload
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type TestRulePayload struct {
|
||||||
|
Expr LotexQuery `json:"expr,omitempty"`
|
||||||
|
// GrafanaManagedCondition for grafana alerts
|
||||||
|
GrafanaManagedCondition EvalAlertConditionCommand `json:"grafana_condition,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type LotexQuery struct {
|
||||||
|
// Example: (node_filesystem_avail_bytes{fstype!="",job="integrations/node_exporter"} node_filesystem_size_bytes{fstype!="",job="integrations/node_exporter"} * 100 < 5 and node_filesystem_readonly{fstype!="",job="integrations/node_exporter"} == 0)
|
||||||
|
Expr string
|
||||||
|
// DatasourceUID is required if the query will be sent to grafana to be executed
|
||||||
|
DatasourceUID string `json:"datasourceUid,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type EvalAlertConditionCommand struct {
|
||||||
|
Condition string `json:"condition"`
|
||||||
|
Data []eval.AlertQuery `json:"data"`
|
||||||
|
Now time.Time `json:"now"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type TestRuleResponse struct {
|
||||||
|
Alerts promql.Vector `json:"alerts"`
|
||||||
|
GrafanaAlertInstances AlertInstancesResponse `json:"grafana_alert_instances"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type AlertInstancesResponse struct {
|
||||||
|
// Instances is an array of arrow encoded dataframes
|
||||||
|
// each frame has a single row, and a column for each instance (alert identified by unique labels) with a boolean value (firing/not firing)
|
||||||
|
Instances [][]byte `json:"instances"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type ExtendedReceiver struct {
|
||||||
|
EmailConfigs config.EmailConfig `yaml:"email_configs,omitempty" json:"email_configs,omitempty"`
|
||||||
|
PagerdutyConfigs config.PagerdutyConfig `yaml:"pagerduty_configs,omitempty" json:"pagerduty_configs,omitempty"`
|
||||||
|
SlackConfigs config.SlackConfig `yaml:"slack_configs,omitempty" json:"slack_configs,omitempty"`
|
||||||
|
WebhookConfigs config.WebhookConfig `yaml:"webhook_configs,omitempty" json:"webhook_configs,omitempty"`
|
||||||
|
OpsGenieConfigs config.OpsGenieConfig `yaml:"opsgenie_configs,omitempty" json:"opsgenie_configs,omitempty"`
|
||||||
|
WechatConfigs config.WechatConfig `yaml:"wechat_configs,omitempty" json:"wechat_configs,omitempty"`
|
||||||
|
PushoverConfigs config.PushoverConfig `yaml:"pushover_configs,omitempty" json:"pushover_configs,omitempty"`
|
||||||
|
VictorOpsConfigs config.VictorOpsConfig `yaml:"victorops_configs,omitempty" json:"victorops_configs,omitempty"`
|
||||||
|
GrafanaReceiver GrafanaReceiver `yaml:"grafana_managed_receiver,omitempty" json:"grafana_managed_receiver,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type Success ResponseDetails
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type SmtpNotEnabled ResponseDetails
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type Failure ResponseDetails
|
||||||
|
|
||||||
|
// swagger:model
|
||||||
|
type ResponseDetails struct {
|
||||||
|
Msg string `json:"msg"`
|
||||||
|
}
|
||||||
@@ -325,6 +325,82 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/api/v1/receiver/test": {
|
||||||
|
"get": {
|
||||||
|
"description": "Test receiver",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"testing"
|
||||||
|
],
|
||||||
|
"operationId": "RouteTestReceiverConfig",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "Body",
|
||||||
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/ExtendedReceiver"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Success",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Success"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"412": {
|
||||||
|
"description": "SmtpNotEnabled",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/SmtpNotEnabled"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Failure",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Failure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/rule/test": {
|
||||||
|
"get": {
|
||||||
|
"description": "Test rule",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"testing"
|
||||||
|
],
|
||||||
|
"operationId": "RouteTestRuleConfig",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "Body",
|
||||||
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/TestRulePayload"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "TestRuleResponse",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/TestRuleResponse"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/api/v1/rules": {
|
"/api/v1/rules": {
|
||||||
"get": {
|
"get": {
|
||||||
"description": "List rule groups",
|
"description": "List rule groups",
|
||||||
@@ -683,6 +759,24 @@
|
|||||||
"AlertGroups": {
|
"AlertGroups": {
|
||||||
"$ref": "#/definitions/alertGroups"
|
"$ref": "#/definitions/alertGroups"
|
||||||
},
|
},
|
||||||
|
"AlertInstancesResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"instances": {
|
||||||
|
"description": "Instances is an array of arrow encoded dataframes\neach frame has a single row, and a column for each instance (alert identified by unique labels) with a boolean value (firing/not firing)",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "uint8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-name": "Instances"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
|
},
|
||||||
"AlertNotification": {
|
"AlertNotification": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1203,6 +1297,61 @@
|
|||||||
"title": "ErrorType models the different API error types.",
|
"title": "ErrorType models the different API error types.",
|
||||||
"x-go-package": "github.com/prometheus/client_golang/api/prometheus/v1"
|
"x-go-package": "github.com/prometheus/client_golang/api/prometheus/v1"
|
||||||
},
|
},
|
||||||
|
"EvalAlertConditionCommand": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"condition": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "Condition"
|
||||||
|
},
|
||||||
|
"data": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/AlertQuery"
|
||||||
|
},
|
||||||
|
"x-go-name": "Data"
|
||||||
|
},
|
||||||
|
"now": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time",
|
||||||
|
"x-go-name": "Now"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
|
},
|
||||||
|
"ExtendedReceiver": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"email_configs": {
|
||||||
|
"$ref": "#/definitions/EmailConfig"
|
||||||
|
},
|
||||||
|
"grafana_managed_receiver": {
|
||||||
|
"$ref": "#/definitions/GrafanaReceiver"
|
||||||
|
},
|
||||||
|
"opsgenie_configs": {
|
||||||
|
"$ref": "#/definitions/OpsGenieConfig"
|
||||||
|
},
|
||||||
|
"pagerduty_configs": {
|
||||||
|
"$ref": "#/definitions/PagerdutyConfig"
|
||||||
|
},
|
||||||
|
"pushover_configs": {
|
||||||
|
"$ref": "#/definitions/PushoverConfig"
|
||||||
|
},
|
||||||
|
"slack_configs": {
|
||||||
|
"$ref": "#/definitions/SlackConfig"
|
||||||
|
},
|
||||||
|
"victorops_configs": {
|
||||||
|
"$ref": "#/definitions/VictorOpsConfig"
|
||||||
|
},
|
||||||
|
"webhook_configs": {
|
||||||
|
"$ref": "#/definitions/WebhookConfig"
|
||||||
|
},
|
||||||
|
"wechat_configs": {
|
||||||
|
"$ref": "#/definitions/WechatConfig"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
|
},
|
||||||
"ExtendedRuleNode": {
|
"ExtendedRuleNode": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1295,6 +1444,9 @@
|
|||||||
},
|
},
|
||||||
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
},
|
},
|
||||||
|
"Failure": {
|
||||||
|
"$ref": "#/definitions/ResponseDetails"
|
||||||
|
},
|
||||||
"GetableSilence": {
|
"GetableSilence": {
|
||||||
"$ref": "#/definitions/silence"
|
"$ref": "#/definitions/silence"
|
||||||
},
|
},
|
||||||
@@ -1459,6 +1611,17 @@
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"x-go-package": "github.com/grafana/grafana/pkg/components/simplejson"
|
"x-go-package": "github.com/grafana/grafana/pkg/components/simplejson"
|
||||||
},
|
},
|
||||||
|
"Label": {
|
||||||
|
"type": "object",
|
||||||
|
"title": "Label is a key/value pair of strings.",
|
||||||
|
"properties": {
|
||||||
|
"Name": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "Value"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/prometheus/prometheus/pkg/labels"
|
||||||
|
},
|
||||||
"LabelName": {
|
"LabelName": {
|
||||||
"description": "A LabelName is a key for a LabelSet or Metric. It has a value associated\ntherewith.",
|
"description": "A LabelName is a key for a LabelSet or Metric. It has a value associated\ntherewith.",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
@@ -1472,6 +1635,29 @@
|
|||||||
},
|
},
|
||||||
"x-go-package": "github.com/prometheus/common/model"
|
"x-go-package": "github.com/prometheus/common/model"
|
||||||
},
|
},
|
||||||
|
"Labels": {
|
||||||
|
"description": "Labels is a sorted set of labels. Order has to be guaranteed upon\ninstantiation.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/Label"
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/prometheus/prometheus/pkg/labels"
|
||||||
|
},
|
||||||
|
"LotexQuery": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Expr": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "(node_filesystem_avail_bytes{fstype!=\"\",job=\"integrations/node_exporter\"} node_filesystem_size_bytes{fstype!=\"\",job=\"integrations/node_exporter\"} * 100 \u003c 5 and node_filesystem_readonly{fstype!=\"\",job=\"integrations/node_exporter\"} == 0)"
|
||||||
|
},
|
||||||
|
"datasourceUid": {
|
||||||
|
"description": "DatasourceUID is required if the query will be sent to grafana to be executed",
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "DatasourceUID"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
|
},
|
||||||
"MatchRegexps": {
|
"MatchRegexps": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "MatchRegexps represents a map of Regexp.",
|
"title": "MatchRegexps represents a map of Regexp.",
|
||||||
@@ -1728,6 +1914,21 @@
|
|||||||
},
|
},
|
||||||
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
},
|
},
|
||||||
|
"Point": {
|
||||||
|
"type": "object",
|
||||||
|
"title": "Point represents a single data point for a given timestamp.",
|
||||||
|
"properties": {
|
||||||
|
"T": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"V": {
|
||||||
|
"type": "number",
|
||||||
|
"format": "double"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/prometheus/prometheus/promql"
|
||||||
|
},
|
||||||
"PushoverConfig": {
|
"PushoverConfig": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1868,6 +2069,16 @@
|
|||||||
},
|
},
|
||||||
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/eval"
|
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/eval"
|
||||||
},
|
},
|
||||||
|
"ResponseDetails": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"msg": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "Msg"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
|
},
|
||||||
"RoleType": {
|
"RoleType": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"x-go-package": "github.com/grafana/grafana/pkg/models"
|
"x-go-package": "github.com/grafana/grafana/pkg/models"
|
||||||
@@ -2084,6 +2295,24 @@
|
|||||||
"title": "RuleType models the type of a rule.",
|
"title": "RuleType models the type of a rule.",
|
||||||
"x-go-package": "github.com/prometheus/client_golang/api/prometheus/v1"
|
"x-go-package": "github.com/prometheus/client_golang/api/prometheus/v1"
|
||||||
},
|
},
|
||||||
|
"Sample": {
|
||||||
|
"type": "object",
|
||||||
|
"title": "Sample is a single sample belonging to a metric.",
|
||||||
|
"properties": {
|
||||||
|
"Metric": {
|
||||||
|
"$ref": "#/definitions/Labels"
|
||||||
|
},
|
||||||
|
"T": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"V": {
|
||||||
|
"type": "number",
|
||||||
|
"format": "double"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/prometheus/prometheus/promql"
|
||||||
|
},
|
||||||
"Secret": {
|
"Secret": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"title": "Secret special type for storing secrets.",
|
"title": "Secret special type for storing secrets.",
|
||||||
@@ -2328,6 +2557,12 @@
|
|||||||
},
|
},
|
||||||
"x-go-package": "github.com/prometheus/alertmanager/config"
|
"x-go-package": "github.com/prometheus/alertmanager/config"
|
||||||
},
|
},
|
||||||
|
"SmtpNotEnabled": {
|
||||||
|
"$ref": "#/definitions/ResponseDetails"
|
||||||
|
},
|
||||||
|
"Success": {
|
||||||
|
"$ref": "#/definitions/ResponseDetails"
|
||||||
|
},
|
||||||
"TLSConfig": {
|
"TLSConfig": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "TLSConfig configures the options for TLS connections.",
|
"title": "TLSConfig configures the options for TLS connections.",
|
||||||
@@ -2355,6 +2590,30 @@
|
|||||||
},
|
},
|
||||||
"x-go-package": "github.com/prometheus/common/config"
|
"x-go-package": "github.com/prometheus/common/config"
|
||||||
},
|
},
|
||||||
|
"TestRulePayload": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"expr": {
|
||||||
|
"$ref": "#/definitions/LotexQuery"
|
||||||
|
},
|
||||||
|
"grafana_condition": {
|
||||||
|
"$ref": "#/definitions/EvalAlertConditionCommand"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
|
},
|
||||||
|
"TestRuleResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"alerts": {
|
||||||
|
"$ref": "#/definitions/Vector"
|
||||||
|
},
|
||||||
|
"grafana_alert_instances": {
|
||||||
|
"$ref": "#/definitions/AlertInstancesResponse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
|
},
|
||||||
"URL": {
|
"URL": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "URL is a custom URL type that allows validation at configuration load time.",
|
"title": "URL is a custom URL type that allows validation at configuration load time.",
|
||||||
@@ -2406,7 +2665,9 @@
|
|||||||
"x-go-package": "github.com/grafana/grafana/pkg/api/dtos"
|
"x-go-package": "github.com/grafana/grafana/pkg/api/dtos"
|
||||||
},
|
},
|
||||||
"UpsertAlertDefinitionCommand": {
|
"UpsertAlertDefinitionCommand": {
|
||||||
|
"description": "https://github.com/grafana/grafana/blob/debb82e12417e82a0e2bd09e1a450065f884c1bc/pkg/services/ngalert/models.go#L85",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
"title": "UpsertAlertDefinitionCommand is copy of the unexported struct:",
|
||||||
"properties": {
|
"properties": {
|
||||||
"condition": {
|
"condition": {
|
||||||
"description": "Condition is the refID of the query or expression to be evaluated",
|
"description": "Condition is the refID of the query or expression to be evaluated",
|
||||||
@@ -2464,6 +2725,14 @@
|
|||||||
},
|
},
|
||||||
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
"x-go-package": "github.com/grafana/alerting-api/pkg/api"
|
||||||
},
|
},
|
||||||
|
"Vector": {
|
||||||
|
"description": "Vector is basically only an alias for model.Samples, but the\ncontract is that in a Vector, all Samples have the same timestamp.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/Sample"
|
||||||
|
},
|
||||||
|
"x-go-package": "github.com/prometheus/prometheus/promql"
|
||||||
|
},
|
||||||
"VictorOpsConfig": {
|
"VictorOpsConfig": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "VictorOpsConfig configures notifications via VictorOps.",
|
"title": "VictorOpsConfig configures notifications via VictorOps.",
|
||||||
|
|||||||
Reference in New Issue
Block a user