Freigeben über


AzureDiagnostics

Speichert Ressourcenprotokolle für Azure-Dienste, die den Azure-Diagnosemodus verwenden. Ressourcenprotokolle beschreiben den internen Betrieb von Azure-Ressourcen.

Das Ressourcenprotokoll für jeden Azure-Dienst verfügt über einen eindeutigen Satz von Spalten. Die Tabelle „AzureDiagnostics“ enthält die gängigsten Spalten, die von Azure-Diensten verwendet werden. Enthält ein Ressourcenprotokoll eine Spalte, die noch nicht in der Tabelle „AzureDiagnostics“ vorhanden ist, wird diese Spalte bei der ersten Datensammlung hinzugefügt. Ist die maximale Anzahl von 500 Spalten erreicht, werden Daten für alle zusätzlichen Spalten einer dynamischen Spalte hinzugefügt.

Azure-Dienste, die ressourcenspezifische Modus verwenden, speichern Daten in einer tabelle, die für diesen Dienst spezifisch ist, und verwenden die AzureDiagnostics-Tabelle nicht. Ausführliche Informationen zu den Unterschieden finden Sie in den Azure-Ressourcenprotokollen . Weitere Informationen finden Sie unter "Ressourcen" im Azure-Diagnose Modus für die Dienste, die Azure-Diagnose verwenden.

Hinweis

Die AzureDiagnostics-Tabelle ist eine benutzerdefinierte Protokolltabelle, die exklusiv von der Azure Monitor-Pipeline erstellt wird, wenn eine Azure-Ressource zum ersten Mal mit dem Senden von Protokollen im Azure-Diagnose Modus beginnt. Im Gegensatz zu anderen Tabellen kann die AzureDiagnostics-Tabelle nicht über eine ARM-Vorlage oder Tabellen-API erstellt werden. Daher ist es nicht möglich, die Standardaufbewahrungswerte der Tabelle vor der Erstellung zu ändern.

Spalte "AdditionalFields"

Im Gegensatz zu anderen Tabellen ist AzureDiagnostics aufgrund des breiten Sortiments von Azure-Ressourcen, die daten an diese Tabelle senden können, wesentlich anfälliger für die 500 Spaltenbegrenzung für jede Tabelle in einem Log Analytics-Arbeitsbereich. Um sicherzustellen, dass aufgrund der Anzahl der aktiven Spalten, die diesen Grenzwert von 500 Spalten überschreiten, keine Daten verloren gehen, wird die Erstellung von AzureDiagnostics-Spalten auf eine andere Weise als andere Tabellen behandelt.

Die Tabelle "AzureDiagnostics" in jedem Arbeitsbereich enthält mindestens die gleichen 200 Spalten. Für Arbeitsbereiche, die vor dem 19. Januar 2021 erstellt wurden, enthält die Tabelle auch alle Spalten, die bereits vor diesem Datum vorhanden waren. Wenn Daten an eine Spalte gesendet werden, die noch nicht vorhanden ist:

  • Wenn die Gesamtanzahl der Spalten in AzureDiagnostics im aktuellen Arbeitsbereich 500 nicht überschreitet, wird eine neue Spalte wie bei jeder anderen Tabelle erstellt.
  • Wenn die Gesamtanzahl der Spalten bei oder über 500 liegt, werden die überschüssigen Daten einer dynamischen Eigenschaftenbehälterspalte namens AdditionalFields als Eigenschaft hinzugefügt.

Beispiel

Um dieses Verhalten zu veranschaulichen, stellen Sie sich vor, dass die AzureDiagnostics-Tabelle in unserem Arbeitsbereich wie folgt aussieht:

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

Eine Ressource, die Daten an AzureDiagnostics sendet, fügt dann eine neue Dimension zu ihren Daten hinzu, die sie NewInfo1 aufrufen. Da die Tabelle immer noch weniger als 500 Spalten enthält, fügt ein Ereignis, das Daten für diese neue Dimension enthält, der Tabelle eine neue Spalte hinzu:

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

Sie können diese neuen Daten in einer einfachen Abfrage zurückgeben:

AzureDiagnostics | where NewInfo1_s == "xyz"

Zu einem späteren Zeitpunkt sendet eine andere Ressource Daten an AzureDiagnostics , die neue Dimensionen namens "NewInfo2 " und "NewInfo3" hinzufügen. Da die Tabelle 500 Spalten in diesem Arbeitsbereich erreicht hat, werden die neuen Daten in die Spalte "AdditionalFields " eingefügt:

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

Sie können diese Daten weiterhin abfragen, aber Sie müssen sie mithilfe eines der dynamischen Eigenschaftenoperatoren in KQL aus dem Eigenschaftenbehälter extrahieren:

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

Tipps zur Verwendung der AdditionalFields Spalte

