cauto 2 éve
szülő
commit
742e6d3546
6 módosított fájl, 233 hozzáadás és 149 törlés
  1. 7 1
      README.MD
  2. 9 0
      hack/config.yaml
  3. 46 139
      internal/cmd/cmd.go
  4. 117 0
      internal/task/cmd/cmd.go
  5. 2 9
      main.go
  6. 52 0
      maintask/main.go

+ 7 - 1
README.MD

@@ -6,4 +6,10 @@ Project Makefile Commands:
 - `make service`: Parse `logic` folder to generate interface go files into `service` folder.
 - `make image TAG=xxx`: Run `docker build` to build image according `manifest/docker`.
 - `make image.push TAG=xxx`: Run `docker build` and `docker push` to build and push image according `manifest/docker`.
-- `make deploy TAG=xxx`: Run `kustomize build` to build and deploy deployment to kubernetes server group according `manifest/deploy`.
+- `make deploy TAG=xxx`: Run `kustomize build` to build and deploy deployment to kubernetes server group according `manifest/deploy`.
+
+
+编译
+gf build main.go -n nodeMonitor -a amd64 -s linux
+
+gf build /maintask/main.go -n nodeMonitorTask -a amd64 -s linux

+ 9 - 0
hack/config.yaml

@@ -11,6 +11,15 @@ gfcli:
     version: ""
     output: "./bin"
     extra: ""
+  buildTask:
+    name: "nodeMonitorTask"
+    arch: "amd64"
+    system: "linux"
+    mod: "none"
+    packSrc: ""
+    version: ""
+    output: "./bin"
+    extra: ""
   gen:
     dao:
       - link: "mysql:nodemonitor:m4A6zLaDnRCNd4xw@tcp(156.234.193.212:33060)/nodemonitor?loc=Local&parseTime=true"

+ 46 - 139
internal/cmd/cmd.go

