Del 1: Rapportering på Log Analytics-data | Sette opp det første miljøet

| 5 min lesing

Nylig har jeg utviklet en løsning for å hente ut data fra et Log Analytics-workspace med Azure Data Factory. Da dette ble skrevet, hadde Azure Data Factory ingen innebygd connector for Log Analytics-workspaces, så Log Analytics REST API må brukes i stedet. Dataene lastes deretter inn i en Azure SQL-database for rapportering.

Selv om det er mulig å eksportere M Queries direkte fra Log Analytics til Power BI, dekker dette ikke scenarioer med langtidsoppbevaring. Jeg trodde først dette var en enkel oppgave. Det var feil. I de neste fire innleggene går jeg gjennom stegene for å sette opp det første miljøet, hente ut dataene og til slutt behandle og laste dem inn i SQL-databasen.

Hva trengs for å komme i gang?

  • Azure Subscription – Subscription Owner/Contributor og Azure AD-tillatelser til å distribuere Service Principals
  • PowerShell Core med Az Module installert
    • Installer det dersom det ikke allerede finnes på maskinen din.
    • I dette innlegget bruker jeg Windows Terminal i PowerShell Core-modus på Windows 10, men den vanlige PowerShell Core-ledeteksten er tilstrekkelig.
      • Merk: Jeg bruker ikke Windows PowerShell, for å være OS-agnostisk, slik at du kan følge de samme stegene på Mac, Linux osv.

For å gjøre dette raskere har jeg laget et par ARM-maler og tilhørende PowerShell-skript på GitHub. PowerShell-koden som brukes i de neste stegene, er dokumentert der. Det er verdt å klone mappen til den lokale PC-en.

I senere innlegg må vi distribuere flere ressurser, men de distribueres når de trengs.

Distribuere de første ressursene

PowerShell-referanse i GitHub-repositoriet for denne delen: Deploy Initial Resources.ps1 Deploy Initial Resources oppretter følgende ressurser:

  • Resource Group
  • Azure KeyVault
  • Log Analytics workspace
  • ADLS Gen 2 Data Lake Account
  • Azure Data Factory

(Hvis du ikke har et Azure Subscription, oppretter du ett før du fortsetter.)

  1. Åpne en PowerShell Core-terminal i enten Windows Terminal eller PowerShell Core som administrator, eller med utvidede tillatelser.
  2. Installer Az PowerShell-modulen. Hvis den allerede er installert, kontrollerer du om det finnes oppdateringer. Trykk A og Enter for å stole på repositoriet mens de nyeste modulene lastes ned og installeres. Dette kan ta noen minutter.
    ##Kjør hvis Az PowerShell-modulen ikke allerede er installert
    Install-Module Az -AllowClobber
    
    ##Kjør hvis Az PowerShell-modulen allerede er installert, men oppdateringskontroll kreves
    Update-Module Az
    
  3. Importer Az PowerShell-modulen i gjeldende sesjon.
    Import-Module Az
    
  4. Autentiser mot Azure som vist nedenfor. Hvis tenant eller subscription er en annen enn standarden som er knyttet til Azure AD-identiteten din, kan dette angis på samme kodelinje med bryterne -Tenant eller -Subscription. For å finne Tenant GUID åpner du Azure Portal, kontrollerer at du er logget på riktig tenant og går til Azure Active Directory. Directory GUID bør vises på hjemmesiden. For å finne Subscription GUID bytter du til riktig tenant i Azure Portal, skriver Subscriptions i søkefeltet og trykker Enter. GUID-ene for alle subscriptions du har tilgang til i denne tenanten, vises.
    Connect-AzAccount
    
  5. I PowerShell-terminalen finner du short code for Azure-regionen nærmest deg ved å skrive kommandoen nedenfor.
    Get-AzLocation
    
  6. Angi variablene som skal brukes gjennom hele distribusjonsprosessen.

##Angi parametere som skal brukes av ARM-malen

$resourceGroupName = ‘’ $deploymentLocation = ‘’ ##Må være en location-egenskap fra outputen av forrige kommando $resourceRandomName = ‘’ #Må være globalt unik og på maksimalt seksten tegn $tenantId = (Get-AzTenant).Id $currentUser = (Get-AzContext).Account.Id $principalObjectId = (Get-AzADUser -UserPrincipalName $currentUser).Id

