적용 대상:
NoSQL
MongoDB
카산드라
그렘린
테이블
진단 설정을 사용하여 Azure에서 리소스 로그를 수집할 수 있습니다. 리소스는 Azure 리소스 로그를 내보내고 해당 리소스의 작업에 대한 풍부하고 빈번한 데이터를 제공합니다. 이러한 로그는 요청별로 캡처되며 데이터 평면 로그라고도 불립니다. 데이터 평면 작업의 몇 가지 예로는 delete, insert 및 readFeed가 있습니다. 이러한 로그의 내용은 리소스 종류에 따라 달라집니다.
진단 설정에 대해 자세히 알아보려면 Azure Monitor의 진단 설정을 참조하세요.
참고
REST API 탭의 지침에 따라 리소스별 모드(Table용 API를 제외한 모든 API의 경우)에서 진단 설정을 만드는 것이 좋습니다. 이 옵션은 데이터 처리를 위한 보기가 개선되어 비용을 추가로 최적화합니다.
필수 구성 요소
- 기존 Azure Cosmos DB 계정.
- 기존 Azure Monitor Log Analytics 작업 영역입니다.
경고
리소스를 삭제, 이름 바꾸기 또는 이동하거나 리소스 그룹 또는 구독 간에 마이그레이션해야 하는 경우 먼저 해당 진단 설정을 삭제합니다. 그렇지 않으면 이 리소스를 다시 만들 때 삭제된 리소스에 대한 진단 설정이 각 리소스의 리소스 구성에 따라 새 리소스에 포함될 수 있습니다. 진단 설정이 새 리소스에 포함된 경우 진단 설정에 정의된 대로 리소스 로그 컬렉션을 다시 시작하고 해당 메트릭 및 로그 데이터를 이전에 구성된 대상으로 보냅니다.
또한 삭제할 리소스에 대한 진단 설정은 삭제하고 환경을 깨끗하게 유지하기 위해 다시 사용하지 않는 것이 좋습니다.
진단 설정 만들기
여기서는 계정에 대한 진단 설정을 만드는 프로세스를 안내합니다.
참고
범주로 내보내기를 기록하는 메트릭은 현재 지원되지 않습니다.
Azure Portal에 로그인합니다.
기존 Azure Cosmos DB 계정으로 이동합니다.
리소스 메뉴의 모니터링 섹션에서 진단 설정을 선택합니다. 그런 다음 진단 설정 추가 옵션을 선택합니다.
중요합니다
계정에서 전체 텍스트 쿼리 기능이 사용 설정되지 않은 경우 "자세한 로깅을 위해 전체 텍스트 쿼리를 사용 설정하십시오"라는 메시지가 표시될 수 있습니다. 이 기능을 사용하지 않으려면 이 경고를 무시해도 됩니다. 자세한 내용은 전체 텍스트 쿼리 사용을 참조하세요.
진단 설정 창에서 설정 이름을 example-setting으로 지정한 다음 QueryRuntimeStatistics 범주를 선택합니다.
Log Analytics 작업 영역으로 보내기 확인란을 사용하도록 설정하고 기존 작업 영역을 선택합니다. 마지막으로 대상 옵션으로 특정 리소스를 선택합니다.
az monitor diagnostic-settings create 명령을 사용하여 Azure CLI로 진단 설정을 만듭니다. 명령의 매개 변수에 대해 알아보려면 설명서를 참조하세요.
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 az rest 동사와 함께 GET를 다시 사용합니다.
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 az rest 동사 및 JSON 페이로드와 함께 PATCH를 다시 사용하여 전체 텍스트 쿼리를 사용하도록 설정합니다.
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 az rest과 함께 GET를 다시 사용하여 전체 텍스트 쿼리 상태를 확인합니다.
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"
}
관련 콘텐츠