다음을 통해 공유


AzureDiagnostics

Azure Diagnostics 모드를 사용하는 Azure 서비스의 리소스 로그를 저장합니다. 리소스 로그는 Azure 리소스의 내부 작업을 설명합니다.

각 Azure 서비스에 대한 리소스 로그에는 고유한 열 세트가 있습니다. AzureDiagnostics 테이블에는 Azure 서비스에서 사용하는 가장 일반적인 열이 포함되어 있습니다. 리소스 로그에 AzureDiagnostics 테이블에 없는 열이 포함된 경우 해당 열은 데이터가 처음 수집될 때 추가됩니다. 최대 열 수 500개에 도달하면 추가 열에 대한 데이터가 동적 열에 추가됩니다.

리소스별 모드를 사용하는 Azure 서비스는 해당 서비스와 관련된 테이블에 데이터를 저장하고 AzureDiagnostics 테이블을 사용하지 않습니다. 차이점에 대한 자세한 내용은 Azure 리소스 로그를 참조하세요. Azure Diagnostics를 사용하는 서비스에 대해 Azure Diagnostics 모드를 사용하는 리소스를 참조하세요.

참고 항목

AzureDiagnostics 테이블은 Azure 리소스가 Azure Diagnostics 모드에서 로그 전송을 처음 시작할 때 Azure Monitor 파이프라인에서 단독으로 만든 사용자 지정 로그 테이블입니다. 다른 테이블과 달리 ARM 템플릿 또는 테이블 API를 통해 AzureDiagnostics 테이블을 만들 수 없습니다. 따라서 테이블을 만들기 전에 테이블의 기본 보존 값을 수정할 수 없습니다.

AdditionalFields 열

다른 테이블 과 달리 AzureDiagnostics 는 이 테이블에 데이터를 보낼 수 있는 다양한 Azure Resources로 인해 Log Analytics 작업 영역의 모든 테이블에 적용되는 500열 제한을 초과할 가능성이 훨씬 더 높습니다. 이 500열 제한을 초과하는 활성 열 수로 인해 데이터가 손실되지 않도록 하기 위해 AzureDiagnostics 열 만들기는 다른 테이블과 다른 방식으로 처리됩니다.

모든 작업 영역의 AzureDiagnostics 테이블에는 최소 200개의 열이 포함되어 있습니다. 2021년 1월 19일 이전에 만든 작업 영역의 경우 테이블에는 이 날짜 이전에 이미 배치된 열도 포함됩니다. 데이터가 아직 배치되지 않은 열로 전송되는 경우:

  • 현재 작업 영역의 AzureDiagnostics에 있는 총 열 수가 500을 초과하지 않으면 다른 테이블과 마찬가지로 새 열이 만들어집니다.
  • 총 열 수가 500을 초과하면 초과 데이터가 AdditionalFields라는 동적 속성 모음 열에 속성으로 추가됩니다.

예시

이 동작을 설명하기 위해 작업 영역의 AzureDiagnostics 테이블이 (배포 날짜) 현재 다음과 같다고 상상해 보세요.

1 열 2 열 3 열 ... 열 498
abc def 123 ... 456
... ... ... ... ...

그런 다음 AzureDiagnostics데이터를 보내는 리소스는 NewInfo1이라고 하는 데이터에 새 차원을 추가합니다. 테이블에는 여전히 500개 미만의 열이 있으므로 이 새 차원에 대한 데이터가 포함된 이벤트가 처음으로 발생하면 테이블에 새 열이 추가됩니다.

1 열 2 열 3 열 ... 열 498 NewInfo1_s
abc def 123 ... 456 xyz
... ... ... ... ... ...

간단한 쿼리에서 이 새 데이터를 반환할 수 있습니다.

AzureDiagnostics | where NewInfo1_s == "xyz"

나중에 다른 리소스는 NewInfo2 및 NewInfo3이라는 새 차원을 추가하는 AzureDiagnostics로 데이터를 보냅니다. 테이블이 이 작업 영역에서 500개 열에 도달했기 때문에 새 데이터는 AdditionalFields 열로 이동합니다.

