Commit 01beca36 authored by 李科's avatar 李科

refactor: 告警总览

parent fe1068af
...@@ -6,6 +6,7 @@ import ( ...@@ -6,6 +6,7 @@ import (
"fmt" "fmt"
"github.com/jinzhu/copier" "github.com/jinzhu/copier"
json "github.com/json-iterator/go" json "github.com/json-iterator/go"
"github.com/opensearch-project/opensearch-go"
"github.com/opensearch-project/opensearch-go/opensearchapi" "github.com/opensearch-project/opensearch-go/opensearchapi"
"github.com/spf13/cast" "github.com/spf13/cast"
"github.com/tidwall/gjson" "github.com/tidwall/gjson"
...@@ -94,7 +95,7 @@ func (a *AlertOverviewSvc) AlertOverview(req request.DetailAlertOverview) (resp ...@@ -94,7 +95,7 @@ func (a *AlertOverviewSvc) AlertOverview(req request.DetailAlertOverview) (resp
req.EndTime = time.Now().Add(time.Hour * 24).Format("2006-01-02") req.EndTime = time.Now().Add(time.Hour * 24).Format("2006-01-02")
} }
content := strings.NewReader(fmt.Sprintf(`{ content := fmt.Sprintf(`{
"size": 0, "size": 0,
"query": { "query": {
"range": { "range": {
...@@ -129,22 +130,9 @@ func (a *AlertOverviewSvc) AlertOverview(req request.DetailAlertOverview) (resp ...@@ -129,22 +130,9 @@ func (a *AlertOverviewSvc) AlertOverview(req request.DetailAlertOverview) (resp
} }
} }
} }
}`, req.StartTime, req.EndTime)) }`, req.StartTime, req.EndTime)
res := opensearchapi.SearchRequest{ body, err := executeQuery(cli, OpenSearchIndex, content)
Index: []string{OpenSearchIndex},
Body: content,
}
do, err := res.Do(context.Background(), cli)
if err != nil {
return
}
defer do.Body.Close()
if do.StatusCode < http.StatusOK && do.StatusCode > http.StatusIMUsed {
err = errors.New(do.String())
return
}
body, err := io.ReadAll(do.Body)
if err != nil { if err != nil {
return return
} }
...@@ -202,40 +190,7 @@ func (a *AlertOverviewSvc) RiskLevelDistribution(req request.DetailAlertOverview ...@@ -202,40 +190,7 @@ func (a *AlertOverviewSvc) RiskLevelDistribution(req request.DetailAlertOverview
req.EndTime = time.Now().Add(time.Hour * 24).Format("2006-01-02") req.EndTime = time.Now().Add(time.Hour * 24).Format("2006-01-02")
} }
content := strings.NewReader(fmt.Sprintf(`{ body, err := executeQuery(cli, OpenSearchIndex, buildAggQueryContent(req.StartTime, req.EndTime, "risk_level"))
"size": 0,
"query": {
"range": {
"created_at": {
"gte": "%s",
"lte": "%s"
}
}
},
"aggs": {
"group": {
"terms": {
"field": "risk_level",
"size": 10
}
}
}
}`, req.StartTime, req.EndTime))
res := opensearchapi.SearchRequest{
Index: []string{OpenSearchIndex},
Body: content,
}
do, err := res.Do(context.Background(), cli)
if err != nil {
return
}
defer do.Body.Close()
if do.StatusCode < http.StatusOK && do.StatusCode > http.StatusIMUsed {
err = errors.New(do.String())
return
}
body, err := io.ReadAll(do.Body)
if err != nil { if err != nil {
return return
} }
...@@ -280,44 +235,10 @@ func (a *AlertOverviewSvc) AlertStatusDistribution(req request.DetailAlertOvervi ...@@ -280,44 +235,10 @@ func (a *AlertOverviewSvc) AlertStatusDistribution(req request.DetailAlertOvervi
req.EndTime = time.Now().Add(time.Hour * 24).Format("2006-01-02") req.EndTime = time.Now().Add(time.Hour * 24).Format("2006-01-02")
} }
content := strings.NewReader(fmt.Sprintf(`{ body, err := executeQuery(cli, OpenSearchIndex, buildAggQueryContent(req.StartTime, req.EndTime, "status"))
"size": 0,
"query": {
"range": {
"created_at": {
"gte": "%s",
"lte": "%s"
}
}
},
"aggs": {
"group": {
"terms": {
"field": "status",
"size": 10
}
}
}
}`, req.StartTime, req.EndTime))
res := opensearchapi.SearchRequest{
Index: []string{OpenSearchIndex},
Body: content,
}
do, err := res.Do(context.Background(), cli)
if err != nil { if err != nil {
return return
} }
defer do.Body.Close()
if do.StatusCode < http.StatusOK && do.StatusCode > http.StatusIMUsed {
err = errors.New(do.String())
return
}
body, err := io.ReadAll(do.Body)
if err != nil {
return
}
result := gjson.GetBytes(body, "aggregations") result := gjson.GetBytes(body, "aggregations")
err = json.Unmarshal([]byte(result.String()), &sources) err = json.Unmarshal([]byte(result.String()), &sources)
if err != nil { if err != nil {
...@@ -358,40 +279,7 @@ func (a *AlertOverviewSvc) AlertClassDistribution(req request.DetailAlertOvervie ...@@ -358,40 +279,7 @@ func (a *AlertOverviewSvc) AlertClassDistribution(req request.DetailAlertOvervie
req.EndTime = time.Now().Add(time.Hour * 24).Format("2006-01-02") req.EndTime = time.Now().Add(time.Hour * 24).Format("2006-01-02")
} }
content := strings.NewReader(fmt.Sprintf(`{ body, err := executeQuery(cli, OpenSearchIndex, buildAggQueryContent(req.StartTime, req.EndTime, "class_id"))
"size": 0,
"query": {
"range": {
"created_at": {
"gte": "%s",
"lte": "%s"
}
}
},
"aggs": {
"group": {
"terms": {
"field": "class_id",
"size": 10
}
}
}
}`, req.StartTime, req.EndTime))
res := opensearchapi.SearchRequest{
Index: []string{OpenSearchIndex},
Body: content,
}
do, err := res.Do(context.Background(), cli)
if err != nil {
return
}
defer do.Body.Close()
if do.StatusCode < http.StatusOK && do.StatusCode > http.StatusIMUsed {
err = errors.New(do.String())
return
}
body, err := io.ReadAll(do.Body)
if err != nil { if err != nil {
return return
} }
...@@ -445,7 +333,7 @@ func (a *AlertOverviewSvc) AlertFrequencyDistribution(req request.DetailAlertOve ...@@ -445,7 +333,7 @@ func (a *AlertOverviewSvc) AlertFrequencyDistribution(req request.DetailAlertOve
"gte": "2023-07-17", "gte": "2023-07-17",
"lte": "2023-07-18" "lte": "2023-07-18"
*/ */
content := strings.NewReader(`{ content := `{
"size": 0, "size": 0,
"query": { "query": {
"range": { "range": {
...@@ -465,22 +353,9 @@ func (a *AlertOverviewSvc) AlertFrequencyDistribution(req request.DetailAlertOve ...@@ -465,22 +353,9 @@ func (a *AlertOverviewSvc) AlertFrequencyDistribution(req request.DetailAlertOve
} }
} }
} }
}`) }`
res := opensearchapi.SearchRequest{ body, err := executeQuery(cli, OpenSearchIndex, content)
Index: []string{OpenSearchIndex},
Body: content,
}
do, err := res.Do(context.Background(), cli)
if err != nil {
return
}
defer do.Body.Close()
if do.StatusCode < http.StatusOK && do.StatusCode > http.StatusIMUsed {
err = errors.New(do.String())
return
}
body, err := io.ReadAll(do.Body)
if err != nil { if err != nil {
return return
} }
...@@ -510,6 +385,52 @@ func (a *AlertOverviewSvc) AlertFrequencyDistribution(req request.DetailAlertOve ...@@ -510,6 +385,52 @@ func (a *AlertOverviewSvc) AlertFrequencyDistribution(req request.DetailAlertOve
} }
func buildAggQueryContent(startTime, endTime string, field string) string {
return fmt.Sprintf(`{
"size": 0,
"query": {
"range": {
"created_at": {
"gte": "%s",
"lte": "%s"
}
}
},
"aggs": {
"group": {
"terms": {
"field": "%s",
"size": 10
}
}
}
}`, startTime, endTime, field)
}
func executeQuery(cli *opensearch.Client, index string, content string) ([]byte, error) {
res := opensearchapi.SearchRequest{
Index: []string{index},
Body: strings.NewReader(content),
}
do, err := res.Do(context.Background(), cli)
if err != nil {
return nil, err
}
defer do.Body.Close()
if do.StatusCode < http.StatusOK && do.StatusCode > http.StatusIMUsed {
return nil, errors.New(do.String())
}
body, err := io.ReadAll(do.Body)
if err != nil {
return nil, err
}
return body, nil
}
func (a *AlertOverviewSvc) List(req request.ListAlertOverview) (resp response.AlertOverviewList, err error) { func (a *AlertOverviewSvc) List(req request.ListAlertOverview) (resp response.AlertOverviewList, err error) {
db, err := client.GetDbClient() db, err := client.GetDbClient()
if err != nil { if err != nil {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment