Dela via


AzureDiagnostics

Lagrar resursloggar för Azure-tjänster som använder Azure Diagnostics-läge. Resursloggar beskriver den interna driften av Azure-resurser.

Resursloggen för varje enskild Azure-tjänst har en unik uppsättning kolumner. Tabellen AzureDiagnostics innehåller de vanligaste kolumnerna som används av Azure-tjänster. Om en resurslogg innehåller en kolumn som inte redan finns i tabellen AzureDiagnostics läggs den kolumnen till första gången data samlas in. Om det maximala antalet på 500 kolumner uppnås läggs data för ytterligare kolumner till i en dynamisk kolumn.

Azure-tjänster som använder resursspecifikt läge lagrar data i en tabell som är specifik för tjänsten och som inte använder tabellen AzureDiagnostics. Mer information om skillnaderna finns i Azure-resursloggar. Se Resurser som använder Azure Diagnostics-läge för de tjänster som använder Azure Diagnostics.

Kommentar

Tabellen AzureDiagnostics är en anpassad loggtabell som skapats exklusivt av Azure Monitor-pipelinen första gången en Azure-resurs börjar skicka loggar i Azure Diagnostics-läge. Till skillnad från andra tabeller kan inte AzureDiagnostics-tabellen skapas via en ARM-mall eller ett API för tabeller. Därför går det inte att ändra tabellens standardvärden för kvarhållning innan den skapas.

Kolumnen AdditionalFields

Till skillnad från andra tabeller är AzureDiagnostics mycket mer känsligt för att överskrida den 500 kolumngräns som införts för en tabell på en Log Analytics-arbetsyta på grund av det breda utbudet av Azure-resurser som kan skicka data till den här tabellen. För att säkerställa att inga data går förlorade på grund av att antalet aktiva kolumner överskrider den här kolumngränsen på 500 hanteras skapande av AzureDiagnostics-kolumner på ett annat sätt än andra tabeller.

AzureDiagnostics-tabellen på varje arbetsyta innehåller minst samma 200 kolumner. För arbetsytor som skapades före den 19 januari 2021 innehåller tabellen även alla kolumner som redan fanns före detta datum. När data skickas till en kolumn som inte redan finns:

  • Om det totala antalet kolumner i AzureDiagnostics på den aktuella arbetsytan inte överstiger 500 skapas en ny kolumn precis som med andra tabeller.
  • Om det totala antalet kolumner är på eller över 500 läggs överskottsdata till i en dynamisk egenskapsuppsättningskolumn med namnet AdditionalFields som egenskap.

Exempel

För att illustrera det här beteendet kan du tänka dig att från och med (distributionsdatum) ser AzureDiagnostics-tabellen på vår arbetsyta ut så här:

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

En resurs som skickar data till AzureDiagnostics lägger sedan till en ny dimension till sina data som de kallar NewInfo1. Eftersom tabellen fortfarande har färre än 500 kolumner läggs en ny kolumn till i tabellen första gången en händelse inträffar som innehåller data för den här nya dimensionen:

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

Du kan returnera dessa nya data i en enkel fråga:

AzureDiagnostics | where NewInfo1_s == "xyz"

Vid ett senare tillfälle skickar en annan resurs data till AzureDiagnostics som lägger till nya dimensioner som kallas NewInfo2 och NewInfo3. Eftersom tabellen har nått 500 kolumner på den här arbetsytan hamnar de nya data i kolumnen AdditionalFields :

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

Du kan fortfarande fråga efter dessa data, men du måste extrahera dem från egenskapsväskan med någon av de dynamiska egenskapsoperatorerna i KQL:

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

Tips om hur du AdditionalFields använder kolumnen

Även om bästa praxis för frågor, till exempel att alltid filtrera efter tid som den första satsen i frågan, bör följas, finns det några andra rekommendationer som du bör överväga när du arbetar med AdditionalFields:

  • Du måste typecast-data innan du utför ytterligare åtgärder på den. Om du till exempel har en kolumn med namnet Perf1Sec_i och en egenskap i AdditionalFields med namnet Perf2Sec, och du vill beräkna total perf genom att lägga till båda värdena, kan du använda följande: AzureDiagnostics | extend TotalPerfSec = Perf1Sec_i + toint(AdditionalFields.Perf2Sec) | .....
  • Använd where-satser för att minska datavolymen så mycket som möjligt innan du skriver någon komplex logik för att avsevärt förbättra prestandan. TimeGenerated är en kolumn som alltid bör reduceras till minsta möjliga fönster. När det gäller AzureDiagnostics bör ett ytterligare filter alltid inkluderas överst i frågan kring de resurstyper som efterfrågas med hjälp av kolumnen ResourceType .
  • När du kör frågor mot stora mängder data är det ibland mer effektivt att göra ett filter på AdditionalFields som helhet i stället för att parsa dem. För stora datavolymer AzureDiagnostics | where AdditionalFields has "Perf2Sec" är det till exempel ofta effektivare än AzureDiagnostics | where isnotnull(toint(AdditionalFields.Perf2Sec)).

Resurser som använder Azure Diagnostics-läge

Följande tjänster använder Azure-diagnostikläge för sina resursloggar och skickar data till Azure Diagnostics-tabellen. Mer information om den här konfigurationen finns i Azure-resursloggar.

Kommentar

Alla andra resurser skickar data till resursspecifika tabeller.

Servicenamn resourceType
MicrosoftSqlAzureTelemetryv3 microsoft.sql/servrar/databaser
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/databaser
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 Diagnostics-läge eller resursspecifikt läge