1 열 2 열 3 열 ... 열 498 NewInfo1_s AdditionalFields
abc def 123 ... 456 xyz {"NewInfo2":"789","NewInfo3":"qwerty"}
... ... ... ... ... ... ...

이 데이터는 계속 쿼리할 수 있지만 KQL의 동적 속성 연산자를 사용하여 속성 모음에서 추출해야 합니다.

AzureDiagnostics
| where AdditionalFields.NewInfo2 == "789" and AdditionalFields.NewInfo3 == "qwerty"

열 사용에 AdditionalFields 대한 팁

쿼리의 첫 번째 절을 따라야 하므로 항상 시간별로 필터링하는 것과 같은 쿼리 모범 사례에는 AdditionalFields를 사용할 때 고려해야 할 몇 가지 다른 권장 사항이 있습니다.

  • 추가 작업을 수행하기 전에 데이터를 typecast해야 합니다. 예를 들어 Perf1Sec_i 열과 Perf2Sec이라는 추가 필드에 속성이 있고 두 값을 모두 추가하여 총 성능 계산을 하려는 경우 다음AzureDiagnostics | extend TotalPerfSec = Perf1Sec_i + toint(AdditionalFields.Perf2Sec) | ....을 사용할 수 있습니다.
  • 성능을 크게 향상시키기 위해 복잡한 논리를 작성하기 전에 where 절을 사용하여 데이터 볼륨을 가능한 한 작게 줄입니다. TimeGenerated 는 항상 가능한 가장 작은 창으로 줄여야 하는 하나의 열입니다. AzureDiagnostics경우 ResourceType 열을 사용하여 쿼리되는 리소스 종류에 대해 항상 추가 필터를 쿼리 맨 위에 포함해야 합니다.
  • 대량의 데이터를 쿼리할 때 구문 분석보다는 AdditionalFields 전체에서 필터를 수행하는 것이 더 효율적일 수 있습니다. 예를 들어 대용량 데이터의 AzureDiagnostics | where AdditionalFields has "Perf2Sec" 경우 .AzureDiagnostics | where isnotnull(toint(AdditionalFields.Perf2Sec))

Azure Diagnostics 모드를 사용하는 리소스

다음 서비스는 리소스 로그에 Azure 진단 모드를 사용하고 Azure Diagnostics 테이블로 데이터를 보냅니다. 이 구성에 대한 자세한 내용은 Azure 리소스 로그를 참조하세요.

참고 항목

다른 모든 리소스는 리소스별 테이블로 데이터를 보냅니다.

