python监控服务器资源 python监控windows服务器的进程和服务 p

python监控服务器资源 python监控windows服务器的进程和服务 p

需求:软件公司提供的软件服务在服务器上会莫名其妙的挂掉,他们采用的技巧也只有重启服务器,重启时刻太久了,因此想弄一个监测进程和服务的程序,监测到挂了就重启进程或者服务

import psutil import timeimport subprocessimport loggingimport logging.handlersimport wmiimport ctypesimport os 获取服务情形def get_service_status(service_names): wmiobj = wmi.WMI() for service_name in service_names: services = wmiobj.Win32_Service(Name = service_name) if services: 服务情形是停止就开启服务 if services[0].state == “Stopped”: start_service(service_name) return services[0].state else: logging.error(f”失败:服务service_name}不存在”)判断是否有管理员权限def is_admin(): try: return ctypes.windll.shell32.IsUserAnAdmin() except: return False 启动服务def start_service(service_name): if is_admin(): try: cmd = ‘NET START }’.format(service_name) os.popen(cmd) logging.warning(f”成功:启动了服务service_name}”) except Exception as e: logging.error(f”失败:启动服务service_name}失败, 错误信息: e}”) else: logging.warning(f”不是admin权限”) 日志配置def loggingstars(): logger = logging.getLogger() logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() logger.addHandler(handler) file_handler = logging.handlers.RotatingFileHandler(filename=’process_name.log’, maxBytes=1024*1024*90, backupCount=10) file_handler.setLevel(logging.WARNING) formatter = logging.Formatter(‘%(asctime)s – %(levelname)s – %(message)s’) file_handler.setFormatter(formatter) logger.addHandler(file_handler) 获取掉线的进程完整执行路径def find_process_by_name(process_names): all__process = set() “””获取所有进程的完成路径””” for proc in psutil.process_iter([‘pid’, ‘name’,’exe’]): all__process.add(proc.info[‘exe’]) “”” 找出掉线的监控进程的完整路径 “”” new_list = [item for item in process_names if item not in all__process] return new_listdef start_process(process_names, service_anmes): while True: 检查服务是否启动 get_service_status(service_anmes) time.sleep(60) stop_process = find_process_by_name(process_names) if not stop_process: continue “”” 启动掉线的进程 “”” for app in stop_process: try: subprocess.Popen(f”app}”) logging.warning(f”成功:启动了进程app}”) except Exception as e: logging.error(f”失败:启动进程app}失败, 错误信息: e}”) 如果需要启动进程的话,暂停20分钟 time.sleep(20*60) if __name__ == “__main__”: loggingstars() logging.warning(“============== 进程监控程序启动 ============”) 需要监测的进程,为什么使用可执行文件,是由于发现有进程名会相同 process_names = [ “C:\UserApp\app\baidu-translate-client\百度翻译.exe”, “C:\UserApp\app\dingding\main\current\DingTalk.exe” ] 需要监测的服务名 service_anmes = [“MySQL80”, “JetBrainsEtwHost”] start_process(process_names, service_anmes)

其实服务也是启动执行文件接着有一个进程,如果找到所有服务的进程直接写进程监控就可以了,这里只是展示一下怎么监控服务和进程

有些服务或者进程的启动可能有顺序

  • 打开 运行 输入 “msinfo32”
  • 选择 “软件环境” 再点击 "正在运行任务"就可疑查看启动时刻

打包就用 Pyinstaller -F xx.py,接着放到服务器上

到此这篇关于python监控windows服务器的进程和服务的文章就介绍到这了,更多相关python监控服务器进程和服务内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

无论兄弟们可能感兴趣的文章:

  • 用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
  • Python监控服务器实用工具psutil使用解析
  • 基于python3监控服务器情形进行邮件报警
  • 详解用Python实现自动化监控远程服务器
  • 使用python进行服务器的监控
  • python3实现windows下同名进程监控
  • 代码讲解Python对Windows服务进行监控
版权声明