You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

wg-easy VPN服务故障排查及Azure自动化账户PowerShell自动重启脚本验证

问题排查与脚本验证

一、wg-easy VPN容器频繁宕机排查步骤

  • 查看容器运行日志,定位崩溃原因:
    docker logs wg-easy  # 替换为你的容器名称或ID
    
    重点关注内存不足(OOM killed)、端口冲突、配置文件错误、权限异常等关键字。
  • 监控容器资源占用:
    执行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等)是否正确,避免因配置错误导致服务启动失败。
  • 优化重启策略:
    替换原强制重启的cron任务,改为状态检测后重启,减少不必要的重启:
    # 创建脚本文件 /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
    
    然后添加cron定时任务(每10分钟执行一次):
    */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)"
    }
}

关键修正点说明

  1. 变量传递:原脚本中$resourceGroupName和$vmNames无法直接在ScriptBlock内访问,改用参数化定义,确保变量生效。
  2. 场景适配:Register-ScheduledJob是本地Windows计划任务命令,Azure自动化账户应使用Runbook而非本地任务,通过自动化账户的托管身份实现认证。
  3. 权限配置:需给自动化账户的系统分配身份添加Virtual Machine Contributor角色到目标资源组,确保具备重启VM的权限。
  4. 错误处理:增加try-catch块捕获异常,便于排查重启失败原因。

自动化任务设置步骤

  1. 在Azure自动化账户中创建PowerShell类型的Runbook,粘贴上述修正后的脚本。
  2. 进入自动化账户的标识页面,启用系统分配的托管身份。
  3. 前往目标资源组的访问控制(IAM)页面,添加角色分配,将Virtual Machine Contributor角色分配给自动化账户的身份。
  4. 回到Runbook页面,配置计划触发器,设置为每2小时执行一次。

内容的提问来源于stack exchange,提问作者organicnz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 13:10:17