54 lines
1.7 KiB
Go
54 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
"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"`
|
|
Version string `json:"version"`
|
|
GroupKey string `json:"groupKey"`
|
|
TruncatedAlerts int `json:"truncatedAlerts"`
|
|
OrgID int `json:"orgId"`
|
|
Title string `json:"title"`
|
|
State string `json"state"`
|
|
Message string `json:"message"`
|
|
Alerts []Alert `json:"alerts"`
|
|
GroupLabels map[string]any `json:"groupLabels"`
|
|
CommonLabels map[string]any `json:"groupLabels"`
|
|
CommonAnnotations map[string]any `json:"commonAnnotations"`
|
|
}
|
|
|
|
|
|
func ParseAlert(payload []byte) (string) {
|
|
var data Payload
|
|
p1 := json.Unmarshal(payload, &data)
|
|
check(p1)
|
|
|
|
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()
|
|
}
|