alerts-and-other-stuff/parser.go

54 lines
1.7 KiB
Go
Raw Normal View History

2025-11-23 13:54:05 +01:00
package main
import (
2025-11-23 16:07:12 +01:00
"strings"
2025-11-23 13:54:05 +01:00
"encoding/json"
)
type Alert struct {
Status string `json:"status"`
StartsAt string `json:"startsAt"`
EndsAt string `json:"endsAt"`
GeneratorURL string `json:"generatorURL"`
Fingerprint string `json:"fingerprint"`
SilenceURL string `json:"silenceURL"`
DashboardURL string `json:"dashboardURL"`
PanelURL string `json:"panelURL"`
ValueString string `json:"valueString"`
OrgId int `json:"orgId"`
Labels map[string]any `json:"labels"`
Annotations map[string]any `json:"annotations"`
values map[int]any `json:"values"`
}
type Payload struct {
Receiver string `json:"receiver"`
Status string `json:"firing"`
ExternalURL string `json:"externalURL"`
2025-11-23 16:07:12 +01:00
Version string `json:"version"`
2025-11-23 13:54:05 +01:00
GroupKey string `json:"groupKey"`
TruncatedAlerts int `json:"truncatedAlerts"`
OrgID int `json:"orgId"`
Title string `json:"title"`
State string `json"state"`
Message string `json:"message"`
2025-11-23 16:07:12 +01:00
Alerts []Alert `json:"alerts"`
2025-11-23 13:54:05 +01:00
GroupLabels map[string]any `json:"groupLabels"`
CommonLabels map[string]any `json:"groupLabels"`
CommonAnnotations map[string]any `json:"commonAnnotations"`
}
2025-11-23 16:07:12 +01:00
func ParseAlert(payload []byte) (string) {
var data Payload
p1 := json.Unmarshal(payload, &data)
2025-11-23 13:54:05 +01:00
check(p1)
2025-11-23 16:07:12 +01:00
var o strings.Builder
o.WriteString(data.Title)
o.WriteString("status: " + data.Status)
o.WriteString("state: " + data.State)
o.WriteString(data.Message)
return o.String()
2025-11-23 13:54:05 +01:00
}