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 alsAzureDiagnostics | 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 |