選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

70 行
3.9KB

  1. from os.path import dirname
  2. import psutil
  3. from loguru import logger
  4. from enums.ExceptionEnum import ExceptionType
  5. from exception.CustomerException import ServiceException
  6. def check_cpu(base_dir, requestId=None):
  7. path = dirname(base_dir)
  8. cpu_use = psutil.cpu_percent()
  9. cpu_mem = psutil.virtual_memory().percent
  10. cpu_swap = psutil.swap_memory().percent
  11. cpu_disk = psutil.disk_usage(path).percent
  12. if float(cpu_use) > 60 or float(cpu_mem) > 80 or cpu_swap > 85 or cpu_disk > 90:
  13. if requestId:
  14. logger.info("""###############################################################################################
  15. CPU 使用率:{}, 内存使用:{}, SWAP内存使用率:{}, 服务磁盘使用率:{}, requestId:{}
  16. ###############################################################################################""",
  17. cpu_use, cpu_mem, cpu_swap, cpu_disk, requestId)
  18. else:
  19. logger.info("""###############################################################################################
  20. CPU 使用率:{}, 内存使用:{}, SWAP内存使用率:{}, 服务磁盘使用率:{}
  21. ###############################################################################################""",
  22. cpu_use, cpu_mem, cpu_swap, cpu_disk)
  23. raise ServiceException(ExceptionType.NO_CPU_RESOURCES.value[0],
  24. ExceptionType.NO_CPU_RESOURCES.value[1])
  25. def print_cpu_ex_status(base_dir, requestId=None):
  26. path = dirname(base_dir)
  27. cpu_use = psutil.cpu_percent()
  28. cpu_mem = psutil.virtual_memory().percent
  29. cpu_swap = psutil.swap_memory().percent
  30. cpu_disk = psutil.disk_usage(path).percent
  31. result = False
  32. if float(cpu_use) > 60 or float(cpu_mem) > 70 or cpu_swap > 85 or cpu_disk > 90:
  33. result = True
  34. if requestId:
  35. logger.info("""###############################################################################################
  36. CPU 使用率:{}, 内存使用:{}, SWAP内存使用率:{}, 服务磁盘使用率:{}, requestId:{}
  37. ###############################################################################################""",
  38. cpu_use, cpu_mem, cpu_swap, cpu_disk, requestId)
  39. else:
  40. logger.info("""###############################################################################################
  41. CPU 使用率:{}, 内存使用:{}, SWAP内存使用率:{}, 服务磁盘使用率:{}
  42. ###############################################################################################""",
  43. cpu_use, cpu_mem, cpu_swap, cpu_disk)
  44. return result
  45. def print_cpu_status(base_dir, requestId=None):
  46. path = dirname(base_dir)
  47. cpu_use = psutil.cpu_percent()
  48. cpu_mem = psutil.virtual_memory().percent
  49. cpu_swap = psutil.swap_memory().percent
  50. cpu_lj = psutil.cpu_count() # 逻辑cpu个数
  51. cpu_wl = psutil.cpu_count(logical=False) # 物理cpu个数
  52. cpu_disk = psutil.disk_usage(path).percent
  53. if requestId:
  54. logger.info("""###############################################################################################
  55. CPU 使用率:{}, 内存使用:{}, SWAP内存使用率:{}, 逻辑个数:{}, 物理个数:{}, 服务磁盘使用率:{}, requestId:{}
  56. ###############################################################################################""", cpu_use,
  57. cpu_mem, cpu_swap, cpu_lj, cpu_wl, cpu_disk, requestId)
  58. else:
  59. logger.info("""###############################################################################################
  60. CPU 使用率:{}, 内存使用:{}, SWAP内存使用率:{}, 逻辑个数:{}, 物理个数:{}, 服务磁盘使用率:{}
  61. ###############################################################################################""", cpu_use,
  62. cpu_mem, cpu_swap, cpu_lj, cpu_wl, cpu_disk)