func main() { flag.Parse() conf, err := config.NewConfigFromFile(*configFile) if err != nil { log.Fatal(errors.ErrorStack(err)) } if err = initLogger(conf); err != nil { log.Fatal(errors.ErrorStack(err)) } server, err := service.NewServer(conf) if err != nil { log.Fatal(errors.ErrorStack(err)) } err = metrics.Init(conf) if err != nil { log.Fatalf("init metrics err: %v", err) } err = server.Start() if err != nil { log.Fatal(errors.ErrorStack(err)) } c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGTERM, os.Interrupt, os.Kill) log.Debug("Process start") <-c server.Stop() log.Debug("Process stop") }
func (s *Server) monitorHandler(w http.ResponseWriter, r *http.Request) { r.ParseForm() monitorType := r.FormValue("type") queue := r.FormValue("queue") group := r.FormValue("group") end := time.Now().Unix() start := end - 5*60 //5min interval := int64(1) startTime := r.FormValue("start") if startTime != "" { start, _ = strconv.ParseInt(startTime, 10, 0) } endTime := r.FormValue("end") if endTime != "" { end, _ = strconv.ParseInt(endTime, 10, 0) } intervalTime := r.FormValue("interval") if intervalTime != "" { interval, _ = strconv.ParseInt(intervalTime, 10, 0) } var result string switch monitorType { case "send": m, err := s.queue.GetSendMetrics(queue, group, start, end, interval) if err != nil { log.Debug("GetSendMetrics err: %s", errors.ErrorStack(err)) return } sm, err := json.Marshal(m) if err != nil { log.Debugf("GetSendMetrics Marshal err: %s", err) return } result = string(sm) case "receive": m, err := s.queue.GetReceiveMetrics(queue, group, start, end, interval) if err != nil { log.Debug("GetReceiveMetrics err: %s", errors.ErrorStack(err)) return } rm, err := json.Marshal(m) if err != nil { log.Debugf("GetReceiveMetrics Marshal err: %s", err) return } result = string(rm) default: result = "error, param type=" + monitorType + " not support!" } fmt.Fprintf(w, result) }