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. Die folgenden Ressourcentypen finden Sie für die Dienste, die jede Methode verwenden. Ausführliche Informationen zu den Unterschieden finden Sie in den Azure-Ressourcenprotokollen .
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 Arbeitspunkt 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 allgemeine bewährte Methoden für Abfragen, z. B. immer nach 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üssen Daten eingeben, bevor Sie weitere Vorgänge ausführen. Wenn z. B. eine Spalte Perf1Sec_i sowie eine Eigenschaft in AdditionalFields namens Perf2Sec vorhanden ist und Sie die Summe perf berechnen möchten, indem Sie beide Werte hinzufügen, verwenden Sie etwa Folgendes:
AzureDiagnostics | extend TotalPerfSec = Perf1Sec_i + toint(AdditionalFields.Perf2Sec) | ....
. - Verwenden Sie , wo Klauseln verwendet werden, um das Datenvolumen möglichst gering zu halten, bevor Sie eine komplexe Logik schreiben, um die Leistung erheblich zu verbessern. TimeGenerated ist eine Spalte, die immer auf das kleinste mögliche Fenster reduziert werden sollte. Im Fall von AzureDiagnostics sollte auch immer oben in der Abfrage ein zusätzlicher Filter um die Ressourcentypen einbezogen werden, die mithilfe der Spalte "ResourceType " abgefragt werden.
- Beim Abfragen sehr 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))
.
Modus „Azure-Diagnose“
Die folgenden Dienste verwenden den Azure-Diagnosemodus für ihre Ressourcenprotokolle und senden Daten an die Azure-Diagnose Tabelle.
- Analysis Services
- Anwendungsgateways
- Automation-Konten
- Serverkonzepte in Azure Database for MariaDB
- Azure Database for MySQL-Server
- Azure Database for PostgreSQL-Server
- Azure Database for PostgreSQL-Server V2
- Batch-Konten
- CDN-Profile
- Cognitive Services
- Data Lake Analytics
- DataLake Storage Gen1
- Gerätebereitstellungsdienste
- Digital Twins
- Event Grid-Themen
- Event Hubs
- ExpressRoute-Verbindungen
- Front Door-Instanzen
- Integrationskonten
- Schlüsseltresor
- Kubernetes-Dienste
- Load Balancer
- Logic Apps
- Media Services
- Netzwerkschnittstellen
- Netzwerksicherheitsgruppen
- P2S-VPN-Gateways
- Power BI Embedded
- Öffentliche IP-Adressen
- Recovery Services vaults(Site Recovery)
- Suchdienste
- Service Bus
- SQL-Datenbanken
- SQL-verwaltete Instanzen
- SQL-Server
- Stream Analytics-Aufträge
- Traffic Manager-Profile
- Virtuelle Netzwerke
- Gateways des virtuellen Netzwerks
- VPN-Gateways
Azure-Diagnose Modus oder ressourcenspezifischer Modus
Die folgenden Dienste verwenden je nach Konfiguration entweder den Azure-Diagnosemodus oder den ressourcenspezifischen Modus für ihre Ressourcenprotokolle. Wenn sie den ressourcenspezifischen Modus verwenden, senden sie keine Daten an die AzureDiagnostics-Tabelle. Details zu dieser Konfiguration finden Sie in den Azure-Ressourcenprotokollen .
- API-Verwaltungsdienste
- Azure Cosmos DB
- Data Factory-Instanzen (V2)
- IoT Hub
- Recovery Services Vaults(Backup)
- Firewalls
Kategorien
- Azure-Ressourcen
- Sicherheit
- Network
Lösungen
- LogManagement
Ressourcentypen
- Anwendungsgateways
- CDN-Profile
- Azure Cosmos DB
- Event Grid-Themen
- Event Hubs
- Firewalls
- Schlüsseltresore
- Kubernetes-Dienste
- Recovery Services-Tresore
- Service Bus
- Azure Database for MySQL Flexible Server
- Azure-Datenbank für flexible Server für PostgreSQL
- Media Services
- Analysis Services
- Batchkonten
- Cognitive Services
- Event Grid-Partnernamespaces
- Event Grid-Partnerthemen
- Event Grid-Systemthemen
- Kubernetes mit Azure Arc-Unterstützung
- Bereitgestellte Azure Arc-Cluster
- IoT Hub
- Logic Apps
- API Management-Dienste
- Automation-Konto
- Data Factorys
- Data Lake Storage Gen1
- Data Lake Analytics
- Power BI Embedded
- SQL Managed Instance
- SQL-Server
- SQL-Datenbanken
- Azure-Datenbank für MySQL-Server
- Azure-Datenbank für PostgreSQL-Server
- Azure-Datenbank für PostgreSQL-Server V2
- Azure-Datenbank für MariaDB-Server
- Gerätebereitstellungsdienste
- ExpressRoute-Verbindungen
- Front Door-Instanzen
- Netzwerkschnittstellen
- Netzwerksicherheitsgruppen
- Öffentliche IP-Adressen
- Traffic Manager-Profile
- Gateways für virtuelle Netzwerke
- Gateways für virtuelles privates Netzwerk
- Virtuelle Netzwerke
- Suchdienste
- Stream Analytics-Aufträge
Spalten
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 |