# WinSupervisor **Repository Path**: 51diysoft/WinSupervisor ## Basic Information - **Project Name**: WinSupervisor - **Description**: WinSupervisor是一款针对windows的守护进程监测程,防止进程掉线、中断等,并通过邮件、短信、钉钉等实现告警信息发送通知,提升平台运行稳定性; 主要功能: 1、进程异常后主动尝试重启进程 ; 2、进程异常后写入到指定的日志 /数据库等,支持mysql和sqlserver ; 3、邮件、短信、钉钉等实现告警信息发送通知;4、进程异常后打开新的程序等 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-10-30 - **Last Updated**: 2026-02-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WinSupervisor 进程守护程序 ## 项目介绍 WinSupervisor是一款专业的Windows进程守护程序,用于监控关键进程的运行状态,确保它们持续稳定运行。当监控的进程异常退出时,系统会自动尝试重启进程,并通过多种渠道发送告警通知,大大提高系统的稳定性和可靠性。 ## 核心功能 ### 1. 进程监控与自动恢复 - 实时监控指定Windows进程的运行状态 - 当进程异常终止时,自动尝试重启 - 支持配置最大重启次数限制,避免无限循环重启 - 支持设置重启间隔时间,优化进程启动策略 ### 2. 多渠道告警通知 - **邮件告警**:通过SMTP服务器发送邮件通知 - **短信告警**:支持配置短信API发送告警信息(开发中,需要开发者根据阿里云等短信,按需付费,同时申请短信签名) - **钉钉告警**:通过钉钉机器人发送消息,支持@指定人员或全体成员 ### 3. 完善的日志记录 - 使用NLog进行详细的日志记录 - 记录进程状态变更、重启尝试和告警发送情况 - 支持将进程状态信息记录到数据库(MySQL/SQL Server) ### 4. 灵活的配置管理 - 通过独立的JSON配置文件管理监控的进程列表 - 支持在配置中设置进程路径、启动参数、自动重启策略等 - 监控间隔时间可自定义设置 ## 技术架构 ### 技术栈 - **开发语言**:C# - **运行环境**:.NET Framework 4.8 - **日志框架**:NLog - **JSON处理**:Newtonsoft.Json - **数据访问**:SqlSugar(支持MySQL和SQL Server) - **部署形式**:Windows服务 ### 核心类与功能模块 1. **Service1**:Windows服务主类,负责服务生命周期管理和定时任务调度 2. **ProcessInfoDto**:进程信息数据传输对象,定义了进程监控所需的各项配置 3. **ConfigHelper**:配置管理辅助类,用于读取应用程序配置 4. **DingTalkRobot**:钉钉机器人通信类,实现钉钉消息发送功能 ## 安装部署 ### 环境要求 - Windows操作系统 - .NET Framework 4.8(根据项目编译版本要求) ### 安装步骤 1. **编译项目** - 使用Visual Studio打开`WinSupervisor守护进程服务.sln`解决方案 - 编译生成Release版本的可执行文件 2. **安装Windows服务** - 以管理员身份运行命令提示符 - 执行安装命令: ``` C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe [生成目录]\Yywl.CqytSvc.exe ``` - 或直接运行项目中的`install安装服务命令.bat`(需要先修改脚本中的路径) 3. **启动服务** - 在Windows服务管理器中找到"WinSupervisor守护进程服务" - 右键点击并选择"启动" 4. **验证服务运行状态** - 检查服务是否正常运行 - 查看日志文件确认监控任务已开始执行 ### 卸载服务 - 以管理员身份运行命令提示符 - 执行卸载命令: ``` C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe /u [生成目录]\Yywl.CqytSvc.exe ``` ## 配置说明 ### 1. 进程配置(ProcessConfig.json) 服务启动时会从应用程序目录下的`ProcessConfig.json`文件读取监控进程配置。配置格式如下: ```json [ { "ProcessName": "nginx.exe", "ProcessPath": "C:\\iis_web\\nginx-1.22.1\\runNginx.bat", "AutoRestart": true, "StartArguments": "", "MaxRestartCount": 0, "RestartIntervalMs": 0 }, { "ProcessName": "QQ.exe", "ProcessPath": "C:\\Program Files\\Tencent\\QQ\\Bin\\QQ.exe", "AutoRestart": true, "StartArguments": "", "MaxRestartCount": 5, "RestartIntervalMs": 10000 } ] ``` 配置项说明: - `ProcessName`:进程名称(不含.exe后缀) - `ProcessPath`:进程可执行文件的完整路径 - `AutoRestart`:是否自动重启(true/false) - `StartArguments`:启动参数 - `MaxRestartCount`:最大重启次数限制(0表示无限制) - `RestartIntervalMs`:重启间隔时间(毫秒) ### 2. 应用程序配置(App.config) 其他系统配置通过应用程序配置文件管理,主要包括: #### 监控设置 ```xml ``` #### 邮件告警配置 ```xml ``` #### 短信告警配置 ```xml ``` #### 钉钉告警配置 ```xml ``` ## 使用示例 ### 监控Web服务器进程 例如,监控Nginx服务器进程: 1. 在`ProcessConfig.json`中添加配置: ```json { "ProcessName": "nginx", "ProcessPath": "C:\\nginx\\nginx.exe", "AutoRestart": true, "StartArguments": "", "MaxRestartCount": 3, "RestartIntervalMs": 5000 } ``` 2. 配置邮件告警: 设置`EnableEmailAlert`为`true`,并配置SMTP服务器信息。 3. 重启服务使配置生效 ### 高级配置示例 对于需要特殊启动参数的应用程序: ```json { "ProcessName": "myapp", "ProcessPath": "C:\\Apps\\MyApp\\MyApp.exe", "AutoRestart": true, "StartArguments": "--config=app.config --port=8080", "MaxRestartCount": 0, "RestartIntervalMs": 0 } ``` ## 日志查看 服务会在应用程序目录下的`logs`文件夹中生成日志文件,可以通过日志文件查看: - 服务运行状态 - 进程监控记录 - 告警发送情况 - 错误信息 ## 常见问题 ### 1. 服务无法启动 - 检查是否以管理员身份运行安装命令 - 确认.NET Framework版本兼容性 - 查看Windows事件日志获取详细错误信息 ### 2. 进程无法自动重启 - 检查`ProcessPath`是否正确 - 确认服务账户是否有足够权限启动进程 - 检查`AutoRestart`配置是否设为`true` ### 3. 告警通知未收到 - 验证告警功能是否启用(`EnableEmailAlert`等设置) - 检查告警服务器配置是否正确 - 查看日志文件中的告警发送记录和错误信息 ## 注意事项 1. 首次安装后,请确保`ProcessConfig.json`文件存在且格式正确 2. 敏感信息(如SMTP密码、钉钉Webhook地址)应妥善保管 3. 建议定期检查日志文件,确保服务正常运行 4. 对于关键系统,建议配置多种告警方式以提高可靠性 ## 许可证 [免费使用,如需二次开发可以直接fork项目,并在项目中添加说明] ## 联系信息 如有问题或建议,请联系:[作者/团队联系方式:867928135@qq.com]