年輕人的第一個go程式:監控資料庫欄位 報警

qianby發表於2021-09-09

監控資料庫欄位 釘釘報警

package main

import (

    "bytes"

    "encoding/json"

    "fmt"

    _ "github.com/go-sql-driver/mysql"

    "github.com/go-xorm/xorm"

    "io/ioutil"

    "net/http"

    "time"

)

var engine *xorm.Engine

const webhook_url = ""

func dingtoinfo(s string) bool {

    content, data := make(map[string]string), make(map[string]interface{})

    content["content"] = s

    data["msgtype"] = "text"

    data["text"] = content

    b, _ := json.Marshal(data)

    resp, err := http.Post(webhook_url,

        "application/json",

        bytes.NewBuffer(b))

    if err != nil {

        fmt.Println(err)

    }

    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)

    fmt.Println(string(body))

    return true

}

func recoverName() {

    if r := recover(); r != nil {

        res := fmt.Sprintf("%s %s", "監控程式 報錯:", r)

        dingtoinfo(res)

    }

}

func main() {

    defer recoverName()

    var err error

    engine, err = xorm.NewEngine("mysql", "root:xxxxxxxxxxxxxxx@tcp(127.0.0.1:3306)/new?charset=utf8")

    if err != nil {

        panic(err.Error())

    }

    gsql := " select up_time from token where type = 0 ;"

    gres, gerr := engine.Query(gsql)

    if gerr != nil {

        panic(gerr.Error())

    }

    var data string

    for _, v := range gres {

        data = string(v["up_time"])

    }

    loc, _ := time.LoadLocation("Asia/Shanghai")

    nowTime := time.Now().In(loc)

    tm, _ := time.Parse("2006-01-02 03:04:05", data)

    ntm := tm.In(loc)

    subM := nowTime.Sub(ntm)

    fmt.Println("token更新時間 與 系統時間 相差",subM)

    subtract := int(subM.Minutes())

    if subtract > 20 {

        dingtoinfo("異常, 請及時登入檢視 !!!")

    }

}

©著作權歸作者所有:來自51CTO部落格作者295631788的原創作品,如需轉載,請註明出處,否則將追究法律責任


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3549/viewspace-2819533/,如需轉載,請註明出處,否則將追究法律責任。

相關文章