7. Først må en resource group distribueres for å kunne distribuere ressursene som kreves i dette scenarioet. Resource group får navnet fra verdien som er tildelt variabelen **$resourceGroupName**.
```powershell
##Distribuer resource group
New-AzSubscriptionDeployment -Location $deploymentLocation -TemplateFile 'arm-template-resource-group.json' -resourceGroupName $resourceGroupName -deploymentLocation $deploymentlocation
  1. Nå som den er distribuert, distribuerer du ressursene i denne gruppen.
    ##Distribuer ressursene
    New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile 'arm-template-resources.json' -deploymentLocation $deploymentLocation -resourceRandomName $resourceRandomName -tenantId $tenantId -principalObjectId $principalObjectId
    
  2. Verify the newly deployed resources in the Portal

Opprette Azure AD Service Principal

Kodereferansen for neste del ligger i GitHub-repositoriet som Deploy Service Principal and KeyVault Secrets.ps1

For å autentisere vellykket mot Log Analytics REST API bør du opprette en Azure AD Service Principal med avgrensede tillatelser, slik at kommunikasjon via Azure Data Factory blir mulig.

  1. Angi først noen variabler som skal brukes i de følgende kommandoene.
    ##Angi variablene våre
    $vaultName = $resourceRandomName+,"-kv"
    $servicePrincipalName = 'LogAnalyticsReaderService'
    $servicePrincipalScope = '/subscriptions/<subscriptionid>/resourceGroups/<resourcegroupname>/providers/Microsoft.OperationalInsights/workspaces/<workspacename>'
    
  2. Opprett Azure AD Service Principal.
    ##Opprett Azure AD Service Principal
    $createServicePrincipal = New-AzADServicePrincipal -DisplayName $servicePrincipalName -Role 'Log Analytics Reader' -Scope $servicePrincipalScope
    
  3. Lagre til slutt client ID og client secret i Key Vault.
    ##Lagre service principal client ID i Key Vault
    Set-AzKeyVaultSecret -VaultName $vaultName -Name 'log-analytics-reader-service-client-id' -SecretValue (ConvertTo-SecureString -AsPlainText ($createServicePrincipal.ApplicationId))
    ##Lagre service principal secret i Key Vault
    Set-AzKeyVaultSecret -VaultName $vaultName -Name 'log-analytics-reader-service-secret' -SecretValue $createServicePrincipal.Secret
    

Gi Azure Data Factory tillatelse til å lese secrets fra Azure Key Vault

  1. Gå til den nylig distribuerte Key Vault-en i portalen og åpne Access Policies. Der står det at Azure role-based access control er aktivert. Denne funksjonen er fortsatt i preview og passer derfor ikke for produksjonsscenarioer. Velg Vault access policy og klikk Save.
  2. Klikk Add Access Policy.
  3. Angi omfanget av tillatelsene for policyen. I dette tilfellet trenger du bare secret-tillatelsene Get og List.
  4. Til slutt skal denne access policy-en avgrenses til en bestemt principal, her den distribuerte Azure Data Factory. Søk etter data factory-en og klikk Select. Kontroller at data factory-en, og ikke resource group-en, er valgt, slik at tillatelser gis på lavest mulig nivå.
  5. Når data factory-en er valgt, klikker du Add og lagrer policyen.

Gi Azure Data Factory tillatelser på Azure Data Lake Gen 2 Storage

  1. Gå til den distribuerte data lake-en i Azure Portal og åpne Access Control.
  2. Klikk Add.
  3. Angi rollen Storage Blob Data Contributor.
  4. Finn den distribuerte data factory-en i søkefeltet og klikk Save.

Konklusjon

Den nødvendige kjerneinfrastrukturen er satt opp og klar til bruk.

I del én er følgende aktiviteter fullført:

  • Opprettet resource group
  • Distribuert følgende ressurser til resource group
    • Azure Key Vault
    • Azure Log Analytics workspace
    • Azure Data Factory
    • Azure Data Lake Storage Gen 2
  • Opprettet Azure AD Service Principal for Log Analytics Workspace
  • Lagret Azure AD Service Principal-secrets i Azure Key Vault
  • Satt tillatelser for at Azure Data Factory kan få tilgang til secrets i Azure Key Vault
  • Satt tillatelser for at Azure Data Factory kan lese og skrive blobs i Azure Data Lake Storage Gen 2

Følg med på del 2, der vi konfigurerer Azure Data Factory til å hente ut data fra Log Analytics.