sys_robot.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package system
  2. import (
  3. "encoding/json"
  4. "log-server/global"
  5. "log-server/utils"
  6. "strconv"
  7. "time"
  8. )
  9. type RobotService struct{}
  10. type SendMsg struct {
  11. MsgType string `json:"msgtype"`
  12. Markdown struct {
  13. Content string `json:"content"`
  14. } `json:"markdown"`
  15. }
  16. func (robotService *RobotService) PostRobotToEnterpriseWeChatByMarkdown(url string, content string) (result []byte, err error) {
  17. var sendMsg SendMsg
  18. sendMsg.MsgType = "markdown"
  19. sendMsg.Markdown.Content = content
  20. result, err = utils.HttpPost(url, sendMsg)
  21. return
  22. }
  23. // SyncJfDevicesMessage 定时同步机房设备信息
  24. func (robotService *RobotService) SyncJfDevicesMessage() {
  25. //机房现在就开了第15架和第16架设备
  26. //rackArr := []int{15, 16}
  27. rackArr := map[int]float64{
  28. //设备架号:该架正常率标准值
  29. 15: 0.6,
  30. 16: 0.6,
  31. }
  32. content := ">#### **机房设备预警** (" + time.Now().Format("2006-01-02 15:04:05") + "):\n"
  33. var keyWord string
  34. for rack, abnormalRate := range rackArr {
  35. result, err := robotService.RequestJfDevicesState(rack)
  36. if err != nil {
  37. global.GVA_LOG.Error("获取机房设备信息失败,设备可能断电,请注意排查!!!")
  38. keyWord = "获取机房设备信息失败,设备可能断电,请注意排查!!!,错误信息:" + err.Error()
  39. break
  40. }
  41. if string(result) != "null" {
  42. var data [][]int
  43. err := json.Unmarshal(result, &data)
  44. if err != nil {
  45. return
  46. }
  47. NumTotal := len(data)
  48. NumGood := 0
  49. for _, v := range data {
  50. if v[2] == 3 {
  51. NumGood += 1
  52. }
  53. }
  54. //global.GVA_LOG.Info(strconv.Itoa(NumTotal))
  55. //global.GVA_LOG.Info(strconv.Itoa(NumGood))numIntoGame * numStartGame / 1e6
  56. rate := float64(NumGood) / float64(NumTotal)
  57. if rate < abnormalRate {
  58. keyWord += "\n 机房第" + strconv.Itoa(rack) + "架设备正常率为:" + strconv.FormatFloat(rate, 'f', 2, 64) + ",设备正常率低,建议维护重启 \n"
  59. }
  60. //global.GVA_LOG.Info(keyWord)
  61. }
  62. }
  63. if keyWord != "" {
  64. content += keyWord
  65. url := global.GVA_CONFIG.SendUrl.KeyWordSendUrl
  66. _, _ = robotService.PostRobotToEnterpriseWeChatByMarkdown(url, content)
  67. }
  68. return
  69. }
  70. // SyncJfXmyNewAccount 定时获取机房小绵羊新号剩余
  71. func (robotService *RobotService) SyncJfXmyNewAccount() {
  72. content := ">#### **【账号提醒】预警** (" + time.Now().Format("2006-01-02 15:04:05") + "):\n"
  73. var keyWord string
  74. result, err := robotService.RequestJfXmyNewAccount()
  75. if err != nil {
  76. global.GVA_LOG.Error("定时获取机房小绵羊新号剩余失败!!!")
  77. keyWord = "定时获取机房小绵羊新号剩余失败!!!,错误信息:" + err.Error()
  78. return
  79. }
  80. //global.GVA_LOG.Info(string(result))
  81. accountNum, err := strconv.ParseInt(string(result), 10, 64)
  82. if err != nil {
  83. global.GVA_LOG.Error("定时获取机房小绵羊新号剩余失败2!!!")
  84. keyWord = "定时获取机房小绵羊新号剩余失败2!!!,错误信息:" + err.Error()
  85. return
  86. }
  87. if string(result) != "null" && string(result) != "" {
  88. if accountNum <= 1000 {
  89. keyWord += "机房小绵羊新号不足,请及时添加,当前剩余:" + string(result) + " \n"
  90. //keyWord += "机房小绵羊新号当前剩余:" + string(result) + " \n"
  91. }
  92. }
  93. if keyWord != "" {
  94. content += keyWord
  95. url := global.GVA_CONFIG.SendUrl.KeyWordSendUrl
  96. _, _ = robotService.PostRobotToEnterpriseWeChatByMarkdown(url, content)
  97. }
  98. return
  99. }
  100. // RequestJfDevicesState 获取机房设备信息
  101. func (robotService *RobotService) RequestJfDevicesState(rack int) (result []byte, err error) {
  102. jfUrl := "http://182.150.53.148:6007/v1/manage/chart"
  103. jfParams := map[string]string{
  104. "Rack": strconv.Itoa(rack),
  105. }
  106. result, err = utils.HttpGet(jfUrl, jfParams)
  107. return
  108. }
  109. // RequestJfXmyNewAccount 获取机房小绵羊新号剩余
  110. func (robotService *RobotService) RequestJfXmyNewAccount() (result []byte, err error) {
  111. jfUrl := "http://xjf.lianyou.fun:8099/v1/account/get_left_smallsheep_account"
  112. jfParams := map[string]string{}
  113. result, err = utils.HttpGet(jfUrl, jfParams)
  114. return
  115. }