首頁  >  文章  >  資料庫  >  如何使用Python程式碼取得Azure Redis的監控指標值

如何使用Python程式碼取得Azure Redis的監控指標值

WBOY
WBOY轉載
2023-05-28 11:16:28954瀏覽

問題描述

透過Metrics監控頁面,我們能得知目前資源(如Redis)的運作與各種指標。如果我們需要把指標下載到本地或產生JSON資料匯入到第三方的監控平台呢? Azure是否可以透過Python程式碼或時Powershell腳本匯出各種指標資料呢?

如何使用Python代码获取Azure Redis的监控指标值

解決方法

可以!       PowerShell指令可以使用Get-AzMetric 或是 az monitor metrics list指令來取得資源的Metrics值。

  • Get-AzMetric:Gets the metric values of a resource. https://docs.microsoft.com/en-us/powershell/module /az.monitor/get-azmetric?view=azps-5.4.0&viewFallbackFrom=azps-5.2.0

  • ## az monitor metrics list: List the metric values for a resource. https://docs.microsoft.com/en-us/cli/azure/monitor/metrics?view=azure-cli-latest#az_monitor_metrics_list

#而使用Python程式碼,可以使用Metrics的REST API來實作

  • #Metrics – List:Lists the metric values for a resource. https://docs .microsoft.com/en-us/rest/api/monitor/metrics/list

  • 在AAD中註冊應用程式取得在Python程式碼中存取Redis Metrics的Access Token: (將應用程式註冊到Microsoft 識別平台: https://docs.azure.cn/zh-cn/active-directory/develop/quickstart-register-app)

#:使用Powershell必須先登入Azure。使用指令 Connect-AzAccount -Environment AzureChinaCloud 或 az cloud set –name AzureChinaCloud  和 az login。

       

使用Python程式碼則需要先取得到存取Redis Metrics的Token。取得Token可以在Azure AD中註冊一個應用,然後給予該應用程式在Redis的存取控制中賦予reader的權限即可讀取Metris資料。

執行步驟

Python

步驟一:註冊AAD應用程式,複製應用程式ID,客戶端存取密碼

  •  登入Azure平台,進入AAD頁面,點選

    App registrations: https://portal.azure.cn/?l=en.en-us#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps

  • 點選「

    New Registration」 按鈕,輸入應用程式名稱,其他值保留默認,點選儲存

  • 建立成功後,進入應用程式頁面,導入到「

    Certificates & secrets」頁面,建立需要使用的Client Secret並複製出來,第三步驟需要使用

  • ##在應用程式頁面複製出
  • Tenant ID, Applicaiton ID

    需要在第三步驟程式碼中使用

具體操作過程請參考以下動圖:

如何使用Python代码获取Azure Redis的监控指标值步驟二:賦予取得Metrics的權限

在Redis的Access control (IAM)頁面中,透過步驟一的應用程式名稱搜尋並賦予Monitoring Reader權限

如何使用Python代码获取Azure Redis的监控指标值附註:如沒有賦予權限,則程式碼中會回報類似錯誤:

Status Code: 844a6bd49dc3eb7dda5a7922bcdafb06

步驟三:寫Python程式碼,使用requests來傳送psot,get請求

  • 程式碼中主要有兩部分內容:一是取得Access Token,二是取得Metrics Data

  • 高亮中的內容都是需要替換成對應的資源資訊和第一步中準備的資訊

  • 在取得Access Token的Body內容中,grant_type是固定值,為client_credentials。 resource的值為中國區azure的管理終點:https://management.chinacloudapi.cn

import requestsimport json##Part 1: Get Access Tokenaadurl="https://login.chinacloudapi.cn/<your aad tenant id>/oauth2/token"aadbody={&#39;grant_type&#39;:&#39;client_credentials&#39;,&#39;client_id&#39;:&#39;your aad client id&#39;,&#39;client_secret&#39;:&#39;your aad client secret&#39;,&#39;resource&#39;:&#39;https://management.chinacloudapi.cn&#39;}
rtoken= requests.post(aadurl, data=aadbody)##print(rtoken)objtoken = json.loads(rtoken.text)##print(obj[&#39;access_token&#39;])##Part 2: Get the Metrics Value by Tokenheaders = {&#39;content-type&#39;: "application/json",           &#39;Authorization&#39;: &#39;Bearer &#39;+objtoken[&#39;access_token&#39;]
        }

url= "https://management.chinacloudapi.cn/subscriptions/<subscriptions>/resourceGroups/<resourceGroups>/providers/Microsoft.Cache/Redis/<your redis name>/providers/microsoft.insights/metrics?api-version=2018-01-01&metricnames=expiredkeys,usedmemory"r = requests.get(url, headers=headers)print(&#39;Status Code: &#39; + str(r))print(&#39;Response Content: &#39; + str(r.content))

運作效果如:

如何使用Python代码获取Azure Redis的监控指标值

Powershell

  • 登入azure

  • 準備az monitor metrics list指令

az cloud set --name AzureChinaCloud

az login

az monitor metrics list --resource /subscriptions/<your subscriptions>/resourceGroups/<resourceGroups>/providers/Microsoft.Cache/Redis/<your redis name> --metric usedmemory --aggregation Maximum --interval PT1M

執行效果如下:

如何使用Python代码获取Azure Redis的监控指标值如何使用Python代码获取Azure Redis的监控指标值

#
Response Content: b'{“error”:{“code”:”AuthorizationFailed”,”message”:”The client 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' with object id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx -xxxx-xxxx-xxxx-36166b5f7276' does not have authorization to perform action 'microsoft.insights/metrics/read' over scope '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxx/x/resourcep/Microsoftx/x .Cache/Redis/xxxx/providers/microsoft.insights' or the scope is invalid. If access was recently granted, please refresh your credentials.”}}'


以上是如何使用Python程式碼取得Azure Redis的監控指標值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除