問題描述
在某些情況下,我們需要監(jiān)視服務(wù)的操作狀態(tài),通過操作日志的詳細(xì)情況知道我們的操作失敗的具體原因,并且通過操作日志可以在失敗的詳情中找出操作 ID,在聯(lián)系技術(shù)支持的過程中可以對(duì)應(yīng)到具體的操作。
然而,目前服務(wù) SDK 并沒有提供此類的 API,那么是否可以達(dá)成這個(gè)需求呢?
問題分析
Azure 門戶提供了一個(gè)操作日志(Operation Log)的功能,可以用于查詢云服務(wù)的操作日志。同時(shí),Azure 也提供了相應(yīng)的 REST API,請參考:List Subscription Operations。
解決方法
通過 Azure 門戶查看操作日志
云服務(wù)提供了重啟日志以及特定經(jīng)典資源的操作的日志,請通過以下步驟查看:
1.登錄 Azure 門戶網(wǎng)站,選擇 “云服務(wù)”:
2.選擇要查看的 云服務(wù) -> 點(diǎn)擊 “操作日志(經(jīng)典)”,可以選擇時(shí)間跨度,查看相關(guān)的操作日志和啟動(dòng)日志:
通過 REST API 查看操作日志
1.構(gòu)建請求
請求 URI:
備注
文檔中給出的是國際版 Azure 的終結(jié)點(diǎn)地址,使用中國區(qū) Azure 需要將 management.windows.net 修改為 management.core.chinacloudapi.cn。
URI 參數(shù):
上述請求并沒有做限制(Filter),是獲取訂閱下所有的操作日志,為了達(dá)成需求,需要使用以下 3 個(gè)參數(shù)來做限定:
StartTime=<start-of-timeframe>
EndTime=<end-of-timeframe>
ObjectIdFilter=<object-url>
參數(shù)詳解請參考文檔說明,此外您還需要指定api-version,構(gòu)建的請求格式為:
https://management.core.chinacloudapi.cn/<subscription-id>/operations?ObjectIdFilter<object-url>&StartTime=<start-of-timeframe>&EndTime=<end-of-timeframe>
具體參數(shù)字段需要替換為您實(shí)際項(xiàng)目中的值,針對(duì)cloud Service(Paas)對(duì)應(yīng)的ObjectIdFilter的格式為:
ObjectIdFilter=/subscription-id/services/hostedservices/cloud-service-name.
因此獲取某個(gè)特定的cloud Service(Paas)的示例請求如下:
https://management.core.chinacloudapi.cn/5bbf0cbb-647d-****-****-26629f109bd7/operations?ObjectIdFilter=/5bbf0cbb-647d-****-****-26629f109bd7/services/hostedservices/kevin1&StartTime=2018-01-01&EndTime=2018-01-31&api-version=2014-01
2.請求參數(shù)
x-ms-version:2012-03-01 (或更高版本)
Authorization:調(diào)用以下 REST API 來獲取
RESTAPI: https://login.chinacloudapi.cn/common/oauth2/token?api-version=1.0
Method: POST
HEADER: Content-Type: application/x-www-form-urlencoded
POST DATA:
grant_type: password # 固定值
resource: https://management.core.chinacloudapi.cn/ # 固定值
username: 訂閱登錄賬戶
password: 訂閱登錄密碼
client_id: 1950a258-227b-4e31-a9cf-717495945fc2 # 固定值
如下示例:access_token 的值即 Authorization 值:
3.調(diào)用請求