check_cpu_usage.go 668 B

123456789101112131415161718192021222324252627282930
  1. package job
  2. import (
  3. "fmt"
  4. "time"
  5. "x-ui/web/service"
  6. "github.com/shirou/gopsutil/v3/cpu"
  7. )
  8. type CheckCpuJob struct {
  9. tgbotService service.Tgbot
  10. settingService service.SettingService
  11. }
  12. func NewCheckCpuJob() *CheckCpuJob {
  13. return new(CheckCpuJob)
  14. }
  15. // Here run is a interface method of Job interface
  16. func (j *CheckCpuJob) Run() {
  17. threshold, _ := j.settingService.GetTgCpu()
  18. // get latest status of server
  19. percent, err := cpu.Percent(1*time.Second, false)
  20. if err == nil && percent[0] > float64(threshold) {
  21. msg := fmt.Sprintf("🔴 CPU usage %.2f%% is more than threshold %d%%", percent[0], threshold)
  22. j.tgbotService.SendMsgToTgbotAdmins(msg)
  23. }
  24. }