📈

Check! Azure Metrics advisor をARMテンプレートでデプロイする

5 min read

Prologue

この記事は、Microsoft Azure Cognitive Services Advent Calendar 2020 の 22日目に滑り込みたい野望の記事です!(無謀

Azure Metrics Advisor は、IoT のデータやインフラのログ解析に利用できそうなので興味があります。

この機会に理解を深めようとおもいましたが、ちょうど仕事納めと被って残り2時間ほどで何とかしないとならなくなったので、十八番の ARMテンプレートネタでやり切りたいと思います!

プレビューだからか、ARMテンプレートの情報はまだ見当たらない?

Metrics Advisor はまだプレビューだからか、ARMテンプレートのリファレンスが見当たりません。

そんなときは!

デプロイしてみます!!

というのも、ARMテンプレートを処理するのは、他でもない Azure の中枢 Azure Resoure Manager なので、プレビューだとしてもサービスを利用できる状態であれば、ARMテンプレートの構造は決まっているのです。

そして、そのデプロイ済みの構成の ARMテンプレートは、Azureポータルから閲覧、ダウンロードできるのです。

Metrics Advisor のARMテンプレート

実際にデプロイしたリソースのテンプレートを確認する

早速 Metrics Advisor をデプロイし、生成されたテンプレートを見てみましょう。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "accounts_ma_playground20201225_name": {
            "defaultValue": "ma-playground20201225",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.CognitiveServices/accounts",
            "apiVersion": "2017-04-18",
            "name": "[parameters('accounts_ma_playground20201225_name')]",
            "location": "westus2",
            "sku": {
                "name": "S0"
            },
            "kind": "MetricsAdvisor",
            "properties": {
                "apiProperties": {},
                "customSubDomainName": "[parameters('accounts_ma_playground20201225_name')]",
                "privateEndpointConnections": [],
                "publicNetworkAccess": "Enabled"
            }
        }
    ]
}

なるほど! Microsoft.CognitiveServices/accounts のリソースを設定するだけでデプロイできるんですね!😳

なお、このテンプレートは、Azureポータルの Export template から閲覧、ダウンロードすることができます。

Microsoft.CognitiveServices/accounts を改めて確認する

さて、このリソースプロバイダ Microsoft.CognitiveServices/accounts は、新しいものではありません。ほかの Cognitive Services をデプロイする際にも利用するプロバイダです。

どこが決め手かというと、kindMetricsAdvisor になっているので、きっとこれでしょう!(勘

自分でも ARMテンプレートを書いてデプロイしてみる

↑の生成されたテンプレートだと、場合によってはAPIバージョンが古かったり、パラメータや命名規則がいまいちだったりするので、自分で書きなおすのが好きです。

書き始めは、前述↑のリファレンスを参考に、まずは Required の設定を書いていきます。

余談ですが、ARMテンプレートをかくときは、Visual Studio Code + Azure Resource Manager (ARM) Tools 拡張の組合せが最強に書きやすいですので、お勧めです!

ということで書きあがったテンプレートはこちらです。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "metricsAdvisorName": {
      "type": "string"
    },
    "metricsAdvisorLocation": {
      "type": "string",
      "allowedValues": [
        "westus2",
        "westeurope"
      ]
    },
    "metricsAdvisorSkuName": {
      "type": "string",
      "defaultValue": "S0",
      "allowedValues": [
        "S0"
      ]
    }
  },
  "resources": [
    {
      "name": "[parameters('metricsAdvisorName')]",
      "type": "Microsoft.CognitiveServices/accounts",
      "apiVersion": "2017-04-18",
      "kind": "MetricsAdvisor",
      "location": "[parameters('metricsAdvisorLocation')]",
      "sku": {
        "name": "[parameters('metricsAdvisorSkuName')]"
      },
      "properties": {}
    }
  ]
}

さっきより心なしかすっきりしましたね♪(好みの問題

locationsku は、Azureポータルでリソースを作成するときの選択肢から推測しました。それ以外の項目は、ポータルでも特に指定していなかったのでデフォルト値と推測し、特に指定せずやってみます。

それではさっそくデプロイしてみます。ここでは Azure CLI を利用します。

RESOURCE_GROUP="<resource group name>"
LOCATION="japaneast"
az group create --name $RESOURCE_GROUP --location $LOCATION
az deployment group create \
  --resource-group $RESOURCE_GROUP \
  --template-file /path/to/deploy.json \
  --parameters \
      metricsAdvisorName=my-metrics-advisor 
      metricsAdvisorLocation=westeurope

無事!デプロイできました!🥳

Epilogue

Metrics Advisor はほぼマネージドのサービスなので、ARMテンプレートでデプロイすることはないかもしれませんが、何かのお役に立てれば幸いです😊

それにしても、仕事納めのラストスパートを駆け抜けてからの、レッドブルをあおっての執筆だったので、ちょっとテンションがおかしいですね😇

メリークリスマス!🎄