Home  >  Article  >  Database  >  How to use Python code to obtain monitoring indicator values ​​​​of Azure Redis

How to use Python code to obtain monitoring indicator values ​​​​of Azure Redis

WBOY
WBOYforward
2023-05-28 11:16:28953browse

Problem Description

Through the Metrics monitoring page, we can know the running status and various indicators of the current resources (such as Redis). What if we need to download indicators locally or generate JSON data and import it to a third-party monitoring platform? Can Azure export various indicator data through Python code or Powershell script?

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

Solution

Yes!​ ​ PowerShell command can use Get-AzMetric or az monitor metrics list command to obtain the Metrics value of the resource.

  • 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

And Using Python code, you can use Metrics' REST API to implement

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

  • Register the application in AAD to obtain the Access Token for accessing Redis Metrics in Python code: (Apply The program is registered to the Microsoft identity platform: https://docs.azure.cn/zh-cn/active-directory/develop/quickstart-register-app)

Note: You must first log in to Azure to use Powershell. Use the command Connect-AzAccount -Environment AzureChinaCloud or az cloud set –name AzureChinaCloud and az login.

To use Python code, you need to first obtain the Token to access Redis Metrics. To obtain the Token, you can register an application in Azure AD, and then give the application the reader permission in Redis access control to read Metris data.

Execution steps

Python

Step 1: Register AAD application, copy application ID, client access password

  • Log in to the Azure platform, enter the AAD page, click

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

  • Click the "

    New Registration" button, enter the application name, leave other values ​​as default, click Save

  • After the creation is successful, enter the application page , import it to the "

    Certificates & secrets" page, create the Client Secret you need to use and copy it. In the third step, you need to use

  • to copy the ## on the application page. #Tenant ID, Applicaiton ID

    needs to be used in the third step of the code

See the following animation for the specific operation process:

如何使用Python代码获取Azure Redis的监控指标值Step 2: Grant permission to obtain Metrics

In the Access control (IAM) page of Redis, search through the application name in step 1 and grant permission to Monitoring Reader

如何使用Python代码获取Azure Redis的监控指标值Note: If permission is not granted, a similar error will be reported in the code:

##Status Code: 844a6bd49dc3eb7dda5a7922bcdafb06Response Content: b'{"error":{"code":"AuthorizationFailed","message":"The client 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' with object id 'xxxxxxxx -xxxx-xxxx-xxxx-36166b5f7276' does not have authorization to perform action 'microsoft.insights/metrics/read' over scope '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/xxxx-rg/providers/Microsoft .Cache/Redis/xxxx/providers/microsoft.insights' or the scope is invalid. If access was recently granted, please refresh your credentials."}}'

Step 3: Write Python code, use requests to send psot, get request

  • There are two main parts in the code: one is to obtain Access Token, and the other is to obtain Metrics Data

  • The highlighted content needs to be replaced with the corresponding resource information and the information prepared in the first step

  • After obtaining the Access Token In the Body content, grant_type is a fixed value, which is client_credentials. The value of resource is the management endpoint of azure in China: 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))

The operation effect is as follows:

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

Powershell

  • Log in to azure

  • Prepare az monitor metrics list command

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

The execution effect is as follows:

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


The above is the detailed content of How to use Python code to obtain monitoring indicator values ​​​​of Azure Redis. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete