如何排查Azure DevOps代理池离线原因并使其恢复在线
我来帮你一步步排查这个Azure DevOps代理离线的问题——遇到All eligible agents are disabled or offline这种报错确实挺影响效率的,咱们从最基础的检查开始,逐步定位原因:
第一步:先确认代理机器的基础状态
- 首先远程登录到代理所在的物理机/虚拟机(如果是自托管代理的话),先确保机器是正常开机运行的,没有被意外关机、休眠,也没有因为CPU/内存耗尽导致系统无响应。
- 检查机器的网络连通性:试试直接在浏览器打开你的Azure DevOps组织页面,或者ping一下DevOps的域名,确认网络没有被防火墙、企业代理或者路由规则拦截。
第二步:检查代理服务的运行状态
- Windows系统:按Win+R输入
services.msc打开服务管理器,找到名称类似Azure Pipelines Agent的服务,查看它是否处于「正在运行」状态。如果没启动,手动点击启动;如果启动后立刻停止,说明有启动失败的问题,得去看日志。 - Linux/macOS系统:用命令
systemctl status azuredevopsagent.service查看服务状态,要是没运行,用systemctl start azuredevopsagent.service尝试启动。 - 也可以直接到代理安装目录下,运行
run.cmd(Windows)或者run.sh(Linux)手动启动代理,这时候控制台会输出实时日志,能快速看到启动失败的具体原因。
第三步:查看代理的详细日志
代理的日志文件默认存放在安装目录下的_diag文件夹里,找最新的日志文件打开:
- 重点搜索这些关键词:
connection failed、PAT expired、certificate error- 如果看到PAT相关的错误,说明代理用的个人访问令牌过期了。这时候需要在Azure DevOps里重新生成一个有「代理池管理」权限的PAT,然后在代理机器上运行
config.cmd remove(Windows)或config.sh remove(Linux)移除旧配置,再重新运行config.cmd/config.sh完成新代理的配置。 - 如果是证书错误(比如你的DevOps用了自签名证书),需要把证书导入到机器的信任存储中;临时方案可以在配置代理时加上
--sslskipcertvalidation参数,但不建议长期使用,最好还是配置信任证书。
- 如果看到PAT相关的错误,说明代理用的个人访问令牌过期了。这时候需要在Azure DevOps里重新生成一个有「代理池管理」权限的PAT,然后在代理机器上运行
第四步:检查Azure DevOps代理池的配置
回到Azure DevOps的「代理池」页面:
- 确认代理是不是被手动禁用了——有时候可能误操作点了禁用,只要点击「启用」就能恢复。
- 顺便检查下代理的需求匹配:虽然你的报错是离线,但如果代理在线但不符合构建的需求(比如特定OS版本、工具依赖),也会被标记为不可用,但优先还是先解决离线的问题。
第五步:极端情况的兜底方案
如果上面的步骤都试过还是不行:
- 重启代理机器:有时候系统的临时bug、网络缓存问题,重启就能解决。
- 卸载重装代理:先通过
config remove命令移除现有代理,然后从Azure DevOps代理池页面重新下载最新的代理安装包,按照引导重新配置——这种方法能解决大部分配置错乱、文件损坏的问题。
内容的提问来源于stack exchange,提问作者user1038502




