add type to alertingRule and recordingRule struct

Signed-off-by: sarthak.tyagi <sarthaktyagi100@gmail.com>
This commit is contained in:
sarthak.tyagi 2024-07-10 10:24:37 +01:00
parent 7cd1249dcc
commit c302ac5d8f
2 changed files with 21 additions and 13 deletions

View File

@ -601,6 +601,7 @@ type AlertingRule struct {
EvaluationTime float64 `json:"evaluationTime"` EvaluationTime float64 `json:"evaluationTime"`
LastEvaluation time.Time `json:"lastEvaluation"` LastEvaluation time.Time `json:"lastEvaluation"`
State string `json:"state"` State string `json:"state"`
Type string `json:"type"`
} }
// RecordingRule models a recording rule. // RecordingRule models a recording rule.
@ -612,6 +613,7 @@ type RecordingRule struct {
LastError string `json:"lastError,omitempty"` LastError string `json:"lastError,omitempty"`
EvaluationTime float64 `json:"evaluationTime"` EvaluationTime float64 `json:"evaluationTime"`
LastEvaluation time.Time `json:"lastEvaluation"` LastEvaluation time.Time `json:"lastEvaluation"`
Type string `json:"type"`
} }
// Alert models an active alert. // Alert models an active alert.
@ -721,11 +723,13 @@ func (rg *RuleGroup) UnmarshalJSON(b []byte) error {
for _, rule := range v.Rules { for _, rule := range v.Rules {
alertingRule := AlertingRule{} alertingRule := AlertingRule{}
alertingRule.Type = string(RuleTypeAlerting)
if err := json.Unmarshal(rule, &alertingRule); err == nil { if err := json.Unmarshal(rule, &alertingRule); err == nil {
rg.Rules = append(rg.Rules, alertingRule) rg.Rules = append(rg.Rules, alertingRule)
continue continue
} }
recordingRule := RecordingRule{} recordingRule := RecordingRule{}
recordingRule.Type = string(RuleTypeRecording)
if err := json.Unmarshal(rule, &recordingRule); err == nil { if err := json.Unmarshal(rule, &recordingRule); err == nil {
rg.Rules = append(rg.Rules, recordingRule) rg.Rules = append(rg.Rules, recordingRule)
continue continue

View File

@ -717,20 +717,22 @@ func TestAPIs(t *testing.T) {
"annotations": map[string]interface{}{ "annotations": map[string]interface{}{
"summary": "High request latency", "summary": "High request latency",
}, },
"duration": 600,
"health": "ok",
"labels": map[string]interface{}{ "labels": map[string]interface{}{
"severity": "page", "severity": "page",
}, },
"name": "HighRequestLatency", "duration": 600,
"query": "job:request_latency_seconds:mean5m{job=\"myjob\"} > 0.5", "health": "ok",
"type": "alerting", "name": "HighRequestLatency",
"query": "job:request_latency_seconds:mean5m{job=\"myjob\"} > 0.5",
"lastError": "",
"type": "alerting",
}, },
{ {
"health": "ok", "health": "ok",
"name": "job:http_inprogress_requests:sum", "name": "job:http_inprogress_requests:sum",
"query": "sum(http_inprogress_requests) by (job)", "query": "sum(http_inprogress_requests) by (job)",
"type": "recording", "lastError": "",
"type": "recording",
}, },
}, },
}, },
@ -769,12 +771,14 @@ func TestAPIs(t *testing.T) {
Name: "HighRequestLatency", Name: "HighRequestLatency",
Query: "job:request_latency_seconds:mean5m{job=\"myjob\"} > 0.5", Query: "job:request_latency_seconds:mean5m{job=\"myjob\"} > 0.5",
LastError: "", LastError: "",
Type: "alerting",
}, },
RecordingRule{ RecordingRule{
Health: RuleHealthGood, Health: RuleHealthGood,
Name: "job:http_inprogress_requests:sum", Name: "job:http_inprogress_requests:sum",
Query: "sum(http_inprogress_requests) by (job)", Query: "sum(http_inprogress_requests) by (job)",
LastError: "", LastError: "",
Type: "recording",
}, },
}, },
}, },
@ -861,14 +865,14 @@ func TestAPIs(t *testing.T) {
Annotations: model.LabelSet{ Annotations: model.LabelSet{
"summary": "High request latency", "summary": "High request latency",
}, },
Duration: 600,
Health: RuleHealthGood,
Labels: model.LabelSet{ Labels: model.LabelSet{
"severity": "page", "severity": "page",
}, },
Duration: 600,
Health: RuleHealthGood,
Name: "HighRequestLatency", Name: "HighRequestLatency",
Query: "job:request_latency_seconds:mean5m{job=\"myjob\"} > 0.5", Query: "job:request_latency_seconds:mean5m{job=\"myjob\"} > 0.5",
LastError: "", Type: "alerting",
EvaluationTime: 0.5, EvaluationTime: 0.5,
LastEvaluation: time.Date(2020, 5, 18, 15, 52, 53, 450311300, time.UTC), LastEvaluation: time.Date(2020, 5, 18, 15, 52, 53, 450311300, time.UTC),
State: "firing", State: "firing",
@ -877,7 +881,7 @@ func TestAPIs(t *testing.T) {
Health: RuleHealthGood, Health: RuleHealthGood,
Name: "job:http_inprogress_requests:sum", Name: "job:http_inprogress_requests:sum",
Query: "sum(http_inprogress_requests) by (job)", Query: "sum(http_inprogress_requests) by (job)",
LastError: "", Type: "recording",
EvaluationTime: 0.3, EvaluationTime: 0.3,
LastEvaluation: time.Date(2020, 5, 18, 15, 52, 53, 450311300, time.UTC), LastEvaluation: time.Date(2020, 5, 18, 15, 52, 53, 450311300, time.UTC),
}, },