Följande tjänster använder antingen Azure-diagnostikläge eller resursspecifikt läge för sina resursloggar beroende på konfigurationen för diagnostikinställningar. När du använder resursspecifikt läge skickar dessa resurser inte data till AzureDiagnostics-tabellen. Mer information om den här konfigurationen finns i Azure-resursloggar.

Servicenamn resourceType
API Management Services Microsoft.ApiManagement
Azure Cosmos DB Microsoft.DocumentDB/databaseAccounts
Datafabriker (V2) Microsoft.DataFactory
Recovery Services-valv(säkerhetskopiering) Microsoft.RecoveryServices/valv
Brandväggar Microsoft.Network/azureFirewalls

AzureDiagnostics-tabellkolumner

Column Type Beskrivning
action_id_s String
action_name_s String
action_s String
ActivityId_g GUID
AdditionalFields
AdHocOrScheduledJob_s String
application_name_s String
audit_schema_version_d Dubbel
avg_cpu_percent_s String
avg_mean_time_s String
backendHostname_s String
Caller_s String
callerId_s String
CallerIPAddress String
calls_s String
Kategori String
client_ip_s String
clientInfo_s String
clientIP_s String
clientIp_s String
clientIpAddress_s String
clientPort_d Dubbel
code_s String
collectionName_s String
conditions_destinationIP_s String
conditions_destinationPortRange_s String
conditions_None_s String
conditions_protocols_s String
conditions_sourceIP_s String
conditions_sourcePortRange_s String
CorrelationId String
count_executions_d Dubbel
cpu_time_d Dubbel
database_name_s String
database_principal_name_s String
DatabaseName_s String
db_id_s String
direction_s String
dop_d Dubbel
duration_d Dubbel
duration_milliseconds_d Dubbel
DurationMs BigInt
ElasticPoolName_s String
endTime_t Datum/tid
Environment_s String
error_code_s String
error_message_s String
errorLevel_s String
event_class_s String
event_s String
event_subclass_s String
event_time_t Datum/tid
EventName_s String
execution_type_d Dubbel
executionInfo_endTime_t Datum/tid
executionInfo_exitCode_d Dubbel
executionInfo_startTime_t Datum/tid
host_s String
httpMethod_s String
httpStatus_d Dubbel
httpStatusCode_d Dubbel
httpStatusCode_s String
httpVersion_s String
id_s String
identity_claim_appid_g GUID
identity_claim_ipaddr_s String
instanceId_s String
interval_end_time_d Dubbel
interval_start_time_d Dubbel
ip_s String
is_column_permission_s String
isAccessPolicyMatch_b Bool
JobDurationInSecs_s String
JobFailureCode_s String
JobId_g GUID
jobId_s String
JobOperation_s String
JobOperationSubType_s String
JobStartDateTime_s String
JobStatus_s String
JobUniqueId_g GUID
Nivå String
log_bytes_used_d Dubbel
logical_io_reads_d Dubbel
logical_io_writes_d Dubbel
LogicalServerName_s String
macAddress_s String
matchedConnections_d Dubbel
max_cpu_time_d Dubbel
max_dop_d Dubbel
max_duration_d Dubbel
max_log_bytes_used_d Dubbel
max_logical_io_reads_d Dubbel
max_logical_io_writes_d Dubbel
max_num_physical_io_reads_d Dubbel
max_physical_io_reads_d Dubbel
max_query_max_used_memory_d Dubbel
max_rowcount_d Dubbel
max_time_s String
mean_time_s String
Meddelande String
min_time_s String
msg_s String
num_physical_io_reads_d Dubbel
object_id_d Dubbel
object_name_s String
OperationName String
OperationVersion String
partitionKey_s String
physical_io_reads_d Dubbel
plan_id_d Dubbel
policy_s String
policyMode_s String
primaryIPv4Address_s String
priority_d Dubbel
properties_enabledForDeployment_b Bool
properties_enabledForDiskEncryption_b Bool
properties_enabledForTemplateDeployment_b Bool
properties_s String
properties_sku_Family_s String
properties_sku_Name_s String
properties_tenantId_g GUID
query_hash_s String
query_id_d Dubbel
query_max_used_memory_d Dubbel
query_plan_hash_s String
query_time_d Dubbel
querytext_s String
receivedBytes_d Dubbel
Region_s String
requestCharge_s String
requestQuery_s String
requestResourceId_s String
requestResourceType_s String
requestUri_s String
reserved_storage_mb_s String
Resurs String
resource_actionName_s String
resource_location_s String
resource_originRunId_s String
resource_resourceGroupName_s String
resource_runId_s String
resource_subscriptionId_g GUID
resource_triggerName_s String
resource_workflowId_g GUID
resource_workflowName_s String
ResourceGroup String
_ResourceId String En unik identifierare för resursen som posten är associerad med
ResourceProvider String
ResourceProvider String
ResourceType String
ResourceType String
response_rows_d Dubbel
resultCode_s String
ResultDescription String
ResultDescription String
resultDescription_ChildJobs_s String
resultDescription_ErrorJobs_s String
resultMessage_s String
ResultSignature String
ResultType String
ResultType String
rootCauseAnalysis_s String
routingRuleName_s String
rowcount_d Dubbel
ruleName_s String
RunbookName_s String
RunOn_s String
schema_name_s String
sentBytes_d Dubbel
sequence_group_id_g GUID
sequence_number_d Dubbel
server_principal_sid_s String
session_id_d Dubbel