Case Backend Plugin:
- If going to frontend leave it encoded
- If going to alerting, decode it
Case Core (Internal) Datasource:
{"results":{"A":{"refId":"A","series":null,"tables":null,"dataframes":["QVJST1cxAAD/////sBAAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAJQAAAADAAAAVAAAACgAAAAEAAAA3O///wgAAAAMAAAAAQAAAEEAAAAFAAAAcmVmSWQAAAD87///CAAAABQAAAAKAAAAbWFueV90eXBlcwAABAAAAG5hbWUAAAAAJPD//wgAAAAkAAAAGQAAAHsiY3VzdG9tIjp7IkhpIjoidGhlcmUifX0AAAAEAAAAbWV0YQAAAAAdAAAAFA8AANQMAAAYDAAAlAsAACALAACcCgAAKAoAAKQJAAAwCQAArAgAADQIAAC0BwAARAcAAMQGAABUBgAA1AUAAGQFAADkBAAAbAQAAOwDAAB8AwAA/AIAAJgCAAAcAgAAtAEAAEwBAADUAAAAbAAAAAQAAACu8///FAAAAEAAAABAAAAAAAASAUAAAAABAAAABAAAAPTw//8IAAAAFAAAAAgAAABkdXJhdGlvbgAAAAAEAAAAbmFtZQAAAAAAAAAAuvv//wAAAwAIAAAAZHVyYXRpb24AAAAA1vH//xQAAABAAAAAQAAAAAAAABJAAAAAAQAAAAQAAABY8f//CAAAABQAAAAIAAAAZHVyYXRpb24AAAAABAAAAG5hbWUAAAAAAAAAAB78//8AAAMACAAAAGR1cmF0aW9uAAAAAHb0//8UAAAASAAAAEgAAAAAAAoBSAAAAAEAAAAEAAAAvPH//wgAAAAcAAAAEwAAAG51bGxhYmxlX3RpbWVzdGFtcHMABAAAAG5hbWUAAAAAAAAAAIr8//8AAAMAEwAAAG51bGxhYmxlX3RpbWVzdGFtcHMArvL//xQAAABAAAAAQAAAAAAAAApAAAAAAQAAAAQAAAAw8v//CAAAABQAAAAKAAAAdGltZXN0YW1wcwAABAAAAG5h |
package azuremonitor | |
import ( | |
"encoding/json" | |
"fmt" | |
"time" | |
"github.com/grafana/grafana-plugin-sdk-go/data" | |
) |
benchcmp <(/usr/local/go/bin/go test -benchmem -run=^$ github.com/grafana/grafana/pkg/tsdb/azuremonitor -bench '^(BenchmarkOldInsights)$' -v | sed 's/BenchmarkOldInsights/BenchmarkInsightsMetricsResultToFrame/g') <(/usr/local/go/bin/go test -benchmem -run=^$ github.com/grafana/grafana/pkg/tsdb/azuremonitor -bench '^(BenchmarkInsightsMetricsResultToFrame)$' -v) |
### | |
GET http://admin:admin@localhost:3000/api/alert-definitions | |
### | |
@alertId = 16 | |
### |
package main | |
import ( | |
"fmt" | |
"time" | |
) | |
func main() { | |
utc6 := time.FixedZone("UTC+6", 6*3600) | |
utc7 := time.FixedZone("UTC+7", 7*3600) |
POST http://admin:admin@localhost:3000/api/alert-definitions/ | |
Content-Type: application/json | |
{ | |
"name": "Example Alert POST", | |
"condition": { | |
"refId": "C", | |
"interval": 10, | |
"queriesAndExpressions": [ | |
{ |
{ | |
name: "pending -> error(keep) with for duration have passed", | |
expected: models.AlertStatePending, | |
applyFn: func(ec *EvalContext) { | |
ec.PrevAlertState = models.AlertStatePending | |
ec.Rule.ExecutionErrorState = models.ExecutionErrorKeepState | |
ec.Error = errors.New("test error") | |
ec.Rule.For = time.Minute * 5 | |
ec.Rule.LastStateChange = time.Now().Add(-time.Minute * 20) | |
}, |
"conditions": [ | |
{ | |
"evaluator": { | |
"params": [ | |
0 | |
], | |
"type": "gt" | |
}, | |
"operator": { | |
"type": "and" |