|
@@ -10,6 +10,7 @@ import (
|
|
|
"net"
|
|
|
"nodeMonitor/internal/model"
|
|
|
"nodeMonitor/internal/service"
|
|
|
+ "nodeMonitor/internal/telegram"
|
|
|
"nodeMonitor/library/nettools"
|
|
|
"sync"
|
|
|
"time"
|
|
@@ -131,7 +132,7 @@ func CheckNodeStatus(ctx context.Context, nextTime time.Time) {
|
|
|
glog.Info(ctx, nextTime)
|
|
|
nodeList, err := service.Node().GetNode(ctx)
|
|
|
if err != nil {
|
|
|
- glog.Debug(ctx, err.Error())
|
|
|
+ glog.Error(ctx, err.Error())
|
|
|
return
|
|
|
}
|
|
|
for _, target := range nodeList {
|
|
@@ -145,34 +146,47 @@ func CheckNodeStatus(ctx context.Context, nextTime time.Time) {
|
|
|
|
|
|
node, err := service.Node().GetNodeUrlCount(ctx, target.Id)
|
|
|
if err != nil {
|
|
|
- glog.Debug(ctx, err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- //var ping_rest nettools.IPingResult
|
|
|
- urlcount := node.UrlCount
|
|
|
- urlret := ""
|
|
|
- ipstatus := 0
|
|
|
- glog.Debug(ctx, "start url req .....")
|
|
|
- client := g.Client()
|
|
|
- client.SetTimeout(30 * time.Second)
|
|
|
- r, err := client.Get(ctx, target.Url)
|
|
|
- if err != nil {
|
|
|
- glog.Debug(ctx, err.Error())
|
|
|
+ glog.Error(ctx, err.Error())
|
|
|
return
|
|
|
}
|
|
|
- defer r.Close()
|
|
|
- glog.Debug(ctx, "req :", target.Url, "status :", r.Status)
|
|
|
- //如果成功是放回IP,如果不成功是返回空
|
|
|
- if r.StatusCode == 200 {
|
|
|
- urlret = r.ReadAllString()
|
|
|
- }
|
|
|
- urlcount++
|
|
|
- err = service.Node().UPdateNodeUrlCount(ctx, target.Id, urlcount, urlret, ipstatus)
|
|
|
- if err != nil {
|
|
|
- glog.Debug(ctx, err.Error())
|
|
|
- return
|
|
|
+
|
|
|
+ if target.Url != "" {
|
|
|
+ urlcount := node.UrlCount
|
|
|
+ urlret := ""
|
|
|
+ ipstatus := 0
|
|
|
+ glog.Error(ctx, "start url req .....")
|
|
|
+ client := g.Client()
|
|
|
+ client.SetTimeout(30 * time.Second)
|
|
|
+ r, err := client.Get(ctx, target.Url)
|
|
|
+ if err != nil {
|
|
|
+ glog.Error(ctx, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer r.Close()
|
|
|
+ glog.Info(ctx, "req :", target.Url, "status :", r.Status)
|
|
|
+ //如果成功是放回IP,如果不成功是返回空
|
|
|
+ if r.StatusCode == 200 {
|
|
|
+ urlret = r.ReadAllString()
|
|
|
+ }
|
|
|
+ urlcount++
|
|
|
+ err = service.Node().UPdateNodeUrlCount(ctx, target.Id, urlcount, urlret, ipstatus)
|
|
|
+ if err != nil {
|
|
|
+ glog.Error(ctx, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if target.IsNotice == 1 {
|
|
|
+ s := fmt.Sprintf("%s 节点需要更新换IP,立即执行\n", target.Host)
|
|
|
+ err := telegram.SetTelegramMess(ctx, s)
|
|
|
+ if err != nil {
|
|
|
+ glog.Error(ctx, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ SSHTaskCommand(ctx, target.Host, target.Port, target.Id)
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -182,7 +196,12 @@ func SSHTaskCommand(ctx context.Context, host string, port int, serverid int) {
|
|
|
|
|
|
nodeconfig, err := service.NodeConfig().Get(ctx, serverid)
|
|
|
if err != nil {
|
|
|
- glog.Debug(ctx, err.Error())
|
|
|
+ glog.Error(ctx, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if nodeconfig.Sshcommand == "" && nodeconfig.Sshpassword == "" && nodeconfig.Sshusername == "" {
|
|
|
+ glog.Info(ctx, "服务器命令账号密码为空")
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -195,27 +214,23 @@ func SSHTaskCommand(ctx context.Context, host string, port int, serverid int) {
|
|
|
})
|
|
|
if err != nil {
|
|
|
//log.Fatalf("SSH dial error: %s", err.Error())
|
|
|
- glog.Debug(ctx, "SSH dial error:", err.Error())
|
|
|
+ glog.Error(ctx, "SSH dial error:", err.Error())
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
// 建立新会话
|
|
|
session, err := client.NewSession()
|
|
|
defer session.Close()
|
|
|
if err != nil {
|
|
|
//log.Fatalf("new session error: %s", err.Error())
|
|
|
- glog.Debug(ctx, "new session error:", err.Error())
|
|
|
+ glog.Error(ctx, "new session error:", err.Error())
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
result, err := session.Output(nodeconfig.Sshcommand)
|
|
|
if err != nil {
|
|
|
- //fmt.Fprintf(os.Stdout, "Failed to run command, Err:%s", err.Error())
|
|
|
- //os.Exit(0)
|
|
|
- glog.Debug(ctx, err.Error())
|
|
|
+ glog.Error(ctx, err.Error())
|
|
|
return
|
|
|
}
|
|
|
- glog.Debug(ctx, result)
|
|
|
+ glog.Info(ctx, result)
|
|
|
}
|
|
|
|
|
|
func GetCronNextTime(cronStr string, t time.Time) (nextTime time.Time, err error) {
|