서비스 이름 resourceType
MicrosoftSqlAzureTelemetryv3 microsoft.sql/servers/databases
MicrosoftAzureCosmosDB microsoft.documentdb/databaseaccounts
AzureFirewall microsoft.network/azurefirewalls
AzureApplicationGatewayService microsoft.network/applicationgateways
AKSCustomerData microsoft.containerservice/managedclusters
AzureFrontdoor microsoft.cdn/profiles
LNMAgentService microsoft.network/networksecuritygroups
MicrosoftOrcasBreadthServers microsoft.dbforpostgresql/flexibleservers
servicebus microsoft.eventhub/namespaces
AzureFrontdoor microsoft.network/frontdoors
AzureKeyVault microsoft.keyvault/vaults
AzureDataLake microsoft.datalakestore/accounts
ApiManagement microsoft.apimanagement/service
MicrosoftSqlAzureTelemetryv3 microsoft.sql/managedinstances
ASAzureRP microsoft.analysisservices/servers
MicrosoftOrcasBreadthServers microsoft.dbformysql/flexibleservers
servicebus microsoft.servicebus/namespaces
AzureIotHub microsoft.devices/iothubs
MicrosoftSqlAzureTelemetryv2 microsoft.dbforpostgresql/servers
MicrosoftSqlAzureTelemetryv2 microsoft.dbformariadb/servers
MicrosoftAutomation microsoft.automation/automationaccounts
TrafficManager microsoft.network/trafficmanagerprofiles
MicrosoftOrcasBreadthServers microsoft.dbforpostgresql/servergroupsv2
AzureSearch microsoft.search/searchservices
AzureHybrid microsoft.network/virtualnetworkgateways
MicrosoftSqlAzureTelemetryv3 microsoft.sql/managedinstances/databases
PBIDedicatedRP microsoft.powerbidedicated/capacities
AzureHybrid microsoft.network/vpngateways
MicrosoftDatafactory microsoft.datafactory/factories
MicrosoftCognitiveServices microsoft.cognitiveservices/accounts
AzureRecoveryServices microsoft.recoveryservices/vaults
AzureBatch microsoft.batch/batchaccounts
AzureHybrid microsoft.network/p2svpngateways
MicrosoftSqlAzureTelemetryv2 microsoft.dbformysql/servers
AzureKeyVault microsoft.keyvault/managedhsms
NetMon microsoft.network/publicipaddresses
AzureDataLake microsoft.datalakeanalytics/accounts
MicrosoftStreamanalytics microsoft.streamanalytics/streamingjobs
servicebus microsoft.relay/namespaces
AzureIotDps microsoft.devices/provisioningservices
MicrosoftAzureCosmosDB microsoft.documentdb/cassandraclusters
MicrosoftAzureCosmosDB microsoft.documentdb/mongoclusters
AKSCustomerData microsoft.containerservice/fleets
PBIDedicatedRP microsoft.powerbi/tenants/workspaces
AzureFrontdoor microsoft.cdn/cdnwebapplicationfirewallpolicies
AzureHybrid microsoft.network/expressroutecircuits
MicrosoftAzureCosmosDB microsoft.dbforpostgresql/flexibleservers
NetMon microsoft.network/publicipprefixes
AzureCdn microsoft.cdn/profiles/endpoints

Azure 진단 모드 또는 리소스별 모드

다음 서비스는 진단 설정 구성에 따라 리소스 로그에 Azure 진단 모드 또는 리소스별 모드를 사용합니다. 리소스별 모드를 사용하는 경우 이러한 리소스는 AzureDiagnostics 테이블에 데이터를 보내지 않습니다. 이 구성에 대한 자세한 내용은 Azure 리소스 로그를 참조하세요.

서비스 이름 resourceType
API Management Services Microsoft.ApiManagement
Azure Cosmos DB Microsoft.DocumentDB/databaseAccounts
Data Factory(V2) Microsoft.DataFactory
Recovery Services 자격 증명 모음(Backup) Microsoft.RecoveryServices/vaults
방화벽 Microsoft.Network/azureFirewalls

AzureDiagnostics 테이블 열

