Partager via


AzureDiagnostics

Stocke les journaux de ressources pour les services Azure qui utilisent le mode Azure Diagnostics. Les journaux de ressources décrivent le fonctionnement interne des ressources Azure.

Le journal des ressources de chaque service Azure possède un ensemble unique de colonnes. La table AzureDiagnostics comprend les colonnes les plus courantes utilisées par les services Azure. Si un journal des ressources contient une colonne qui n’existe pas encore dans la table AzureDiagnostics, cette colonne est ajoutée la première fois que les données sont collectées. Si le nombre maximal de 500 colonnes est atteint, les données des colonnes supplémentaires sont ajoutées à une colonne dynamique.

Les services Azure qui utilisent le mode spécifique aux ressources stockent des données dans une table spécifique à ce service et n’utilisent pas la table AzureDiagnostics. Pour plus d’informations sur les différences, consultez les journaux des ressources Azure. Consultez ressources en mode Diagnostics Azure pour les services qui utilisent Diagnostics Azure.

Remarque

La table AzureDiagnostics est une table de journaux personnalisée créée exclusivement par le pipeline Azure Monitor la première fois qu’une ressource Azure commence à envoyer des journaux en mode Diagnostics Azure. Contrairement à d’autres tables, la table AzureDiagnostics ne peut pas être créée via un modèle ARM ou une API de tables. Par conséquent, il n’est pas possible de modifier les valeurs de rétention par défaut de la table avant sa création.

Colonne AdditionalFields

Contrairement à d’autres tables, AzureDiagnostics est beaucoup plus susceptible de dépasser la limite de 500 colonnes imposée pour n’importe quelle table d’un espace de travail Log Analytics en raison d’un large éventail de ressources Azure capables d’envoyer des données à cette table. Pour vous assurer qu’aucune donnée n’est perdue en raison du nombre de colonnes actives dépassant cette limite de 500 colonnes, la création de colonnes AzureDiagnostics est gérée de différentes manières par d’autres tables.

La table AzureDiagnostics de chaque espace de travail contient au minimum 200 colonnes. Pour les espaces de travail créés avant le 19 janvier 2021, la table contient également toutes les colonnes déjà en place avant cette date. Lorsque les données sont envoyées à une colonne qui n’est pas déjà en place :

  • Si le nombre total de colonnes dans AzureDiagnostics dans l’espace de travail actuel ne dépasse pas 500, une nouvelle colonne est créée comme avec n’importe quelle autre table.
  • Si le nombre total de colonnes est supérieur ou égal à 500, les données excédentaires sont ajoutées à une colonne de conteneur de propriétés dynamique appelée AdditionalFields en tant que propriété.

Exemple

Pour illustrer ce comportement, imaginez qu’à partir de (date de déploiement) la table AzureDiagnostics dans notre espace de travail se présente comme suit :

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

Ressource qui envoie des données à AzureDiagnostics puis ajoute une nouvelle dimension à ses données qu’ils appellent NewInfo1. Étant donné que la table comporte toujours moins de 500 colonnes, la première fois qu’un événement se produit qui contient des données pour cette nouvelle dimension ajoute une nouvelle colonne à la table :

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

Vous pouvez retourner ces nouvelles données dans une requête simple :

AzureDiagnostics | where NewInfo1_s == "xyz"

À une date ultérieure, une autre ressource envoie des données à AzureDiagnostics qui ajoute de nouvelles dimensions appelées NewInfo2 et NewInfo3. Étant donné que la table a atteint 500 colonnes dans cet espace de travail, les nouvelles données entrent dans la colonne AdditionalFields :

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

Vous pouvez toujours interroger ces données, mais vous devez l’extraire du conteneur de propriétés à l’aide de l’un des opérateurs de propriétés dynamiques dans KQL :

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

Conseils sur l’utilisation de la AdditionalFields colonne

