這真的是一個非常簡單的問題。我想將運行實例的數量報告給datadog,以及其他一些統計數據。我可以通過API調用來獲取正在運行的App Engine實例的數量嗎?
這裏有一個諷刺,我谷歌搜索,每一次怎麼辦在谷歌App Engine的東西,並獲得crappiest可能的結果網頁搜索這樣的事實:在谷歌App Engine文檔的頁面。
這真的是一個非常簡單的問題。我想將運行實例的數量報告給datadog,以及其他一些統計數據。我可以通過API調用來獲取正在運行的App Engine實例的數量嗎?
這裏有一個諷刺,我谷歌搜索,每一次怎麼辦在谷歌App Engine的東西,並獲得crappiest可能的結果網頁搜索這樣的事實:在谷歌App Engine文檔的頁面。
當我的問題只是以部分答案結束時,我討厭它,所以這裏有一個完整的工作示例。如果您將其粘貼到交互式控制檯中,它應該適用於您。 (不要忘記將versionsId
設置爲默認的應用程序版本,如果您知道如何使用默認版本,請發表評論。'default','*','any'等。所有沒有大workie)
嚴格通過試錯來實現:
import httplib2
import logging
import time
import webapp2
from google.appengine.api.app_identity import app_identity
from googleapiclient.discovery import build
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
service = build('appengine', 'v1', credentials=credentials)
appsId = app_identity.get_application_id()
version_list = service.apps().services().versions().list(
servicesId='default', appsId=appsId).execute()
for version in version_list['versions']:
if not version['id'].startswith('ah-builtin'):
rpc_result = service.apps().services().versions().instances().list(
versionsId=version['id'], servicesId='default',
appsId=appsId).execute()
if rpc_result:
instance_list = rpc_result['instances']
else:
instance_list = []
print version['id'], len(instance_list)
我同意這是很難找到的,最接近的一個我能找到的是這個
google.appengine.api.modules.modules.get_num_instances(module=None, version=None)source
Return the number of instances that are set for the given module version.
這是僅適用於固定模塊,錯誤將引發自動縮放模塊。未來可能會支持自動縮放的模塊。
https://cloud.google.com/appengine/docs/python/refdocs/google.appengine.api.modules.modules
順便說一句,你也可以從擁有總比如
你也應該能夠使用最近GA'd App Engine管理API算出這個度量爲Stackdriver監控。有關管理API的好處是,它會爲標準和靈活的工作: https://cloud.google.com/appengine/docs/admin-api/
下面是返回所有實例的給定服務/版本端點:
根據您使用的語言,通常會有一個「Google API客戶端」+語言庫形式的包裝器。
希望這會有所幫助!
如果你想收集統計數據,你可能想使用Stackdriver Monitoring API收集,谷歌已經聚集時間序列值。
特別列出了App Engine Metrics is here。例如,system/instance_count
是指示App Engine正在運行的實例數量的度量。
唉。在「AppsId」下,他們有「apps/myapp/services/default/versions/v1」的例子。他們實際上的意思是他們希望在該字段中輸入應用程序名稱,「默認」(或者,如果您在應用程序下部署了其他服務,該服務的名稱)以及第三個字段中的應用程序服務版本。該文件也沒有提及您需要哪種權限。不過,您會在「拒絕權限」回覆中獲得。非常典型的雲服務草率文檔樣式。 – Sniggerfardimungus
很高興聽到你能夠解決這個問題。我們會看看更新文檔。 –
謝謝!我剛剛發佈了一個完整的工作代碼示例,但是如果我能夠弄清楚如何獲取所有版本的所有實例,甚至只是默認版本的列表,我都會被定罪。我最近注意到,'默認'版本的概念似乎已從管理控制檯中消失。當發生這種情況時,別名也可能消失了? – Sniggerfardimungus