Column Type 설명
action_id_s 문자열
action_name_s 문자열
action_s 문자열
ActivityId_g GUID
AdditionalFields
AdHocOrScheduledJob_s 문자열
application_name_s 문자열
audit_schema_version_d Double
avg_cpu_percent_s 문자열
avg_mean_time_s 문자열
backendHostname_s 문자열
Caller_s 문자열
callerId_s 문자열
CallerIPAddress 문자열
calls_s 문자열
범주 문자열
client_ip_s 문자열
clientInfo_s 문자열
clientIP_s 문자열
clientIp_s 문자열
clientIpAddress_s 문자열
clientPort_d Double
code_s 문자열
collectionName_s 문자열
conditions_destinationIP_s 문자열
conditions_destinationPortRange_s 문자열
conditions_None_s 문자열
conditions_protocols_s 문자열
conditions_sourceIP_s 문자열
conditions_sourcePortRange_s 문자열
CorrelationId 문자열
count_executions_d Double
cpu_time_d Double
database_name_s 문자열
database_principal_name_s 문자열
DatabaseName_s 문자열
db_id_s 문자열
direction_s 문자열
dop_d Double
duration_d Double
duration_milliseconds_d Double
DurationMs BigInt
ElasticPoolName_s 문자열
endTime_t DateTime
Environment_s 문자열
error_code_s 문자열
error_message_s 문자열
errorLevel_s 문자열
event_class_s 문자열
event_s 문자열
event_subclass_s 문자열
event_time_t DateTime
EventName_s 문자열
execution_type_d Double
executionInfo_endTime_t DateTime
executionInfo_exitCode_d Double
executionInfo_startTime_t DateTime
host_s 문자열
httpMethod_s 문자열
httpStatus_d Double
httpStatusCode_d Double
httpStatusCode_s 문자열
httpVersion_s 문자열
id_s 문자열
identity_claim_appid_g GUID
identity_claim_ipaddr_s 문자열
instanceId_s 문자열
interval_end_time_d Double
interval_start_time_d Double
ip_s 문자열
is_column_permission_s 문자열
isAccessPolicyMatch_b Bool
JobDurationInSecs_s 문자열
JobFailureCode_s 문자열
JobId_g GUID
jobId_s 문자열
JobOperation_s 문자열
JobOperationSubType_s 문자열
JobStartDateTime_s 문자열
JobStatus_s 문자열
JobUniqueId_g GUID
수준 문자열
log_bytes_used_d Double
logical_io_reads_d Double
logical_io_writes_d Double
LogicalServerName_s 문자열
macAddress_s 문자열
matchedConnections_d Double
max_cpu_time_d Double
max_dop_d Double
max_duration_d Double
max_log_bytes_used_d Double
max_logical_io_reads_d Double
max_logical_io_writes_d Double
max_num_physical_io_reads_d Double
max_physical_io_reads_d Double
max_query_max_used_memory_d Double
max_rowcount_d Double
max_time_s 문자열
mean_time_s 문자열
메시지 문자열
min_time_s 문자열
msg_s 문자열
num_physical_io_reads_d Double
object_id_d Double
object_name_s 문자열
OperationName 문자열
OperationVersion 문자열
partitionKey_s 문자열
physical_io_reads_d Double
plan_id_d Double
policy_s 문자열
policyMode_s 문자열
primaryIPv4Address_s 문자열
priority_d Double
properties_enabledForDeployment_b Bool
properties_enabledForDiskEncryption_b Bool
properties_enabledForTemplateDeployment_b Bool
properties_s 문자열
properties_sku_Family_s 문자열
properties_sku_Name_s 문자열
properties_tenantId_g GUID
query_hash_s 문자열
query_id_d Double
query_max_used_memory_d Double
query_plan_hash_s 문자열
query_time_d Double
querytext_s 문자열
receivedBytes_d Double
Region_s 문자열
requestCharge_s 문자열
requestQuery_s 문자열
requestResourceId_s 문자열
requestResourceType_s 문자열
requestUri_s 문자열
reserved_storage_mb_s 문자열
리소스 문자열
resource_actionName_s 문자열
resource_location_s 문자열
resource_originRunId_s 문자열
resource_resourceGroupName_s 문자열
resource_runId_s 문자열
resource_subscriptionId_g GUID
resource_triggerName_s 문자열
resource_workflowId_g GUID
resource_workflowName_s 문자열
ResourceGroup 문자열
_ResourceId 문자열 레코드가 연결된 리소스의 고유 식별자입니다.
ResourceProvider 문자열
ResourceProvider 문자열
ResourceType 문자열
ResourceType 문자열
response_rows_d Double
resultCode_s 문자열
ResultDescription 문자열
ResultDescription 문자열
resultDescription_ChildJobs_s 문자열
resultDescription_ErrorJobs_s 문자열
resultMessage_s 문자열
ResultSignature 문자열
ResultType 문자열
ResultType 문자열
rootCauseAnalysis_s 문자열
routingRuleName_s 문자열
rowcount_d Double
ruleName_s 문자열
RunbookName_s 문자열
RunOn_s 문자열
schema_name_s 문자열
sentBytes_d Double
sequence_group_id_g GUID
sequence_number_d Double
server_principal_sid_s 문자열
session_id_d Double