従量課金のAzure API ManagementでAzure Portalから診断設定を構成できない

このエントリは2025/03/10現在の情報に基づいています。将来の機能追加や変更に伴い、記載事項からの乖離が発生する可能性があります。

問い合わせ

Azure API Managementをこよなく愛する主から次のような問い合わせがあった。

Azure API Management (APIM) Consumption SKUでは診断設定を構成できないのだろうか?Azure Portalから作成したインスタンスを見ると、診断設定のメニューが見当たらない。ドキュメントを見る限り、Consumption SKUで診断設定を構成できない、との記述はないのだが。。

「そんなわけないやろ」と思って見たら、本当に見当たらなかった(下図左。右はSTv2 Developer SKUを対比のために貼り付けた)。

でもドキュメントにはConsumption SKUだから設定できない、とは一切書いていない。さて、どうしたものか、ということらしい。

解決策

現時点では、確かにAzure Portalで後から診断設定を構成できないが、Azure Portal以外の方法、つまりAzure CLIやPowerShell、REST APIを使えば構成できる。以前書いた以下のContainer Appsの場合と同じ。

例えばAzure CLIを使う場合だと、以下でMetricならびにLogをLog Analytics Workspaceに書き出すことができる。

az monitor diagnostic-settings create \
  --name <診断設定の名前> \
  --resource <Resource ID> \
  --logs '[{"category": "GatewayLogs","enabled": true},{"category": "DeveloperPortalAuditLogs","enabled": true},{"category": "WebSocketConnectionLogs","enabled": true}]' \
  --metrics '[{"category": "AllMetrics","enabled": true}]' \
  --workspace <Log Analytics WorkspaceのResource ID> \
  --export-to-resource-specific true

コマンドリファレンスは以下。

az monitor diagnostic-settings
https://learn.microsoft.com/cli/azure/monitor/diagnostic-settings?view=azure-cli-latest

これでおしまい。

プロビジョニング時に設定できないのか?

実のところ、Azure PortalでAPIMをプロビジョニングすると、以下のような画面が出てくる。ここで構成Log Analytics WorkspaceならびにApplication Insightsとの連携を構成すると、診断設定が一部構成された状態でプロビジョニングされる。このあたりは、デプロイ時のARMテンプレートを見るとわかる。

ARMテンプレートを一部抜粋すると、以下のような感じ。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {...},
    "variables": {...},
    "resources": [
        {
            "type": "Microsoft.Insights/diagnosticSettings",
            "apiVersion": "2021-05-01-preview",
            "name": "default",
            "dependsOn": [
                "[concat('Microsoft.ApiManagement/service/', parameters('apimName'))]"
            ],
            "properties": {
                "logs": [
                    {
                        "category": "GatewayLogs",
                        "categoryGroup": null,
                        "enabled": true,
                        "retentionPolicy": {
                            "days": 0,
                            "enabled": false
                        }
                    },
                    {
                        "category": "WebSocketConnectionLogs",
                        "categoryGroup": null,
                        "enabled": true,
                        "retentionPolicy": {
                            "days": 0,
                            "enabled": false
                        }
                    }
                ],
                "metrics": [
                    {
                        "enabled": false,
                        "retentionPolicy": {
                            "days": 0,
                            "enabled": false
                        },
                        "category": "AllMetrics"
                    }
                ],
                "workspaceId": "...",
                "logAnalyticsDestinationType": "Dedicated"
            },
            "scope": "[concat('Microsoft.ApiManagement/service/', parameters('apimName'))]"
        },
        ...
    ]
}

上記テンプレートでデプロイしているので、Azure CLIで診断設定を確認すると以下のようになっている。

$ az monitor diagnostic-settings list --resource <APIMのResource ID>
[
  {
    "id": "<APIMのResource ID>/providers/microsoft.insights/diagnosticSettings/default",
    "logAnalyticsDestinationType": "Dedicated",
    "logs": [
      {
        "category": "GatewayLogs",
        "enabled": true,
        "retentionPolicy": {
          "days": 0,
          "enabled": false
        }
      },
      {
        "category": "WebSocketConnectionLogs",
        "enabled": true,
        "retentionPolicy": {
          "days": 0,
          "enabled": false
        }
      },
      {
        "category": "DeveloperPortalAuditLogs",
        "enabled": false,
        "retentionPolicy": {
          "days": 0,
          "enabled": false
        }
      }
    ],
    "metrics": [
      {
        "category": "AllMetrics",
        "enabled": false,
        "retentionPolicy": {
          "days": 0,
          "enabled": false
        }
      }
    ],
    "name": "default",
    "resourceGroup": "<Resource Group>",
    "type": "Microsoft.Insights/diagnosticSettings",
    "workspaceId": "<Log Analytics WorkspaceのResource ID>"
  }
]

プロビジョニング時の設定では、診断設定の名前はdefaultという名前を使っているので、Metricsを診断設定に追加したい場合には、このdefaultという診断設定にMetricsを追加するように構成すればよい(もちろん別名で新規で追加してもいいが、よほどのことがない限り診断設定を複数作成する必要はないはず)。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください