Cliquez pour évaluer cet article !
0 avis

Dans cet article, nous allons voir comment envoyer des données depuis vos appareils Intune vers Log Analytics v2 en utilisant la nouvelle API : Log Ingestion API.

API v1 vs API v2

API v1 : HTTP Data Collector API

Dans mes précédents articles sur Log Analytics, j’utilise l’API HTTP Data Collector API pour envoyer des données dans Log Analytics.
Je l’utilise également dans tous mes scripts de remédiation.
Cette API est désormais obsolète et sera retirée en 2026 (voir la documentation Microsoft à ce sujet).

API v2 : Log Ingestion API

Une nouvelle API existe pour envoyer des données à Log Analytics : Log Ingestion API.

Ci-dessous les avantages de cette nouvelle API :

  • Prise en charge des transformations : permet de modifier les données avant qu’elles ne soient ingérées dans la table cible, y compris le filtrage et la manipulation des données.
  • Envoi de données à plusieurs destinations.
  • Gestion du schéma de la table cible : noms des colonnes, ajout de nouvelles colonnes lorsque le schéma des données source change.

Prérequis

  • Un espace de travail Log Analytics où envoyer les données
  • Droits de contributeur au minimum sur cet espace
  • Autorisations pour créer des règles de collecte de données (DCR) dans cet espace
  • Un groupe de ressources pour le point de terminaison de collecte de données (DCE) et les DCR

De quoi avons-nous besoin ?

  • Une application Microsoft Entra pour les appels API
  • Un point de terminaison de collecte de données (DCE)
  • Une ou plusieurs règles de collecte de données (DCR)

Pour envoyer des données personnalisées avec la nouvelle API, il est nécessaire de configurer un DCE et un DCR :

  • DCE (Data Collection Endpoint) : point de connexion utilisé par l’API Log Ingestion pour envoyer des données dans Azure Monitor.
  • DCR (Data Collection Rule) : règle permettant de définir quelles données collecter, comment les transformer et où les envoyer.
    Lors de la création de la DCR, la structure de la table doit être spécifiée dans un fichier JSON.
    Le DCE et la DCR doivent être dans la même région que l’espace de travail Log Analytics pour recevoir les données.

La 1ère étape consiste à créer un DCE qui sera utilisé pour ingérer des journaux personnalisés dans le pipeline d’ingestion de données. Azure Monitor transforme ensuite les données et les envoie vers l’espace de travail et la table Log Analytics en fonction de l’identifiant DCR.

La seconde étape consiste à créer un DCR (Data Collection Rule) en créant une nouvelle table dans le workspace Log Analytics.

Création de l’application Entra

  1. Allez dans le portail Entra
  2. Allez dans App registrations
  3. Cliquez sur New registration
  4. Saisissez un nom
  5. Laissez les options par défaut
  6. Cliquez sur Register
  7. Une fois l’application créée, allez dans Overview et copiez l’Application (client) ID
  8. Allez dans Certificates & secrets > Client secrets > New client secret
  9. Saisissez un nom, choisissez une durée, et cliquez sur Add
  10. Une fois créé, copiez le secret

Création du DCE

  1. Allez dans Azure Monitor
  2. Allez dans Data Collection Endpoints
  1. Cliquez sur Create
  1. Saisissez un nom, choisissez une abonnement et un groupe de ressources, puis sélectionnez une région (identique à celle de l’espace de travail).
  2. Cliquez sur Review + Create, puis sur Create
  3. Une fois créé, copiez la valeur Logs Ingestion depuis Overview

Préparation des données

Dans cet exemple, nous collecterons tous les pilotes (non Microsoft) installés sur les appareils.
Pour cela, nous utiliserons un script PowerShell (ci-dessous) qui collectera les données via la classe WMI.

$win32_computersystem = get-ciminstance win32_computersystem
$Manufacturer = $win32_computersystem.Manufacturer
$Model = $win32_computersystem.Model
If($Manufacturer -like "*lenovo*")
    {
        $Model_FriendlyName = $win32_computersystem.SystemFamily
        $Get_Current_Model =  $Model.Substring(0,4)
    }Else
    {
        $Model_FriendlyName = $Model
        $Get_Current_Model = $Model_FriendlyName
    }   
 
$PNPSigned_Drivers = get-ciminstance win32_PnpSignedDriver | where {($_.manufacturer -ne "microsoft") -and ($_.driverprovidername -ne "microsoft") -and`
($_.DeviceName -ne $null)} | select-object @{label="TimeGenerated";Expression={get-date -Format "dddd MM/dd/yyyy HH:mm K"}},`
@{Label="DeviceName";Expression={$env:computername}},`
@{Label="ModelFriendlyName";Expression={$Model_FriendlyName}},`
@{Label="DeviceManufacturer";Expression={$Manufacturer}},`
@{Label="Model";Expression={$Model}},`
@{Label="DriverName";Expression={$_.DeviceName}},DriverVersion,`
@{Label="DriverDate";Expression={$_.ConvertToDateTime($_.DriverDate)}},`
DeviceClass, DeviceID, manufacturer,InfName,Location

Une fois le code exécuté sur un appareil, sauvegardez le résultat dans un fichier JSON en utilisant le code suivant:

$Drivers_Json = $PNPSigned_Drivers | ConvertTo-Json
$Drivers_Json | out-file .\DriversInventory.json

Création du DCR

  1. Allez dans votre workspace Log Analytics
  2. Allez dans Tables > Create > New custom log (DCR based)
  1. Saisissez un nom (sans _CL)
  2. Cliquez sur Create a new data collection rule
  1. Sélectionnez une abonnement, un groupe de ressources et un nom pour le DCR
  1. Chargez le fichier JSON contenant la structure de la table en cliquant sur Browse for file
  1. Cliquez sur Next, puis Create
  2. Allez ensuite dans Monitor
  3. Allez dans Data Collection Rules
  1. Allez dans Overview
  2. Cliquez sur JSON view
  3. Copiez le contenu du champ immutableid

Donner les permissions nécessaires à l’application

  1. Allez dans votre DCR
  2. Allez dans Access Control (IAM) > Add role assignment
  1. Sélectionnez Monitoring Metrics Publisher
  1. Cliquez sur Suivant
  2. Cliquez sur User, group
  1. Cliquez sur Select members
  2. Sélectionnez l’app registration

Envoyer des données personnalisées avec PowerShell

Pour envoyer des données, utilisez un script PowerShell. Une fois terminé, accédez à votre espace de travail Log Analytics, puis à Logs > Custom log.
Vous y verrez votre nouveau journal, par exemple Drivers_Inventory_CL, contenant les données collectées.

J’utilise généralement la partie Remédiation pour exécuter des scripts PowerShell sur les postes afin de collecter des infos et les envoyer dans Log Analytics.

Vous trouverez le script associé pour Log Analytics v2, ici.

Il faudra ensuite compléter les variables suivantes :

$tenantId = "" # the tenant ID in which the Data Collection Endpoint resides
$appId = "" # the app ID created and granted permissions
$appSecret = "" #the secret created for the above app - never store your secrets in the source code
 
$DcrImmutableId = "" # id available in DCR > JSON view > immutableId
$DceURI = "" # available in DCE > Logs Ingestion value
$Table = "Drivers_Inventory_CL" # custom log to create

Notez cet article

Vous avez aimé cet article ?

Rendez-le plus visible auprès des internautes en lui mettant une bonne note.

Cliquez pour évaluer cet article !
0 avis

Articles pouvant vous intéresser