monitor.go 776 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package main
  2. import (
  3. "strconv"
  4. "time"
  5. "cnphper.com/model"
  6. )
  7. func monitor_loop() {
  8. delay := 30
  9. for {
  10. if str, ok := SysSetting.Get("misc_check_delay"); ok {
  11. if num, err := strconv.Atoi(str); err == nil {
  12. delay = num
  13. }
  14. }
  15. time.Sleep(time.Second * time.Duration(delay))
  16. monitor()
  17. }
  18. }
  19. func monitor() {
  20. mdl := model.NewRedisCfg(Db)
  21. rows, err := mdl.GetAll(0)
  22. if err != nil {
  23. return
  24. }
  25. for _, row := range rows {
  26. info := queryRedisInfo(row)
  27. if info.Error != "" {
  28. continue
  29. }
  30. //检查Redis状态(分配内容空间、使用内存空间、使用内存占比、连接数、淘汰记录数、QPS)
  31. //如果状态异常检查是否连接出错次数达到上限
  32. //判断是否需要自动扩容
  33. //添加任务到邮件发送队列
  34. }
  35. }