You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
5.5 KiB
188 lines
5.5 KiB
package service |
|
|
|
import ( |
|
"bytes" |
|
"context" |
|
"encoding/json" |
|
"fmt" |
|
"go-common/app/admin/main/apm/conf" |
|
"go-common/app/admin/main/apm/model/databus" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
"net/http" |
|
) |
|
|
|
//Alarm ... |
|
// func (s *Service) Alarm(c context.Context, group, action string) (result *databus.AlarmOpen, err error) { |
|
// url := conf.Conf.Alarm.DatabusURL |
|
// var jsonBytes []byte |
|
// body := &struct { |
|
// Action string `json:"Action"` |
|
// PublicKey string `json:"PublicKey"` |
|
// Signature int8 `json:"Signature"` |
|
// Group string `json:"Group"` |
|
// }{ |
|
// Action: action, |
|
// PublicKey: conf.Conf.Alarm.DatabusKey, |
|
// Signature: 1, |
|
// Group: group, |
|
// } |
|
// if jsonBytes, err = json.Marshal(body); err != nil { |
|
// log.Error("json.Marshal(body) error(%v)", err) |
|
// return |
|
// } |
|
// req, err := http.NewRequest("POST", url, strings.NewReader(string(jsonBytes))) |
|
// if err != nil { |
|
// err = ecode.RequestErr |
|
// return |
|
// } |
|
// req.Header.Set("Content-Type", "application/json") |
|
// // req.Header.Set("Cookie", cookie) |
|
// result = &databus.AlarmOpen{} |
|
// if err = s.client.Do(c, req, result); err != nil { |
|
// fmt.Printf("result=(%v) error=(%v)", result, err) |
|
// log.Error("Alarm() error(%v)", err) |
|
// err = ecode.RequestErr |
|
// return |
|
// } |
|
// return |
|
// } |
|
|
|
//Opsmind ... |
|
func (s *Service) Opsmind(c context.Context, project, group, action, Owners string, percentage, fortime int64, silence bool) (result *databus.Res, err error) { |
|
var scopes []databus.Scope |
|
scopes = append(scopes, databus.Scope{Type: 0, Key: "group", Val: []string{group}}) |
|
var owner databus.Owner |
|
owner.Owner = Owners |
|
owner.App = project |
|
url := conf.Conf.Alarm.DatabusURL |
|
body := &struct { |
|
Action string `json:"Action"` |
|
PublicKey string `json:"PublicKey"` |
|
Signature int8 `json:"Signature"` |
|
PolicyID string `json:"PolicyId"` |
|
CateGory string `json:"CateGory"` |
|
Silence bool `json:"Silence"` |
|
Scope []databus.Scope `json:"Scope"` |
|
TriggerName string `json:"TriggerName"` |
|
TriggerOperator string `json:"TriggerOperator"` |
|
TriggerLevel string `json:"TriggerLevel"` |
|
TriggerThreshold int64 `json:"TriggerThreshold"` |
|
TriggerFor int64 `json:"TriggerFor"` |
|
TriggerNoDataFor int64 `json:"TriggerNoDataFor"` |
|
TriggerNotes databus.Owner `json:"TriggerNotes"` |
|
}{ |
|
Action: action, |
|
PublicKey: conf.Conf.Alarm.DatabusKey, |
|
Signature: 1, |
|
PolicyID: "3mwipx2caggxc", |
|
CateGory: "Databus", |
|
Silence: silence, |
|
Scope: scopes, |
|
TriggerName: fmt.Sprintf("%s消费落后告警", group), |
|
TriggerOperator: "<", |
|
TriggerLevel: "P3", |
|
TriggerThreshold: percentage, |
|
TriggerFor: fortime, |
|
TriggerNoDataFor: 300, |
|
TriggerNotes: owner, |
|
} |
|
// json.NewEncoder(os.Stdout).Encode(body) |
|
buf := &bytes.Buffer{} |
|
err = json.NewEncoder(buf).Encode(body) |
|
if err != nil { |
|
log.Error("json.Marshal(body) error(%v)", err) |
|
return |
|
} |
|
req, err := http.NewRequest("POST", url, buf) |
|
if err != nil { |
|
err = ecode.RequestErr |
|
return |
|
} |
|
req.Header.Set("Content-Type", "application/json") |
|
// req.Header.Set("Cookie", cookie) |
|
result = &databus.Res{} |
|
if err = s.client.Do(c, req, result); err != nil { |
|
log.Error("Alarm() error(%v)", err) |
|
err = ecode.RequestErr |
|
return |
|
} |
|
return |
|
} |
|
|
|
// OpsmindRemove ... |
|
func (s *Service) OpsmindRemove(c context.Context, adjustid, action string) (result *databus.Res, err error) { |
|
url := conf.Conf.Alarm.DatabusURL |
|
body := &struct { |
|
Action string `json:"Action"` |
|
PublicKey string `json:"PublicKey"` |
|
Signature int8 `json:"Signature"` |
|
PolicyID string `json:"PolicyId"` |
|
AdjustID string `json:"AdjustId"` |
|
}{ |
|
Action: action, |
|
PublicKey: conf.Conf.Alarm.DatabusKey, |
|
Signature: 1, |
|
PolicyID: "3mwipx2caggxc", |
|
AdjustID: adjustid, |
|
} |
|
// json.NewEncoder(os.Stdout).Encode(body) |
|
buf := &bytes.Buffer{} |
|
err = json.NewEncoder(buf).Encode(body) |
|
if err != nil { |
|
log.Error("json.Marshal(body) error(%v)", err) |
|
return |
|
} |
|
req, err := http.NewRequest("POST", url, buf) |
|
if err != nil { |
|
err = ecode.RequestErr |
|
return |
|
} |
|
req.Header.Set("Content-Type", "application/json") |
|
// req.Header.Set("Cookie", cookie) |
|
result = &databus.Res{} |
|
if err = s.client.Do(c, req, result); err != nil { |
|
log.Error("Alarm() error(%v)", err) |
|
err = ecode.RequestErr |
|
return |
|
} |
|
return |
|
} |
|
|
|
//OpsmindQuery ... |
|
func (s *Service) OpsmindQuery(c context.Context, group, action string) (result *databus.ResQuery, err error) { |
|
var query []databus.Query |
|
query = append(query, databus.Query{Key: "group", Val: []string{group}}) |
|
url := conf.Conf.Alarm.DatabusURL |
|
body := &struct { |
|
Action string `json:"Action"` |
|
PublicKey string `json:"PublicKey"` |
|
Signature int8 `json:"Signature"` |
|
Query []databus.Query `json:"Query"` |
|
}{ |
|
Action: action, |
|
PublicKey: conf.Conf.Alarm.DatabusKey, |
|
Signature: 1, |
|
Query: query, |
|
} |
|
// json.NewEncoder(os.Stdout).Encode(body) |
|
buf := &bytes.Buffer{} |
|
err = json.NewEncoder(buf).Encode(body) |
|
if err != nil { |
|
log.Error("json.Marshal(body) error(%v)", err) |
|
return |
|
} |
|
req, err := http.NewRequest("POST", url, buf) |
|
if err != nil { |
|
err = ecode.RequestErr |
|
return |
|
} |
|
req.Header.Set("Content-Type", "application/json") |
|
// req.Header.Set("Cookie", cookie) |
|
result = &databus.ResQuery{} |
|
if err = s.client.Do(c, req, result); err != nil { |
|
log.Error("Alarm() error(%v)", err) |
|
err = ecode.RequestErr |
|
} |
|
return |
|
}
|
|
|