Alerting: Extract values from MD expr alerts (#34757)
When using mulit-dimensional Grafana managed alerts (e.g. SSE math) extract refIds values and labels so they can be shown in the notification and dashboards.
This commit is contained in:
@@ -17,30 +17,51 @@ func extractEvalString(frame *data.Frame) (s string) {
|
||||
return
|
||||
}
|
||||
|
||||
evalMatches, ok := frame.Meta.Custom.([]classic.EvalMatch)
|
||||
if !ok {
|
||||
return
|
||||
if evalMatches, ok := frame.Meta.Custom.([]classic.EvalMatch); ok {
|
||||
sb := strings.Builder{}
|
||||
|
||||
for i, m := range evalMatches {
|
||||
sb.WriteString("[ ")
|
||||
sb.WriteString(fmt.Sprintf("metric='%s' ", m.Metric))
|
||||
sb.WriteString(fmt.Sprintf("labels={%s} ", m.Labels))
|
||||
|
||||
valString := "null"
|
||||
if m.Value != nil {
|
||||
valString = fmt.Sprintf("%v", *m.Value)
|
||||
}
|
||||
|
||||
sb.WriteString(fmt.Sprintf("value=%v ", valString))
|
||||
|
||||
sb.WriteString("]")
|
||||
if i < len(evalMatches)-1 {
|
||||
sb.WriteString(", ")
|
||||
}
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
sb := strings.Builder{}
|
||||
if caps, ok := frame.Meta.Custom.([]NumberValueCapture); ok {
|
||||
sb := strings.Builder{}
|
||||
|
||||
for i, m := range evalMatches {
|
||||
sb.WriteString("[ ")
|
||||
sb.WriteString(fmt.Sprintf("metric='%s' ", m.Metric))
|
||||
sb.WriteString(fmt.Sprintf("labels={%s} ", m.Labels))
|
||||
for i, c := range caps {
|
||||
sb.WriteString("[ ")
|
||||
sb.WriteString(fmt.Sprintf("var='%s' ", c.Var))
|
||||
sb.WriteString(fmt.Sprintf("labels={%s} ", c.Labels))
|
||||
|
||||
valString := "null"
|
||||
if m.Value != nil {
|
||||
valString = fmt.Sprintf("%v", *m.Value)
|
||||
}
|
||||
valString := "null"
|
||||
if c.Value != nil {
|
||||
valString = fmt.Sprintf("%v", *c.Value)
|
||||
}
|
||||
|
||||
sb.WriteString(fmt.Sprintf("value=%v ", valString))
|
||||
sb.WriteString(fmt.Sprintf("value=%v ", valString))
|
||||
|
||||
sb.WriteString("]")
|
||||
if i < len(evalMatches)-1 {
|
||||
sb.WriteString(", ")
|
||||
sb.WriteString("]")
|
||||
if i < len(caps)-1 {
|
||||
sb.WriteString(", ")
|
||||
}
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
return sb.String()
|
||||
return ""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user