| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package system
- import (
- "encoding/json"
- "log-server/global"
- "log-server/utils"
- "strconv"
- "time"
- )
- type RobotService struct{}
- type SendMsg struct {
- MsgType string `json:"msgtype"`
- Markdown struct {
- Content string `json:"content"`
- } `json:"markdown"`
- }
- func (robotService *RobotService) PostRobotToEnterpriseWeChatByMarkdown(url string, content string) (result []byte, err error) {
- var sendMsg SendMsg
- sendMsg.MsgType = "markdown"
- sendMsg.Markdown.Content = content
- result, err = utils.HttpPost(url, sendMsg)
- return
- }
- // SyncJfDevicesMessage 定时同步机房设备信息
- func (robotService *RobotService) SyncJfDevicesMessage() {
- //机房现在就开了第15架和第16架设备
- //rackArr := []int{15, 16}
- rackArr := map[int]float64{
- //设备架号:该架正常率标准值
- 15: 0.6,
- 16: 0.6,
- }
- content := ">#### **机房设备预警** (" + time.Now().Format("2006-01-02 15:04:05") + "):\n"
- var keyWord string
- for rack, abnormalRate := range rackArr {
- result, err := robotService.RequestJfDevicesState(rack)
- if err != nil {
- global.GVA_LOG.Error("获取机房设备信息失败,设备可能断电,请注意排查!!!")
- keyWord = "获取机房设备信息失败,设备可能断电,请注意排查!!!,错误信息:" + err.Error()
- break
- }
- if string(result) != "null" {
- var data [][]int
- err := json.Unmarshal(result, &data)
- if err != nil {
- return
- }
- NumTotal := len(data)
- NumGood := 0
- for _, v := range data {
- if v[2] == 3 {
- NumGood += 1
- }
- }
- //global.GVA_LOG.Info(strconv.Itoa(NumTotal))
- //global.GVA_LOG.Info(strconv.Itoa(NumGood))numIntoGame * numStartGame / 1e6
- rate := float64(NumGood) / float64(NumTotal)
- if rate < abnormalRate {
- keyWord += "\n 机房第" + strconv.Itoa(rack) + "架设备正常率为:" + strconv.FormatFloat(rate, 'f', 2, 64) + ",设备正常率低,建议维护重启 \n"
- }
- //global.GVA_LOG.Info(keyWord)
- }
- }
- if keyWord != "" {
- content += keyWord
- url := global.GVA_CONFIG.SendUrl.KeyWordSendUrl
- _, _ = robotService.PostRobotToEnterpriseWeChatByMarkdown(url, content)
- }
- return
- }
- // RequestJfDevicesState 获取机房设备信息
- func (robotService *RobotService) RequestJfDevicesState(rack int) (result []byte, err error) {
- jfUrl := "http://182.150.53.148:6007/v1/manage/chart"
- jfParams := map[string]string{
- "Rack": strconv.Itoa(rack),
- }
- result, err = utils.HttpGet(jfUrl, jfParams)
- return
- }
|