このエントリは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を追加するように構成すればよい(もちろん別名で新規で追加してもいいが、よほどのことがない限り診断設定を複数作成する必要はないはず)。