如何自动处理EC2实例上的SSM Agent故障?
针对RHEL和Windows EC2实例自动监控并重启SSM Agent的方案
RHEL系统实现方式
方法1:修改systemd服务配置**(推荐)**
RHEL 7及以上版本基于systemd管理服务,直接修改SSM Agent的服务配置,即可让systemd自动监控并重启服务:
- 编辑SSM Agent的systemd服务文件:
sudo vi /etc/systemd/system/multi-user.target.wants/amazon-ssm-agent.service - 在
[Service]段添加以下配置:Restart=always RestartSec=5 StartLimitInterval=0Restart=always:无论服务因何原因停止,都会自动重启RestartSec=5:服务停止后等待5秒再重启StartLimitInterval=0:取消重启次数限制
- 重新加载systemd配置并重启服务:
sudo systemctl daemon-reload sudo systemctl restart amazon-ssm-agent - 验证配置生效:
sudo systemctl show amazon-ssm-agent | grep Restart
方法2:使用cron定期检查(备用)
如果不想修改systemd配置,可以设置cron任务定期检查服务状态,停止则重启:
- 创建检查脚本
/usr/local/bin/check_ssm_agent.sh:#!/bin/bash SERVICE_NAME="amazon-ssm-agent" if ! systemctl is-active --quiet $SERVICE_NAME; then systemctl start $SERVICE_NAME logger "SSM Agent was stopped, restarted at $(date)" fi - 赋予脚本执行权限:
sudo chmod +x /usr/local/bin/check_ssm_agent.sh - 添加cron任务,每分钟执行一次:
添加一行:sudo crontab -e* * * * * /usr/local/bin/check_ssm_agent.sh
Windows系统实现方式
方法1:配置服务恢复选项**(推荐)**
利用Windows服务本身的恢复功能,设置服务停止时自动重启:
- 打开服务控制台(运行
services.msc) - 找到
Amazon SSM Agent服务,右键选择属性 - 切换到恢复标签页:
- 第一次失败:选择重启服务,设置重启延迟为
0分钟 - 第二次失败:选择重启服务
- 后续失败:选择重启服务
- 重置失败计数为:
1天
- 第一次失败:选择重启服务,设置重启延迟为
- 点击应用和确定保存配置
方法2:使用任务计划程序监控(备用)
通过任务计划程序创建触发任务,当服务停止时执行重启命令:
- 打开任务计划程序,点击创建任务
- 常规标签:命名任务(如
Restart SSM Agent When Stopped),勾选不管用户是否登录都要运行,选择使用最高权限运行 - 触发器标签:点击新建,选择事件,设置:
- 日志:
System - 来源:
Service Control Manager - 事件ID:
7036(服务停止事件) - 在事件描述中包含:
Amazon SSM Agent
- 日志:
- 操作标签:点击新建,选择启动程序,程序/脚本填写:
添加参数:sc.exestart "Amazon SSM Agent" - 条件和设置标签保持默认,点击确定完成创建
上述方案可确保SSM Agent在故障停止时自动重启,持续保持运行状态。
内容的提问来源于stack exchange,提问作者Diksha Agnihotri
相关产品推荐
相关产品推荐