Während die bewährten Methoden der Abfrage, z. B. immer nach Der Zeit filtern, wie die erste Klausel in der Abfrage befolgt werden sollte, gibt es einige weitere Empfehlungen, die Sie beim Arbeiten mit AdditionalFields berücksichtigen sollten:

  • Sie müssenCastdaten eingeben, bevor Sie weitere Vorgänge ausführen. Wenn Sie beispielsweise eine Spalte mit dem Namen Perf1Sec_i und eine Eigenschaft in AdditionalFields namens Perf2Sec haben und die Summe prof berechnen möchten, indem Sie beide Werte hinzufügen, können Sie Folgendes verwenden: AzureDiagnostics | extend TotalPerfSec = Perf1Sec_i + toint(AdditionalFields.Perf2Sec) | ....
  • Verwenden Sie die Stelle, an der Klauseln verwendet werden, um das Datenvolume möglichst gering zu halten, bevor Sie komplexe Logik schreiben, um die Leistung erheblich zu verbessern. TimeGenerated ist eine Spalte, die immer auf das kleinste mögliche Fenster reduziert werden sollte. Bei AzureDiagnostics sollte immer oben in der Abfrage ein zusätzlicher Filter um die Ressourcentypen einbezogen werden, die mithilfe der Spalte "ResourceType" abgefragt werden.
  • Beim Abfragen großer Datenmengen ist es manchmal effizienter, einen Filter für AdditionalFields als Ganzes auszuführen, anstatt sie zu analysieren. Beispielsweise ist für große Datenmengen AzureDiagnostics | where AdditionalFields has "Perf2Sec" oft effizienter als AzureDiagnostics | where isnotnull(toint(AdditionalFields.Perf2Sec)).

Ressourcen mit Azure-Diagnose Modus

Die folgenden Dienste verwenden den Azure-Diagnosemodus für ihre Ressourcenprotokolle und senden Daten an die Azure-Diagnose Tabelle. Details zu dieser Konfiguration finden Sie in den Azure-Ressourcenprotokollen .

Hinweis

Alle anderen Ressourcen senden Daten an ressourcenspezifische Tabellen.

Dienstname 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-Diagnose Modus oder ressourcenspezifischer Modus

Die folgenden Dienste verwenden entweder den Azure-Diagnosemodus oder den ressourcenspezifischen Modus für ihre Ressourcenprotokolle, abhängig von der Konfiguration der Diagnoseeinstellungen. Wenn Sie den ressourcenspezifischen Modus verwenden, senden diese Ressourcen keine Daten an die AzureDiagnostics-Tabelle. Details zu dieser Konfiguration finden Sie in den Azure-Ressourcenprotokollen .

Dienstname resourceType
API-Verwaltungsdienste Microsoft.ApiManagement
Azure Cosmos DB Microsoft.DocumentDB/databaseAccounts
Data Factory-Instanzen (V2) Microsoft.DataFactory
Recovery Services Vaults(Backup) Microsoft.RecoveryServices/vaults
Firewalls Microsoft.Network/azureFirewalls

AzureDiagnostics-Tabellenspalten

Spalte Type Beschreibung
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 Double
avg_cpu_percent_s String
avg_mean_time_s String
backendHostname_s String
Caller_s String
callerId_s String
CallerIPAddress String
calls_s String
Category String
client_ip_s String
clientInfo_s String
clientIP_s String
clientIp_s String
clientIpAddress_s String
clientPort_d Double
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 Double
cpu_time_d Double
database_name_s String
database_principal_name_s String
DatabaseName_s String
db_id_s String
direction_s String
dop_d Double
duration_d Double
duration_milliseconds_d Double
DurationMs BigInt
ElasticPoolName_s String
endTime_t DateTime
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 DateTime
EventName_s String
execution_type_d Double
executionInfo_endTime_t DateTime
executionInfo_exitCode_d Double
executionInfo_startTime_t DateTime
host_s String
httpMethod_s String
httpStatus_d Double
httpStatusCode_d Double
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 Double
interval_start_time_d Double
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
Ebene String
log_bytes_used_d Double
logical_io_reads_d Double
logical_io_writes_d Double
LogicalServerName_s String
macAddress_s String
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 String
mean_time_s String
`Message` String
min_time_s String
msg_s String
num_physical_io_reads_d Double
object_id_d Double
object_name_s String
Vorgangsname String
OperationVersion String
partitionKey_s String
physical_io_reads_d Double
plan_id_d Double
policy_s String
policyMode_s String
primaryIPv4Address_s String
priority_d Double
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 Double
query_max_used_memory_d Double
query_plan_hash_s String
query_time_d Double
querytext_s String
receivedBytes_d Double
Region_s String
requestCharge_s String
requestQuery_s String
requestResourceId_s String
requestResourceType_s String
requestUri_s String
reserved_storage_mb_s String
Resource 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 Ein eindeutiger Bezeichner für die Ressource, der der Datensatz zugeordnet ist.
ResourceProvider String
ResourceProvider String
ResourceType String
ResourceType String
response_rows_d Double
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 Double
ruleName_s String
RunbookName_s String
RunOn_s String
schema_name_s String
sentBytes_d Double
sequence_group_id_g Guid
sequence_number_d Double
server_principal_sid_s String
session_id_d Double