wg-easy VPN服务故障排查及Azure自动化账户PowerShell自动重启脚本验证
问题排查与脚本验证
一、wg-easy VPN容器频繁宕机排查步骤
- 查看容器运行日志,定位崩溃原因:
重点关注内存不足(OOM killed)、端口冲突、配置文件错误、权限异常等关键字。docker logs wg-easy # 替换为你的容器名称或ID - 监控容器资源占用:
执行docker stats查看容器运行时的CPU、内存使用率,确认是否因资源耗尽导致终止。如果是内存不足,可在启动容器时增加内存限制:docker run -d --name wg-easy --memory=512m ... # 分配512MB内存 - 检查宿主机状态:
- 查看系统日志:
journalctl -u docker.service或cat /var/log/syslog,排查Docker服务本身的异常。 - 确认磁盘空间:
df -h,避免因磁盘满导致容器崩溃。
- 查看系统日志:
- 验证端口与配置:
- 检查WG_PORT端口是否被其他服务占用:
ss -tulpn | grep <你的WG_PORT> - 确认环境变量配置(如WG_HOST、WG_PASSWORD等)是否正确,避免因配置错误导致服务启动失败。
- 检查WG_PORT端口是否被其他服务占用:
- 优化重启策略:
替换原强制重启的cron任务,改为状态检测后重启,减少不必要的重启:
然后添加cron定时任务(每10分钟执行一次):# 创建脚本文件 /usr/local/bin/check_wg_easy.sh #!/bin/bash CONTAINER_NAME="wg-easy" if ! docker ps --filter "name=$CONTAINER_NAME" --filter "status=running" | grep -q $CONTAINER_NAME; then docker restart $CONTAINER_NAME fi*/10 * * * * root /usr/local/bin/check_wg_easy.sh >> /var/log/wg_easy_restart.log 2>&1
二、Azure自动化PowerShell脚本修正与验证
原脚本存在变量作用域和Azure自动化使用场景的问题,以下是修正后的方案:
修正后的Runbook脚本(适用于Azure自动化账户)
param( [Parameter(Mandatory=$false)] [string]$resourceGroupName = "xxx-resource-group", [Parameter(Mandatory=$false)] [string[]]$vmNames = @( "xxx-virtual-machine", "xxx_virtual_machine", "xxx-virtual-machine" ) ) # 使用托管身份连接Azure(自动化账户需启用系统分配身份) Connect-AzAccount -Identity foreach ($vmName in $vmNames) { try { Write-Output "开始重启虚拟机: $vmName" Restart-AzVM -ResourceGroupName $resourceGroupName -Name $vmName -Force Write-Output "虚拟机 $vmName 重启成功" } catch { Write-Error "虚拟机 $vmName 重启失败: $($_.Exception.Message)" } }
关键修正点说明
- 变量传递:原脚本中
$resourceGroupName和$vmNames无法直接在ScriptBlock内访问,改用参数化定义,确保变量生效。 - 场景适配:
Register-ScheduledJob是本地Windows计划任务命令,Azure自动化账户应使用Runbook而非本地任务,通过自动化账户的托管身份实现认证。 - 权限配置:需给自动化账户的系统分配身份添加Virtual Machine Contributor角色到目标资源组,确保具备重启VM的权限。
- 错误处理:增加try-catch块捕获异常,便于排查重启失败原因。
自动化任务设置步骤
- 在Azure自动化账户中创建PowerShell类型的Runbook,粘贴上述修正后的脚本。
- 进入自动化账户的标识页面,启用系统分配的托管身份。
- 前往目标资源组的访问控制(IAM)页面,添加角色分配,将Virtual Machine Contributor角色分配给自动化账户的身份。
- 回到Runbook页面,配置计划触发器,设置为每2小时执行一次。
内容的提问来源于stack exchange,提问作者organicnz
相关产品推荐
相关产品推荐

