如何使用 python 获取 GCP vm 实例总内存大小?
How to get GCP vm instance total memory size using python?
我想 运行 python gcp 实例中的启动脚本,我想在其中获取 gcp 实例的总内存大小。
我试过 free -h
, grep MemTotal /proc/meminfo
命令。但是,此命令的问题是,我获得的 RAM 数量少于我在创建实例时选择的实际内存大小(可能是由于系统使用)。我想获得创建实例时选择的确切内存大小。
例如,“e2-standard-8”为“32 GB”,“n2-standard-4”为“16 GB”
也没有元数据 url 可用于获取 gcp 实例内存大小。
有什么办法吗?
如果您想获得在 GCP 中创建 VM 时配置的 RAM,我认为使用 Compute Engine Libs 会很有用。
首先安装需要的库:
pip install google-api-python-client
如果您只需要一个实例,这可能会有所帮助:
import googleapiclient.discovery
PROJECT_ID="project_id"
ZONE="zone_where_the_instance_is"
compute = googleapiclient.discovery.build('compute', 'v1')
instances = compute.instances().list(project=PROJECT_ID, zone=ZONE).execute()
for instance in instances['items']:
ram = compute.machineTypes().get(project=PROJECT_ID, zone=ZONE, machineType=instance['machineType'].rsplit('/', 1)[-1]).execute()['memoryMb']
print ("RAM -> {:.1f} GB".format(round(ram/1024,1)))
你会得到:
RAM -> 1.8 GB
从项目中的所有实例获取此信息的更通用方法如下:
首先添加这个额外的库:
pip install tabulate
然后:
import googleapiclient.discovery
from tabulate import tabulate
PROJECT_ID="project_id"
compute = googleapiclient.discovery.build('compute', 'v1')
zones = compute.zones().list(project=PROJECT_ID).execute()
configs=[]
for zone in zones['items']:
instances = compute.instances().list(project=PROJECT_ID, zone=zone['name']).execute()
if 'items' in instances:
for instance in instances['items']:
ram = compute.machineTypes().get(project=PROJECT_ID, zone=zone['name'], machineType=instance['machineType'].rsplit('/', 1)[-1]).execute()['memoryMb']
configs.append([instance['name'],str(round(ram/1024,1))+" GB"])
print(tabulate(configs, headers=["Instance name", "RAM"]))
这将打印如下内容:
Instance name RAM
--------------- ------
satellite 1.8 GB
这些脚本假定您之前已经配置了 Cloud SDK 的凭据。
我想 运行 python gcp 实例中的启动脚本,我想在其中获取 gcp 实例的总内存大小。
我试过 free -h
, grep MemTotal /proc/meminfo
命令。但是,此命令的问题是,我获得的 RAM 数量少于我在创建实例时选择的实际内存大小(可能是由于系统使用)。我想获得创建实例时选择的确切内存大小。
例如,“e2-standard-8”为“32 GB”,“n2-standard-4”为“16 GB”
也没有元数据 url 可用于获取 gcp 实例内存大小。
有什么办法吗?
如果您想获得在 GCP 中创建 VM 时配置的 RAM,我认为使用 Compute Engine Libs 会很有用。
首先安装需要的库:
pip install google-api-python-client
如果您只需要一个实例,这可能会有所帮助:
import googleapiclient.discovery
PROJECT_ID="project_id"
ZONE="zone_where_the_instance_is"
compute = googleapiclient.discovery.build('compute', 'v1')
instances = compute.instances().list(project=PROJECT_ID, zone=ZONE).execute()
for instance in instances['items']:
ram = compute.machineTypes().get(project=PROJECT_ID, zone=ZONE, machineType=instance['machineType'].rsplit('/', 1)[-1]).execute()['memoryMb']
print ("RAM -> {:.1f} GB".format(round(ram/1024,1)))
你会得到:
RAM -> 1.8 GB
从项目中的所有实例获取此信息的更通用方法如下:
首先添加这个额外的库:
pip install tabulate
然后:
import googleapiclient.discovery
from tabulate import tabulate
PROJECT_ID="project_id"
compute = googleapiclient.discovery.build('compute', 'v1')
zones = compute.zones().list(project=PROJECT_ID).execute()
configs=[]
for zone in zones['items']:
instances = compute.instances().list(project=PROJECT_ID, zone=zone['name']).execute()
if 'items' in instances:
for instance in instances['items']:
ram = compute.machineTypes().get(project=PROJECT_ID, zone=zone['name'], machineType=instance['machineType'].rsplit('/', 1)[-1]).execute()['memoryMb']
configs.append([instance['name'],str(round(ram/1024,1))+" GB"])
print(tabulate(configs, headers=["Instance name", "RAM"]))
这将打印如下内容:
Instance name RAM
--------------- ------
satellite 1.8 GB
这些脚本假定您之前已经配置了 Cloud SDK 的凭据。