@@ -2,19 +2,13 @@ package cmd
 
 import (
 	"context"
-	"fmt"
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/net/ghttp"
 	"github.com/gogf/gf/v2/net/goai"
 	"github.com/gogf/gf/v2/os/gcmd"
-	"github.com/gogf/gf/v2/os/gcron"
-	"github.com/gogf/gf/v2/os/glog"
 	"nodeMonitor/internal/consts"
 	"nodeMonitor/internal/router"
-	"nodeMonitor/internal/service"
-	"nodeMonitor/internal/task"
 	"nodeMonitor/internal/websocket"
-	"time"
 )
 
 var (
@@ -37,16 +31,16 @@ var (
 			// Custom enhance API document.
 			enhanceOpenAPIDoc(s)
 
-			err = StartPingStart(ctx)
-			if err != nil {
-				return err
-			}
-
-			defer func() {
-
-				gcron.Stop("ping_status")
-				gcron.Remove("ping_status")
-			}()
+			//err = StartPingStart(ctx)
+			//if err != nil {
+			//	return err
+			//}
+			//
+			//defer func() {
+			//
+			//	gcron.Stop("ping_status")
+			//	gcron.Remove("ping_status")
+			//}()
 
 			s.Run()
 			return nil
@@ -70,126 +64,39 @@ func enhanceOpenAPIDoc(s *ghttp.Server) {
 	}
 }
 
-func test(ctx context.Context) {
-	taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
-	if err != nil {
-		glog.Debug(ctx, err.Error())
-		return
-	}
-
-	s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
-	t, err := task.GetCronNextTime(s, time.Now())
-	glog.Info(ctx, "NextTime:", t, err)
-
-	for i := 0; i < 3; i++ {
-		glog.Info(ctx, "执行任务:", i)
-	}
-}
-
-func TestCrom(ctx context.Context) error {
-	taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
-	if err != nil {
-		glog.Debug(ctx, err.Error())
-		return err
-	}
-
-	taskName, err := g.Cfg().Get(ctx, "node.taskName")
-	if err != nil {
-		glog.Debug(ctx, err.Error())
-		return err
-	}
-	s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
-	t, err := task.GetCronNextTime(s, time.Now())
-	glog.Info(ctx, "NextTime:", t, err)
-	_, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
-		go test(ctx)
-	}, taskName.String())
-	return nil
-}
-
-func StartPingStart(ctx context.Context) error {
-	//go syslog.NotificationLog(ctx)
-
-	clearLongTime := fmt.Sprintf("0 0 0 * * *")
-	t, err := task.GetCronNextTime(clearLongTime, time.Now())
-	if err != nil {
-		glog.Error(ctx, err.Error())
-		return err
-	}
-	glog.Info(ctx, "ClearLogTime:", t, err)
-	_, err = gcron.AddSingleton(ctx, clearLongTime, func(ctx context.Context) {
-		go task.ClearLog(ctx)
-	}, "ClearLog")
-
-	//_, err = gcron.AddSingleton(ctx, "* * * * * *", func(ctx context.Context) {
-	//	s := fmt.Sprintf("url_log ---- 开始请求\n")
-	//	websocket.SendToAll(&websocket.WResponse{
-	//		Event: "sys_log",
-	//		Data: g.Map{
-	//			"msg": s,
-	//		},
-	//	})
-	//}, "test_weboscket_send")
-
-	nodePing, err := g.Cfg().Get(ctx, "node.nodePing")
-	if err != nil {
-		glog.Debug(ctx, err.Error())
-		return err
-	}
-
-	pingconfig, err := service.PingConfig().Get(ctx)
-	if err != nil {
-		glog.Debug(ctx, err.Error())
-		return err
-	}
-
-	if nodePing.Int() == 1 {
-		s := fmt.Sprintf("0 0 2 * * *", pingconfig.PingTime)
-		_, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
-			go task.Ping(ctx)
-		}, "ping_status")
-	} else if nodePing.Int() == 0 {
-
-		taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
-		if err != nil {
-			glog.Error(ctx, err.Error())
-			return err
-		}
-
-		taskName, err := g.Cfg().Get(ctx, "node.taskName")
-		if err != nil {
-			glog.Error(ctx, err.Error())
-			return err
-		}
-
-		s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
-		t, err := task.GetCronNextTime(s, time.Now())
-		if err != nil {
-			glog.Error(ctx, err.Error())
-			return err
-		}
-		glog.Info(ctx, "NextTime:", t, err)
-		logMsg := "NextTime:" + t.String()
-		service.TaskLog().Create(ctx, "gcron", logMsg)
-		_, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
-			taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
-			if err != nil {
-				glog.Error(ctx, err.Error())
-				return
-			}
-
-			s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
-			t, err := task.GetCronNextTime(s, time.Now())
-			if err != nil {
-				glog.Error(ctx, err.Error())
-				return
-			}
-			glog.Info(ctx, "NextTime:", t, err)
-			logMsg := "PingStatus NextTime:" + t.String()
-			service.TaskLog().Create(ctx, "gcron", logMsg)
-			go task.PingStatus(ctx, t)
-		}, taskName.String())
-	}
-
-	return nil
-}
+//func test(ctx context.Context) {
+//	taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
+//	if err != nil {
+//		glog.Debug(ctx, err.Error())
+//		return
+//	}
+//
+//	s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
+//	t, err := task.GetCronNextTime(s, time.Now())
+//	glog.Info(ctx, "NextTime:", t, err)
+//
+//	for i := 0; i < 3; i++ {
+//		glog.Info(ctx, "执行任务:", i)
+//	}
+//}
+//
+//func TestCrom(ctx context.Context) error {
+//	taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
+//	if err != nil {
+//		glog.Debug(ctx, err.Error())
+//		return err
+//	}
+//
+//	taskName, err := g.Cfg().Get(ctx, "node.taskName")
+//	if err != nil {
+//		glog.Debug(ctx, err.Error())
+//		return err
+//	}
+//	s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
+//	t, err := task.GetCronNextTime(s, time.Now())
+//	glog.Info(ctx, "NextTime:", t, err)
+//	_, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
+//		go test(ctx)
+//	}, taskName.String())
+//	return nil
+//}

+ 117 - 0
internal/task/cmd/cmd.go

