Débuter avec Log Analytics : Partie 6 – Créer votre lab à partir de fausses données dans un CSV

Dans cet article nous verrons comment créer un lab Log Analytics avec de fausses données à partir d’un CSV.

La série d’article

Contexte

L’idée sera de créer un lab Log Analytics.
Nous importerons des données dans un Workspace.
Ces données seront importées depuis un CSV.
A partir de ces données il sera alors possible de tester les différents aspects de Log Analytics, queries KQL, création de workbook…

Notre lab de données

La première étape sera de créer un CSV contenant les fausses données que nous allons importer.
Dans notre exemple le CSV comportera des données concernant l’état de mises à jour BIOS d’un parc lenovo.
Ci-dessous un aperçu du CSV:

Importer les données dans Log Analytics

Informations requises

la première étape est de récupérer les informations nécessaires pour intégrer des données dans Log Analytics.

  • Workspace ID
  • Primary key
  • Nom du Custom Log à créer ou mettre à jour

Vous pouvez trouver le Workspace ID et la primary Key dans la partie Agents management :

Importation des données

Nous allons tout d’abord configurer quelques variables avec les infos récoltées précédemment.

$CustomerId = <Your Log Analytics Workspace ID>
$Custom_Logs = "<Custom Log name>"
$SharedKey = <Your Log Analytics SharedKey>

Le Custom log sera créé lors de la première opération puis mis à jour ensuite.
Toutes les données seront importées dans ce Custom Log.
Pour importer les données nous utiliserons le script suivant :

$CustomerId = ""
$TimeStampField = ""
$Custom_Logs = "LenovoBIOSreport"
$SharedKey = ''
 
# Log analytics functions
Function Build-Signature ($customerId, $sharedKey, $date, $contentLength, $method, $contentType, $resource)
{
    $xHeaders = "x-ms-date:" + $date
    $stringToHash = $method + "`n" + $contentLength + "`n" + $contentType + "`n" + $xHeaders + "`n" + $resource
 
    $bytesToHash = [Text.Encoding]::UTF8.GetBytes($stringToHash)
    $keyBytes = [Convert]::FromBase64String($sharedKey)
 
    $sha256 = New-Object System.Security.Cryptography.HMACSHA256
    $sha256.Key = $keyBytes
    $calculatedHash = $sha256.ComputeHash($bytesToHash)
    $encodedHash = [Convert]::ToBase64String($calculatedHash)
    $authorization = 'SharedKey {0}:{1}' -f $customerId,$encodedHash
    return $authorization
}
 
 
# Create the function to create and post the request
Function Post-LogAnalyticsData($customerId, $sharedKey, $body, $logType)
{
    $method = "POST"
    $contentType = "application/json"
    $resource = "/api/logs"
    $rfc1123date = [DateTime]::UtcNow.ToString("r")
    $contentLength = $body.Length
    $signature = Build-Signature `
        -customerId $customerId `
        -sharedKey $sharedKey `
        -date $rfc1123date `
        -contentLength $contentLength `
        -method $method `
        -contentType $contentType `
        -resource $resource
    $uri = "https://" + $customerId + ".ods.opinsights.azure.com" + $resource + "?api-version=2016-04-01"
 
    $headers = @{
        "Authorization" = $signature;
        "Log-Type" = $logType;
        "x-ms-date" = $rfc1123date;
        "time-generated-field" = $TimeStampField;
    }
 
    $response = Invoke-WebRequest -Uri $uri -Method $method -ContentType $contentType -Headers $headers -Body $body -UseBasicParsing
    return $response.StatusCode
 
}
 
$Test_LA_File = <CSV path>
$Test_LA_CSV = import-csv $Test_LA_File
 
$InfoToImport_Json = $Test_LA_CSV | ConvertTo-Json
 
$params = @{
    CustomerId = $customerId
    SharedKey  = $sharedKey
    Body       = ([System.Text.Encoding]::UTF8.GetBytes($InfoToImport_Json))
    LogType    = $Custom_Logs
}
$LogResponse = Post-LogAnalyticsData @params  

Visualiser les données dans Log Analytics

Après avoir importé les données, un nouveau Custom Log sera créé.
Nous pourrons ensuite créer un workbook à partir de ces données.
Nous allons ici juste lister le contenu des données comme dans le CSV.
Nous allons procéder comme ci-dessous :

  1. Allez dans Workbooks
  1. Cliquez sur New
  2. Supprimez la query par défaut
  1. Cliquez sur Add > Add query
  1. Saisissez la requête suivante :
LenovoBIOSreport_CL
| project ComputerName_s, DeviceModel_s, UserName_s, CurrentVersionBIOS_s, NewVersionBIOS_s, BIOSStatus_s, NotUpdatedSince_s
  1. Ci-dessous le résultat :
  1. Cliquez sur Done editing
  2. Ci-dessous le résultat :

A propos de l'auteur

Consultant Modern Workplace travaillant principalement sur ce qui tourne autour du poste de travail (MDT, SCCM, Intune, Graph...) et l’automatisation avec PowerShell. MVP Microsoft (depuis 5ans) et auteur pour ENI, il publie régulièrement sur son blog et gère différents groupes Facebook, PowerShell et WPF (~9000 membres), Windows Autopilot (~6900membres).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *