cmd.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package cmd
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/v2/frame/g"
  5. "github.com/gogf/gf/v2/os/gcmd"
  6. "github.com/gogf/gf/v2/os/gcron"
  7. "github.com/gogf/gf/v2/os/glog"
  8. "golang.org/x/net/context"
  9. "nodeMonitor/internal/service"
  10. "nodeMonitor/internal/task"
  11. "time"
  12. )
  13. var (
  14. TaskMain = gcmd.Command{
  15. Name: "main",
  16. Usage: "main",
  17. Brief: "PingStatus",
  18. Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
  19. err = StartPingStart(ctx)
  20. if err != nil {
  21. return err
  22. }
  23. return nil
  24. },
  25. }
  26. )
  27. func StartPingStart(ctx context.Context) error {
  28. //go syslog.NotificationLog(ctx)
  29. clearLongTime := fmt.Sprintf("0 0 0 * * *")
  30. t, err := task.GetCronNextTime(clearLongTime, time.Now())
  31. if err != nil {
  32. glog.Error(ctx, err.Error())
  33. return err
  34. }
  35. glog.Info(ctx, "ClearLogTime:", t, err)
  36. _, err = gcron.AddSingleton(ctx, clearLongTime, func(ctx context.Context) {
  37. go task.ClearLog(ctx)
  38. }, "ClearLog")
  39. //_, err = gcron.AddSingleton(ctx, "* * * * * *", func(ctx context.Context) {
  40. // s := fmt.Sprintf("url_log ---- 开始请求\n")
  41. // websocket.SendToAll(&websocket.WResponse{
  42. // Event: "sys_log",
  43. // Data: g.Map{
  44. // "msg": s,
  45. // },
  46. // })
  47. //}, "test_weboscket_send")
  48. nodePing, err := g.Cfg().Get(ctx, "node.nodePing")
  49. if err != nil {
  50. glog.Debug(ctx, err.Error())
  51. return err
  52. }
  53. pingconfig, err := service.PingConfig().Get(ctx)
  54. if err != nil {
  55. glog.Debug(ctx, err.Error())
  56. return err
  57. }
  58. if nodePing.Int() == 1 {
  59. s := fmt.Sprintf("0 0 2 * * *", pingconfig.PingTime)
  60. _, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
  61. go task.Ping(ctx)
  62. }, "ping_status")
  63. } else if nodePing.Int() == 0 {
  64. taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
  65. if err != nil {
  66. glog.Error(ctx, err.Error())
  67. return err
  68. }
  69. taskName, err := g.Cfg().Get(ctx, "node.taskName")
  70. if err != nil {
  71. glog.Error(ctx, err.Error())
  72. return err
  73. }
  74. s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
  75. t, err := task.GetCronNextTime(s, time.Now())
  76. if err != nil {
  77. glog.Error(ctx, err.Error())
  78. return err
  79. }
  80. glog.Info(ctx, "NextTime:", t, err)
  81. logMsg := "NextTime:" + t.String()
  82. service.TaskLog().Create(ctx, "gcron", logMsg)
  83. _, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
  84. taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
  85. if err != nil {
  86. glog.Error(ctx, err.Error())
  87. return
  88. }
  89. s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
  90. t, err := task.GetCronNextTime(s, time.Now())
  91. if err != nil {
  92. glog.Error(ctx, err.Error())
  93. return
  94. }
  95. glog.Info(ctx, "NextTime:", t, err)
  96. logMsg := "PingStatus NextTime:" + t.String()
  97. service.TaskLog().Create(ctx, "gcron", logMsg)
  98. go task.PingStatus(ctx, t)
  99. }, taskName.String())
  100. }
  101. return nil
  102. }