Azure Monitor Log Analytics 診断設定を使用して Azure Cosmos DB データを監視する
[アーティクル] 08/15/2024
8 人の共同作成者
フィードバック
この記事の内容
適用対象: NoSQL MongoDB Cassandra Gremlin Table
Azure の診断設定は、リソース ログの収集に使用されます。 リソースからは Azure リソース ログが出力され、そのリソースの操作に関する豊富なデータが頻繁に提供されます。 これらのログは要求ごとにキャプチャされ、"データ プレーン ログ" とも呼ばれます。 データ プレーン操作の例としては、delete、insert、readFeed などがあります。 これらのログの内容は、リソースの種類によって異なります。
診断設定の詳細については、「Azure Monitor の診断設定 」を参照してください。
Note
[REST API] タブの指示に従い、(テーブルの API を除くすべての API について) リソース固有モードで診断設定を作成することをお勧めします。このオプションを使用するとさらなるコスト最適化が得られ、データ処理のビューも向上します。
前提条件
既存の Azure Cosmos DB アカウント。
既存の Azure Monitor Log Analytics ワークスペース。
警告
リソースの削除、リソースの名前変更、または移動、またはリソース グループまたはサブスクリプション間での移行が必要な場合は、最初にその診断設定を削除します。 そうしないと、このリソースを再作成した場合に、各リソースのリソース構成によっては、削除されたリソースの診断設定が新しいリソースに含まれる可能性があります。 診断設定が新しいリソースに含まれている場合、診断設定で定義されているリソース ログの収集が再開され、該当するメトリックとログ データが以前に構成された宛先に送信されます。
また、環境をきれいな状態に保つためにも、削除対象で再利用する予定のないリソースは削除することをお勧めします。
診断設定の作成
ここでは、アカウントの診断設定を作成するプロセスについて説明します。
Note
カテゴリとしてエクスポートされるログへのメトリックは、現在サポートされていません。
Azure portal にサインインします。
既存の Azure Cosmos DB アカウントに移動します。
リソース メニューの [監視] セクション内で、[診断設定] を選択します。 次に、[診断設定を追加する] オプションを選択します。
重要
フルテキスト クエリ 機能が自分のアカウントで有効になっていない場合は、"フルテキスト クエリ [...] を有効にして詳細なログ記録を行う" というプロンプトが表示される場合があります。 この機能を有効にしない場合は、この警告を無視しても問題ありません。 詳細については、「フルテキスト クエリを有効にする 」を参照してください。
[診断設定] ペイン内で、この設定に「example-setting 」という名前を付けてから、[QueryRuntimeStatistics] カテゴリを選択します。 [Log Analytics ワークスペースへの送信] チェックボックスを有効化し、既存のワークスペースを選択します。 最後に、宛先オプションとして [リソース固有] を選択します。
Azure CLI を使用して診断設定を作成するには、az monitor diagnostic-settings create
コマンドを使用します。 パラメーターの説明については、このコマンドのドキュメントを参照してください。
Azure CLI にログインしていることを確認します。 詳細については、「Azure CLI を使用してサインインする 」を参照してください。
az monitor diagnostic-settings create
を使用して設定を作成します。
az monitor diagnostic-settings create \
--resource $(az cosmosdb show \
--resource-group "<resource-group-name>" \
--name "<account-name>" \
--query "id" \
--output "tsv" \
) \
--workspace $(az monitor log-analytics workspace show \
--resource-group "<resource-group-name>" \
--name "<account-name>" \
--query "id" \
--output "tsv" \
) \
--name "example-setting" \
--export-to-resource-specific true \
--logs '[
{
"category": "QueryRuntimeStatistics",
"enabled": true
}
]'
重要
このサンプルでは、--export-to-resource-specific
引数を使用してリソース固有のテーブルを有効にします。
「az monitor diagnostics-settings show
」を使用して、新しい設定を作成した結果を確認します。
az monitor diagnostic-settings show \
--name "example-setting" \
--resource $(az cosmosdb show \
--resource-group "<resource-group-name>" \
--name "<account-name>" \
--query "id" \
--output "tsv" \
)
Azure Monitor REST API を、対話型コンソールを介して診断設定を作成するために使用します。
Azure CLI にログインしていることを確認します。 詳細については、「Azure CLI を使用してサインインする 」を参照してください。
HTTP「PUT
」要求と「az rest
」を使用して、Azure Cosmos DB リソースの診断設定を作成します。
diagnosticSettingName="example-setting"
resourceId=$(az cosmosdb show \
--resource-group "<resource-group-name>" \
--name "<account-name>" \
--query "id" \
--output "tsv" \
)
workspaceId=$(az monitor log-analytics workspace show \
--resource-group "<resource-group-name>" \
--name "<account-name>" \
--query "id" \
--output "tsv" \
)
az rest \
--method "PUT" \
--url "$resourceId/providers/Microsoft.Insights/diagnosticSettings/$diagnosticSettingName" \
--url-parameters "api-version=2021-05-01-preview" \
--body '{
"properties": {
"workspaceId": "'"$workspaceId"'",
"logs": [
{
"category": "QueryRuntimeStatistics",
"enabled": true
}
],
"logAnalyticsDestinationType": "Dedicated"
}
}'
重要
このサンプルでは、logAnalyticsDestinationType
プロパティを Dedicated
に設定して、リソース固有のテーブルを有効にします。
診断設定のプロパティを取得するには、HTTP「GET
」動詞で「az rest
」をもう一度使用します。
diagnosticSettingName="example-setting"
resourceId=$(az cosmosdb show \
--resource-group "<resource-group-name>" \
--name "<account-name>" \
--query "id" \
--output "tsv" \
)
az rest \
--method "GET" \
--url "$resourceId/providers/Microsoft.Insights/diagnosticSettings/$diagnosticSettingName" \
--url-parameters "api-version=2021-05-01-preview"
Bicep テンプレート を使用して診断設定を作成します。
Azure CLI にログインしていることを確認します。 詳細については、「Azure CLI を使用してサインインする 」を参照してください。
diagnosticSetting.bicep
という名前で新しいファイルを作成します。
Azure Cosmos DB リソースの診断設定を展開する、次の Bicep テンプレート コンテンツを入力します。
@description('The name of the diagnostic setting to create.')
param diagnosticSettingName string = 'example-setting'
@description('The name of the Azure Cosmos DB account to monitor.')
param azureCosmosDbAccountName string
@description('The name of the Azure Monitor Log Analytics workspace to use.')
param logAnalyticsWorkspaceName string
resource azureCosmosDbAccount 'Microsoft.DocumentDB/databaseAccounts@2021-06-15' existing = {
name: azureCosmosDbAccountName
}
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = {
name: logAnalyticsWorkspaceName
}
resource diagnosticSetting 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: diagnosticSettingName
scope: azureCosmosDbAccount
properties: {
workspaceId: logAnalyticsWorkspace.id
logAnalyticsDestinationType: 'Dedicated'
logs: [
{
category: 'QueryRuntimeStatistics'
enabled: true
}
]
}
}
重要
このサンプルでは、logAnalyticsDestinationType
プロパティを Dedicated
に設定して、リソース固有のテーブルを有効にします。
az deployment group create
を使用してテンプレートをデプロイしてださい。
az deployment group create \
--resource-group "<resource-group-name>" \
--template-file diagnosticSetting.bicep \
--parameters \
azureCosmosDbAccountName="<azure-cosmos-db-account-name>" \
logAnalyticsWorkspaceName="<log-analytics-workspace-name>"
ヒント
「az bicep build
」コマンドを使用して、Bicep テンプレートを Azure Resource Manager テンプレートに変換します。
Azure Resource Manager テンプレート を使用して診断設定を作成します。
Azure CLI にログインしていることを確認します。 詳細については、「Azure CLI を使用してサインインする 」を参照してください。
diagnosticSetting.bicep
という名前で新しいファイルを作成します。
Azure Cosmos DB リソースの診断設定を展開する、次の Azure Resource Manager テンプレート コンテンツを入力します。
{
"$schema": "<https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#>",
"contentVersion": "1.0.0.0",
"parameters": {
"diagnosticSettingName": {
"type": "string",
"defaultValue": "example-setting",
"metadata": {
"description": "The name of the diagnostic setting to create."
}
},
"azureCosmosDbAccountName": {
"type": "string",
"metadata": {
"description": "The name of the Azure Cosmos DB account to monitor."
}
},
"logAnalyticsWorkspaceName": {
"type": "string",
"metadata": {
"description": "The name of the Azure Monitor Log Analytics workspace to use."
}
}
},
"resources": [
{
"type": "Microsoft.Insights/diagnosticSettings",
"apiVersion": "2021-05-01-preview",
"scope": "[format('Microsoft.DocumentDB/databaseAccounts/{0}', parameters('azureCosmosDbAccountName'))]",
"name": "[parameters('diagnosticSettingName')]",
"properties": {
"workspaceId": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('logAnalyticsWorkspaceName'))]",
"logAnalyticsDestinationType": "Dedicated",
"logs": [
{
"category": "QueryRuntimeStatistics",
"enabled": true
}
]
}
}
]
}
重要
このサンプルでは、logAnalyticsDestinationType
プロパティを Dedicated
に設定して、リソース固有のテーブルを有効にします。
az deployment group create
を使用してテンプレートをデプロイしてださい。
az deployment group create \
--resource-group "<resource-group-name>" \
--template-file azuredeploy.json \
--parameters \
azureCosmosDbAccountName="<azure-cosmos-db-account-name>" \
logAnalyticsWorkspaceName="<log-analytics-workspace-name>"
クエリ テキストをログに記録するためにフルテキスト クエリを有効にする
Azure Cosmos DB では、詳細なトラブルシューティングのために機能拡張されたログ記録が提供されます。 フルテキスト クエリを有効にすると、Azure Cosmos DB アカウント内のすべての要求で、難読化解除されたクエリを表示できます。 また、ログ内のこのデータにアクセスして表示するためのアクセス許可を Azure Cosmos DB に付与します。
警告
この機能を有効にすると、追加のログ コストが発生することがあります。料金の詳細については「Azure Monitor の価格 」を参照してください。 トラブルシューティングを行った後に、この機能を無効にすることをお勧めします。
既存の [Azure Cosmos DB アカウント] ページ上で、リソース メニューの [設定] セクション内にある [機能] オプションを選択します。 次に、[診断フルテキストクエリ] 機能を選択します。
ダイアログ内で、[Enable
] を選択します。 この設定は数分以内に適用されます。 新しく取り込まれるすべてのログに、要求ごとのフルテキストまたは PIICommand テキストが含まれるようになりました。
Azure CLI を使用して、Azure Cosmos DB アカウントのフルテキスト クエリを有効にします。
HTTP「PATCH
」動詞と JSON ペイロードを使用し、「az rest
」をもう一度使用して、フルテキスト クエリを有効にします。
az rest \
--method "PATCH" \
--url $(az cosmosdb show \
--resource-group "<resource-group-name>" \
--name "<account-name>" \
--query "id" \
--output "tsv" \
) \
--url-parameters "api-version=2021-05-01-preview" \
--body '{
"properties": {
"diagnosticLogSettings": {
"enableFullTextQuery": "True"
}
}
}'
操作が完了するまで数分お待ちください。 HTTP「GET
」で「az rest
」をもう一度使用して、フルテキスト クエリの状態を確認します。
az rest \
--method "GET" \
--url $(az cosmosdb show \
--resource-group "<resource-group-name>" \
--name "<account-name>" \
--query "id" \
--output "tsv" \
) \
--url-parameters "api-version=2021-05-01-preview" \
--query "{accountName:name,fullTextQueryEnabled:properties.diagnosticLogSettings.enableFullTextQuery}"
出力は次の例のようになります。
{
"accountName": "<account-name>",
"fullTextQueryEnabled": "True"
}
関連するコンテンツ