Bien que les meilleures pratiques de requête telles que le filtrage toujours par heure comme la première clause de la requête soient suivies, il existe d’autres recommandations que vous devez prendre en compte lors de l’utilisation de AdditionalFields :

  • Vous devez taper des données decast avant d’effectuer d’autres opérations sur celle-ci. Par exemple, si vous avez une colonne appelée Perf1Sec_i et une propriété dans AdditionalFields appelée Perf2Sec et que vous souhaitez calculer le nombre total de perf en ajoutant les deux valeurs, vous pouvez utiliser ce qui suit : AzureDiagnostics | extend TotalPerfSec = Perf1Sec_i + toint(AdditionalFields.Perf2Sec) | ....
  • Utilisez where clauses pour réduire le volume de données au plus petit possible avant d’écrire une logique complexe pour améliorer considérablement les performances. TimeGenerated est une colonne qui doit toujours être réduite à la plus petite fenêtre possible. Dans le cas d’AzureDiagnostics , un filtre supplémentaire doit toujours être inclus en haut de la requête autour des types de ressources interrogés à l’aide de la colonne ResourceType .
  • Lors de l’interrogation de grands volumes de données, il est parfois plus efficace d’effectuer un filtre sur AdditionalFields dans son ensemble plutôt que de l’analyser. Par exemple, pour de grands volumes de données, AzureDiagnostics | where AdditionalFields has "Perf2Sec" est souvent plus efficace que AzureDiagnostics | where isnotnull(toint(AdditionalFields.Perf2Sec)).

Ressources utilisant le mode Diagnostics Azure

Les services suivants utilisent le mode diagnostics Azure pour leurs journaux de ressources et envoient des données à la table Diagnostics Azure. Pour plus d’informations sur cette configuration, consultez les journaux des ressources Azure.

Remarque

Toutes les autres ressources envoient des données à des tables spécifiques aux ressources.

Nom du service 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

mode Diagnostics Azure ou mode spécifique aux ressources

Les services suivants utilisent le mode diagnostics Azure ou le mode spécifique aux ressources pour leurs journaux de ressources en fonction de la configuration des paramètres de diagnostic. Lorsque vous utilisez un mode spécifique aux ressources, ces ressources n’envoient pas de données à la table AzureDiagnostics. Pour plus d’informations sur cette configuration, consultez les journaux des ressources Azure.

Nom du service resourceType
services Gestion des API Microsoft.ApiManagement
Azure Cosmos DB Microsoft.DocumentDB/databaseAccounts
Fabriques de données (V2) Microsoft.DataFactory
Coffres Recovery Services (sauvegarde) Microsoft.RecoveryServices/vaults
Pare-feux Microsoft.Network/azureFirewalls

Colonnes de table AzureDiagnostics

