运维脚本——10.服务健康检查与自愈
服务健康检查与自愈
场景:监控服务状态,自动重启失败的进程或容器。
示例:使用Shell脚本检查Docker容器状态并重启。
#!/bin/bash SERVICE_NAME="my-web-app" if [ "$(docker inspect -f '{{.State.Status}}' $SERVICE_NAME)" != "running" ]; then echo "服务 $SERVICE_NAME 已停止,尝试重启..." docker restart $SERVICE_NAME echo "服务已重启" | mail -s "服务自愈通知" admin@example.com fi
Kubernetes Pod自愈脚本:
#!/bin/bash NAMESPACE="production" DEPLOYMENT="web-app" # 检查Pod是否处于Running状态 if kubectl -n $NAMESPACE get pods | grep $DEPLOYMENT | grep -qv Running; then kubectl -n $NAMESPACE rollout restart deployment/$DEPLOYMENT echo "已触发 $DEPLOYMENT 重启" | mail -s "K8s Pod自愈操作" ops@example.com fi