瀏覽代碼

项目预测监控

maxiaoshan 4 年之前
父節點
當前提交
18403440fe
共有 2 個文件被更改,包括 68 次插入0 次删除
  1. 二進制
      projectinfo/src/downcheck/downcheck
  2. 68 0
      projectinfo/src/downcheck/main.go

二進制
projectinfo/src/downcheck/downcheck


+ 68 - 0
projectinfo/src/downcheck/main.go

@@ -0,0 +1,68 @@
+// mian
+package main
+
+import (
+	"bytes"
+	"flag"
+	"fmt"
+	"log"
+	"net/http"
+	"os/exec"
+	"strings"
+
+	//"syscall"
+	"time"
+)
+
+var (
+	api  = "http://172.17.145.179:19281/_send/_mail"
+	to   = "zhangjinkun@topnet.net.cn,maxiaoshan@topnet.net.cn"
+	lock = make(chan bool, 1)
+)
+
+func main() {
+	pidname := flag.String("pidname", "", "")
+	path := flag.String("path", "", "")
+	flag.Parse()
+	log.Println("path:", *path, "pidname:", *pidname)
+	go KeepStart(*pidname, *path)
+	<-lock
+}
+
+func KeepStart(pidname, path string) {
+	for {
+		cmd := exec.Command("/bin/sh", "-c", `cd `+path)
+		if err := cmd.Run(); err != nil {
+			log.Println("err: ", err.Error())
+		}
+		cmd = exec.Command("/bin/sh", "-c", `ps -ef | grep `+pidname)
+		var out bytes.Buffer
+		cmd.Stdout = &out
+		if err := cmd.Run(); err != nil {
+			log.Println("err: ", err.Error())
+		}
+		if !IsRunning(out.String(), pidname) {
+			log.Println("Is'n Running...")
+			SendMail()
+			lock <- true
+			break
+		} else {
+			log.Println("Is Running...")
+		}
+		time.Sleep(1 * time.Minute)
+	}
+}
+
+func IsRunning(out, pidname string) bool {
+	return strings.Contains(out, "./"+pidname)
+}
+
+func SendMail() {
+	for {
+		res, err := http.Get(fmt.Sprintf("%s?to=%s&title=%s&body=%s", api, to, "projectinfo-down-check", "项目预测挂了"))
+		if err == nil {
+			defer res.Body.Close()
+			break
+		}
+	}
+}