我需要根据App Engine Flexible服务的当前CPU利用率在外部系统中做出决策。我可以在Google云端控制台中看到我需要在仪表板图表中使用的确切值/指标,但我没有看到直接,简单的方法从gcloud
命令获取此信息。
我还需要知道运行实例的数量,但我想我可以使用gcloud app instances list -s default
来获取默认服务中运行实例的列表,然后我可以使用行数方法来获取这个信息很容易。我打算创建一个python函数,它返回一个像(instance_count, cpu_utilization)
。
如果有人能指导我以 easy 方式获取此功能,我将不胜感激。我目前正在探索StackDriver Monitoring服务以获取相同的信息,但截至目前,它对我来说看起来非常复杂。
答案 0 :(得分:1)
正如您所说,您可以使用gcloud app instances list -s default
命令获取正在运行的实例列表。要检索CPU利用率,请查看此Python Client for Stackdriver Monitoring。列出可用的度量标准类型:
from google.cloud import monitoring
client = monitoring.Client()
for descriptor in client.list_metric_descriptors():
print(descriptor.type)
度量标准描述符的描述为here。要在过去五分钟内显示GCE实例的利用率:
metric = 'compute.googleapis.com/instance/cpu/utilization'
query = client.query(metric, minutes=5)
print(query.as_dataframe())
在安装之前,不要忘记将google-cloud-monitoring==0.28.1
添加到“requirements.txt”。
检查本地运行的代码:
import logging
from flask import Flask
from google.cloud import monitoring as mon
app = Flask(__name__)
@app.route('/')
def list_metric_descriptors():
"""Return all metric descriptors"""
# Instantiate client
client = mon.Client()
for descriptor in client.list_metric_descriptors():
print(descriptor.type)
return descriptor.type
@app.route('/CPU')
def cpuUtilization():
"""Return CPU utilization"""
client = mon.Client()
metric = 'compute.googleapis.com/instance/cpu/utilization'
query = client.query(metric, minutes=5)
print(type(query.as_dataframe()))
print(query.as_dataframe())
data=str(query.as_dataframe())
return data
@app.errorhandler(500)
def server_error(e):
logging.exception('An error occurred during a request.')
return """
An internal error occurred: <pre>{}</pre>
See logs for full stacktrace.
""".format(e), 500
if __name__ == '__main__':
# This is used when running locally. Gunicorn is used to run the
# application on Google App Engine. See entrypoint in app.yaml.
app.run(host='127.0.0.1', port=8080, debug=True)