問題の説明
メトリクス監視ページを通じて、現在のリソース (Redis など) の実行ステータスとさまざまなインジケーターを知ることができます。インジケーターをローカルにダウンロードする必要がある場合、または JSON データを生成してサードパーティの監視プラットフォームにインポートする必要がある場合はどうすればよいでしょうか? Azure は、Python コードまたは Powershell スクリプトを通じてさまざまなインジケーター データをエクスポートできますか?
#解決策
はい! PowerShell コマンドでは、Get-AzMetric または az Monitor metrics list コマンドを使用して、リソースのメトリック値を取得できます。
Get-AzMetric:リソースのメトリック値を取得します。 https://docs.microsoft.com/en-us/powershell /module /az.monitor/get-azmetric?view=azps-5.4.0&viewFallbackFrom=azps-5.2.0
az Monitor メトリック リスト: メトリック値をリストするリソースについては、https://docs.microsoft.com/en-us/cli/azure/monitor/metrics?view=azure-cli-latest#az_monitor_metrics_list
#そして、Python コードを使用すると、Metrics の REST API を使用して実装できます。
##Metrics – List- : リソースのメトリック値をリストします。 https://docs .microsoft.com/en-us/rest/api/monitor/metrics/list
AAD にアプリケーションを登録して、Redis メトリクスにアクセスするためのアクセス トークンを取得します。 Python コード: (プログラムは Microsoft ID プラットフォームに登録されます: https://docs.azure.cn/zh-cn/active-directory/develop/quickstart-register-app)
- #注: Powershell を使用するには、まず Azure にログインする必要があります。コマンド
Connect-AzAccount -Environment AzureChinaCloud
または
az cloud set –name AzureChinaCloud and az login を使用します。 Python コードを使用するには、まず Redis メトリクスにアクセスするためのトークンを取得する必要があります。トークンを取得するには、Azure AD にアプリケーションを登録し、Metris データを読み取るための Redis アクセス制御の読み取りアクセス許可をアプリケーションに付与します。
#実行手順
Python
ステップ 1: AAD アプリケーションの登録、アプリケーション ID、クライアント アクセス パスワードのコピー
# # Azure プラットフォームにログインし、AAD ページに入り、
アプリ登録
をクリックします: https://portal.azure.cn/?l=en.en-us#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps
「新規登録」ボタンをクリックし、アプリケーション名を入力し、他の値はデフォルトのままにして、「保存」をクリックします
- # #作成が成功したら、アプリケーション ページに入り、「
証明書とシークレット」ページにインポートし、使用する必要があるクライアント シークレットを作成してコピーします。3 番目のステップでは、使用する必要があります。
- アプリケーション ページの ## をコピーします。#テナント ID、アプリケーション ID
はコードの 3 番目のステップで使用する必要があります
- 特定の操作プロセスについては、次のアニメーションを参照してください。
ステップ 2: メトリクスを取得する権限を付与する
#In Redis のアクセス制御 (IAM) ページで、手順 1 でアプリケーション名を検索し、Monitoring Reader に権限を付与します
注: 権限が付与されていない場合は、同様のエラーが表示されます
##ステータス コード: <応答 [403]>応答内容: b'{"error":{" code":"AuthorizationFailed","message":"オブジェクト ID 'xxxxxxxx -xxxx-xxxx-xxxx-36166b5f7276' のクライアント 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' には、アクション 'microsoft.insights' を実行する権限がありません。 /metrics/read' overscope '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/xxxx-rg/providers/Microsoft .Cache/Redis/xxxx/providers/microsoft.insights' またはスコープが無効です。最近アクセスが許可されました。資格情報を更新してください。"}}'
ステップ 3: Python コードを作成し、リクエストを使用して psot を送信し、リクエストを取得する
コードには 2 つの主要な部分があります。1 つはアクセス トークンを取得する部分で、もう 1 つはアクセス トークンを取得する部分です。メトリクス データを取得するには
- ##強調表示されたコンテンツを、対応するリソース情報と最初のステップで準備した情報に置き換える必要があります。
- 取得後アクセス トークン Body コンテンツでは、grant_type は固定値、つまり client_credentials です。リソースの値は、中国における Azure の管理エンドポイントです:
https://management.chinacloudapi.cn
import requestsimport json##Part 1: Get Access Tokenaadurl="https://login.chinacloudapi.cn/<your aad tenant id>/oauth2/token"aadbody={'grant_type':'client_credentials','client_id':'your aad client id','client_secret':'your aad client secret','resource':'https://management.chinacloudapi.cn'}
rtoken= requests.post(aadurl, data=aadbody)##print(rtoken)objtoken = json.loads(rtoken.text)##print(obj['access_token'])##Part 2: Get the Metrics Value by Tokenheaders = {'content-type': "application/json", 'Authorization': 'Bearer '+objtoken['access_token']
}
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('Status Code: ' + str(r))print('Response Content: ' + str(r.content))
ログイン後にコピー
運用効果は次のとおりです。 :
Powershell
実行結果は次のとおりです:
以上がPythonコードを使用してAzure Redisの監視指標値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。