123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package api
- import (
- "fmt"
- "log"
- "time"
- "github.com/710leo/urlooker/dataobj"
- "github.com/710leo/urlooker/modules/web/g"
- "github.com/710leo/urlooker/modules/web/model"
- "github.com/710leo/urlooker/modules/web/sender"
- "github.com/710leo/urlooker/modules/web/utils"
- )
- func (this *Web) SendResult(req dataobj.SendResultReq, reply *string) error {
- for _, arg := range req.CheckResults {
- itemStatus := model.ItemStatus{
- Ip: req.Ip,
- Sid: arg.Sid,
- RespTime: arg.RespTime,
- RespCode: arg.RespCode,
- PushTime: arg.PushTime,
- Result: arg.Status,
- }
- relSidIp := model.RelSidIp{
- Sid: arg.Sid,
- Ip: req.Ip,
- Ts: time.Now().Unix(),
- }
- err := relSidIp.Save()
- if err != nil {
- log.Println("save sid_ip error:", err)
- *reply = "save sid_ip error:" + err.Error()
- return nil
- }
- err = itemStatus.Save()
- if err != nil {
- log.Println("save item error:", err)
- *reply = "save item error:" + err.Error()
- return nil
- }
- if g.Config.Alarm.Enable {
- node, err := sender.NodeRing.GetNode(itemStatus.PK())
- if err != nil {
- log.Println("error:", err)
- *reply = "get node error:" + err.Error()
- return nil
- }
- Q := sender.SendQueues[node]
- isSuccess := Q.PushFront(itemStatus)
- if !isSuccess {
- log.Println("push itemStatus error:", itemStatus)
- *reply = "push itemStatus error"
- return nil
- }
- }
- }
- if g.Config.Falcon.Enable {
- if len(req.CheckResults) > 0 {
- utils.PushFalcon(g.Config.Falcon.Addr, req.CheckResults, req.Ip)
- }
- }
- if g.Config.Prom.Enable {
- if len(req.CheckResults) > 0 {
- utils.PushPromethues(g.Config.Prom.Addr, req.CheckResults, req.Ip)
- }
- }
- if g.Config.Statsd.Enable {
- for _, detectRes := range req.CheckResults {
- metric := fmt.Sprintf("api_status_%d_%s_%s_", detectRes.Sid, detectRes.Target, req.Ip)
- err := utils.PushStatsd(metric, detectRes.Status)
- if err != nil {
- log.Println("push Statsd err:", err, detectRes)
- }
- metric = fmt.Sprintf("api_resptime_%d_%s_%s_", detectRes.Sid, detectRes.Target, req.Ip)
- err = utils.PushStatsd(metric, int64(detectRes.RespTime))
- if err != nil {
- log.Println("push Statsd err:", err, detectRes)
- }
- }
- }
- *reply = ""
- return nil
- }
- func (this *Web) GetItem(idc string, resp *dataobj.GetItemResponse) error {
- items, exists := g.DetectedItemMap.Get(idc)
- if !exists {
- resp.Message = "no found item assigned to " + idc
- }
- resp.Data = items
- return nil
- }
|