@@ -0,0 +1,117 @@
+package cmd
+
+import (
+	"fmt"
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/os/gcmd"
+	"github.com/gogf/gf/v2/os/gcron"
+	"github.com/gogf/gf/v2/os/glog"
+	"golang.org/x/net/context"
+	"nodeMonitor/internal/service"
+	"nodeMonitor/internal/task"
+	"time"
+)
+
+var (
+	TaskMain = gcmd.Command{
+		Name:  "main",
+		Usage: "main",
+		Brief: "PingStatus",
+		Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
+
+			err = StartPingStart(ctx)
+			if err != nil {
+				return err
+			}
+
+			return nil
+		},
+	}
+)
+
+func StartPingStart(ctx context.Context) error {
+	//go syslog.NotificationLog(ctx)
+
+	clearLongTime := fmt.Sprintf("0 0 0 * * *")
+	t, err := task.GetCronNextTime(clearLongTime, time.Now())
+	if err != nil {
+		glog.Error(ctx, err.Error())
+		return err
+	}
+	glog.Info(ctx, "ClearLogTime:", t, err)
+	_, err = gcron.AddSingleton(ctx, clearLongTime, func(ctx context.Context) {
+		go task.ClearLog(ctx)
+	}, "ClearLog")
+
+	//_, err = gcron.AddSingleton(ctx, "* * * * * *", func(ctx context.Context) {
+	//	s := fmt.Sprintf("url_log ---- 开始请求\n")
+	//	websocket.SendToAll(&websocket.WResponse{
+	//		Event: "sys_log",
+	//		Data: g.Map{
+	//			"msg": s,
+	//		},
+	//	})
+	//}, "test_weboscket_send")
+
+	nodePing, err := g.Cfg().Get(ctx, "node.nodePing")
+	if err != nil {
+		glog.Debug(ctx, err.Error())
+		return err
+	}
+
+	pingconfig, err := service.PingConfig().Get(ctx)
+	if err != nil {
+		glog.Debug(ctx, err.Error())
+		return err
+	}
+
+	if nodePing.Int() == 1 {
+		s := fmt.Sprintf("0 0 2 * * *", pingconfig.PingTime)
+		_, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
+			go task.Ping(ctx)
+		}, "ping_status")
+	} else if nodePing.Int() == 0 {
+
+		taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
+		if err != nil {
+			glog.Error(ctx, err.Error())
+			return err
+		}
+
+		taskName, err := g.Cfg().Get(ctx, "node.taskName")
+		if err != nil {
+			glog.Error(ctx, err.Error())
+			return err
+		}
+
+		s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
+		t, err := task.GetCronNextTime(s, time.Now())
+		if err != nil {
+			glog.Error(ctx, err.Error())
+			return err
+		}
+		glog.Info(ctx, "NextTime:", t, err)
+		logMsg := "NextTime:" + t.String()
+		service.TaskLog().Create(ctx, "gcron", logMsg)
+		_, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
+			taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
+			if err != nil {
+				glog.Error(ctx, err.Error())
+				return
+			}
+
+			s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
+			t, err := task.GetCronNextTime(s, time.Now())
+			if err != nil {
+				glog.Error(ctx, err.Error())
+				return
+			}
+			glog.Info(ctx, "NextTime:", t, err)
+			logMsg := "PingStatus NextTime:" + t.String()
+			service.TaskLog().Create(ctx, "gcron", logMsg)
+			go task.PingStatus(ctx, t)
+		}, taskName.String())
+	}
+
+	return nil
+}

+ 2 - 9
main.go

@@ -3,20 +3,13 @@ package main
 import (
 	_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
 	"github.com/gogf/gf/v2/os/gctx"
-	"github.com/gogf/gf/v2/os/gtime"
-	"log"
+	"nodeMonitor/internal/cmd"
 	_ "nodeMonitor/internal/logic"
 	_ "nodeMonitor/internal/packed"
-	"time"
-
-	"nodeMonitor/internal/cmd"
 )
 
 func main() {
-	timeStartStr := gtime.Now().Add(-7200 * time.Second).String()
-	log.Println(timeStartStr)
 
-	timeEnd := gtime.Now().String()
-	log.Println(timeEnd)
 	cmd.Main.Run(gctx.New())
+
 }

+ 52 - 0
maintask/main.go

@@ -0,0 +1,52 @@
+package main
+
+import (
+	"fmt"
+	_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
+	"github.com/gogf/gf/v2/os/gctx"
+	_ "nodeMonitor/internal/logic"
+	_ "nodeMonitor/internal/packed"
+	"nodeMonitor/internal/task/cmd"
+	"os"
+	"os/signal"
+	"syscall"
+	"time"
+)
+
+func main() {
+	cmd.TaskMain.Run(gctx.New())
+	Exit()
+}
+
+func Exit() {
+	c := make(chan os.Signal)
+	//监听指定信号 ctrl+c kill
+	signal.Notify(c, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGUSR1, syscall.SIGUSR2)
+	go func() {
+		for s := range c {
+			switch s {
+			case syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT:
+				fmt.Println("退出", s)
+				ExitFunc()
+			case syscall.SIGUSR1:
+				fmt.Println("usr1", s)
+			case syscall.SIGUSR2:
+				fmt.Println("usr2", s)
+			default:
+				fmt.Println("other", s)
+			}
+		}
+	}()
+
+	fmt.Println("进程启动...")
+	for {
+		time.Sleep(time.Second)
+	}
+}
+
+func ExitFunc() {
+	fmt.Println("开始退出...")
+	fmt.Println("执行清理...")
+	fmt.Println("结束退出...")
+	os.Exit(0)
+}