attach duration to alert message in search api
This commit is contained in:
parent
a7d694cd12
commit
b2735be2e3
|
@ -120,8 +120,8 @@ func (h *AlertAPI) searchAlertMessage(w http.ResponseWriter, req *http.Request,
|
||||||
severity = h.GetParameterOrDefault(req, "severity", "")
|
severity = h.GetParameterOrDefault(req, "severity", "")
|
||||||
sort = h.GetParameterOrDefault(req, "sort", "")
|
sort = h.GetParameterOrDefault(req, "sort", "")
|
||||||
ruleID = h.GetParameterOrDefault(req, "rule_id", "")
|
ruleID = h.GetParameterOrDefault(req, "rule_id", "")
|
||||||
min = h.GetParameterOrDefault(req, "min", "")
|
min = h.GetParameterOrDefault(req, "min", "now-1d")
|
||||||
max = h.GetParameterOrDefault(req, "max", "")
|
max = h.GetParameterOrDefault(req, "max", "now")
|
||||||
mustBuilder = &strings.Builder{}
|
mustBuilder = &strings.Builder{}
|
||||||
sortBuilder = strings.Builder{}
|
sortBuilder = strings.Builder{}
|
||||||
)
|
)
|
||||||
|
@ -165,7 +165,35 @@ func (h *AlertAPI) searchAlertMessage(w http.ResponseWriter, req *http.Request,
|
||||||
h.WriteError(w, err.Error(), http.StatusInternalServerError)
|
h.WriteError(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
h.Write(w, res.Raw)
|
esRes := elastic.SearchResponse{}
|
||||||
|
err = util.FromJSONBytes(res.Raw, &esRes)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(err)
|
||||||
|
h.WriteError(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, hit := range esRes.Hits.Hits {
|
||||||
|
created, _ := parseTime(hit.Source["created"], time.RFC3339)
|
||||||
|
updated, _ := parseTime(hit.Source["updated"], time.RFC3339)
|
||||||
|
if !created.IsZero() && !updated.IsZero() {
|
||||||
|
endTime := time.Now()
|
||||||
|
if hit.Source["status"] == alerting.MessageStateRecovered {
|
||||||
|
endTime = updated
|
||||||
|
}
|
||||||
|
hit.Source["duration"] = endTime.Sub(created).Milliseconds()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
h.WriteJSON(w, esRes, http.StatusOK)
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseTime( t interface{}, layout string) (time.Time, error){
|
||||||
|
switch t.(type) {
|
||||||
|
case string:
|
||||||
|
return time.Parse(layout, t.(string))
|
||||||
|
default:
|
||||||
|
return time.Time{}, fmt.Errorf("unsupport time type")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *AlertAPI) getAlertMessage(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {
|
func (h *AlertAPI) getAlertMessage(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {
|
||||||
|
|
Loading…
Reference in New Issue