如何通过CLI列出GCP所有项目中Compute Engine的Ops Agent版本
列出所有GCP项目的Compute Engine实例及Ops Agent版本
方法一:gcloud CLI + 脚本自动化(推荐批量场景)
适合处理大量项目和实例,前提是你已配置好gcloud CLI并具备所有项目的访问权限。
导出所有项目ID
先把所有GCP项目ID导出到文本文件:gcloud projects list --format="value(projectId)" > projects.txt编写批量查询脚本
创建一个bash脚本(比如ops-agent-scan.sh),内容如下:#!/bin/bash while read -r project_id; do echo "=== 项目: $project_id ===" # 遍历当前项目下的所有运行中实例(可修改--filter参数调整实例状态) gcloud compute instances list --project "$project_id" --filter="status=RUNNING" --format="value(name,zone)" | while read -r instance_name zone; do # 从实例的guest attributes中获取Ops Agent版本 agent_version=$(gcloud compute instances describe "$instance_name" --zone "$zone" --project "$project_id" --format='value(guestAttributes.google-ops-agent.version)' 2>/dev/null) # 输出结果,未安装/无法获取的实例标记说明 if [[ -n "$agent_version" ]]; then echo "实例: $instance_name ($zone) | Ops Agent版本: $agent_version" else echo "实例: $instance_name ($zone) | Ops Agent版本: 未安装或实例停止无法获取" fi done done < projects.txt执行脚本并保存结果
给脚本加执行权限后运行,结果会输出到指定文件:chmod +x ops-agent-scan.sh ./ops-agent-scan.sh > ops-agent-inventory.txt之后你可以直接在
ops-agent-inventory.txt里筛选旧版本实例。
方法二:Cloud Monitoring可视化查询
如果不想写脚本,可通过Cloud Monitoring快速查看:
- 打开Cloud Monitoring控制台,创建自定义仪表盘,添加指标
agent.googleapis.com/agent/version - 按「项目」「实例名称」维度分组,就能看到所有实例的Ops Agent版本
- 利用筛选功能,设置版本阈值(比如
<2.20.0),直接导出符合条件的旧版本实例清单
关键注意事项
- 确保账号拥有
roles/compute.instanceAdmin.v1或更高权限,能访问所有目标项目 - 停止状态的实例无法读取guest attributes,建议先过滤运行中实例再查询
- 脚本可根据需求调整,比如添加区域过滤、实例名称过滤等
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