Colonne Type Description
action_id_s Chaîne
action_name_s Chaîne
action_s Chaîne
ActivityId_g Guid
AdditionalFields
AdHocOrScheduledJob_s Chaîne
application_name_s Chaîne
audit_schema_version_d Double
avg_cpu_percent_s Chaîne
avg_mean_time_s Chaîne
backendHostname_s Chaîne
Caller_s Chaîne
callerId_s Chaîne
CallerIPAddress Chaîne
calls_s Chaîne
Category Chaîne
client_ip_s Chaîne
clientInfo_s Chaîne
clientIP_s Chaîne
clientIp_s Chaîne
clientIpAddress_s Chaîne
clientPort_d Double
code_s Chaîne
collectionName_s Chaîne
conditions_destinationIP_s Chaîne
conditions_destinationPortRange_s Chaîne
conditions_None_s Chaîne
conditions_protocols_s Chaîne
conditions_sourceIP_s Chaîne
conditions_sourcePortRange_s Chaîne
CorrelationId Chaîne
count_executions_d Double
cpu_time_d Double
database_name_s Chaîne
database_principal_name_s Chaîne
DatabaseName_s Chaîne
db_id_s Chaîne
direction_s Chaîne
dop_d Double
duration_d Double
duration_milliseconds_d Double
DurationMs BigInt
ElasticPoolName_s Chaîne
endTime_t Date/Heure
Environment_s Chaîne
error_code_s Chaîne
error_message_s Chaîne
errorLevel_s Chaîne
event_class_s Chaîne
event_s Chaîne
event_subclass_s Chaîne
event_time_t Date/Heure
EventName_s Chaîne
execution_type_d Double
executionInfo_endTime_t Date/Heure
executionInfo_exitCode_d Double
executionInfo_startTime_t Date/Heure
host_s Chaîne
httpMethod_s Chaîne
httpStatus_d Double
httpStatusCode_d Double
httpStatusCode_s Chaîne
httpVersion_s Chaîne
id_s Chaîne
identity_claim_appid_g Guid
identity_claim_ipaddr_s Chaîne
instanceId_s Chaîne
interval_end_time_d Double
interval_start_time_d Double
ip_s Chaîne
is_column_permission_s Chaîne
isAccessPolicyMatch_b Bool
JobDurationInSecs_s Chaîne
JobFailureCode_s Chaîne
JobId_g Guid
jobId_s Chaîne
JobOperation_s Chaîne
JobOperationSubType_s Chaîne
JobStartDateTime_s Chaîne
JobStatus_s Chaîne
JobUniqueId_g Guid
Niveau Chaîne
log_bytes_used_d Double
logical_io_reads_d Double
logical_io_writes_d Double
LogicalServerName_s Chaîne
macAddress_s Chaîne
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 Chaîne
mean_time_s Chaîne
Message Chaîne
min_time_s Chaîne
msg_s Chaîne
num_physical_io_reads_d Double
object_id_d Double
object_name_s Chaîne
NomOpération Chaîne
OperationVersion Chaîne
partitionKey_s Chaîne
physical_io_reads_d Double
plan_id_d Double
policy_s Chaîne
policyMode_s Chaîne
primaryIPv4Address_s Chaîne
priority_d Double
properties_enabledForDeployment_b Bool
properties_enabledForDiskEncryption_b Bool
properties_enabledForTemplateDeployment_b Bool
properties_s Chaîne
properties_sku_Family_s Chaîne
properties_sku_Name_s Chaîne
properties_tenantId_g Guid
query_hash_s Chaîne
query_id_d Double
query_max_used_memory_d Double
query_plan_hash_s Chaîne
query_time_d Double
querytext_s Chaîne
receivedBytes_d Double
Région_s Chaîne
requestCharge_s Chaîne
requestQuery_s Chaîne
requestResourceId_s Chaîne
requestResourceType_s Chaîne
requestUri_s Chaîne
reserved_storage_mb_s Chaîne
Ressource Chaîne
resource_actionName_s Chaîne
resource_location_s Chaîne
resource_originRunId_s Chaîne
resource_resourceGroupName_s Chaîne
resource_runId_s Chaîne
resource_subscriptionId_g Guid
resource_triggerName_s Chaîne
resource_workflowId_g Guid
resource_workflowName_s Chaîne
ResourceGroup Chaîne
_ResourceId Chaîne Un identificateur unique de la ressource à laquelle l’enregistrement est associé
ResourceProvider Chaîne
ResourceProvider Chaîne
ResourceType Chaîne
ResourceType Chaîne
response_rows_d Double
resultCode_s Chaîne
ResultDescription Chaîne
ResultDescription Chaîne
resultDescription_ChildJobs_s Chaîne
resultDescription_ErrorJobs_s Chaîne
resultMessage_s Chaîne
ResultSignature Chaîne
ResultType Chaîne
ResultType Chaîne
rootCauseAnalysis_s Chaîne
routingRuleName_s Chaîne
rowcount_d Double
ruleName_s Chaîne
RunbookName_s Chaîne
RunOn_s Chaîne
schema_name_s Chaîne
sentBytes_d Double
sequence_group_id_g Guid
sequence_number_d Double
server_principal_sid_s Chaîne
session_id_d Double