Utforska Azure Monitor och Log Analytics

Slutförd

När du kör i molnskala behöver du intelligenta loggnings- och övervakningsverktyg som skalar efter dina behov och ger insikt i dina data i realtid.

Azure Monitor är Microsofts interna molnövervakningslösning. Azure Monitor samlar in övervakningstelemetri från olika typer av lokala källor och Azure-källor.

Azure Monitor tillhandahåller hanteringsverktyg, till exempel de i Azure Security Center och Azure Automation, vilket möjliggör inmatning av anpassade loggdata till Azure.

Tjänsten aggregerar och lagrar den här telemetrin i ett loggdatalager som är optimerat för kostnad och prestanda.

Med Azure Monitor kan du analysera data, konfigurera aviseringar och få vyer från slutpunkt till slutpunkt för dina program. Och använd maskininlärningsdrivna insikter för att snabbt identifiera och lösa problem.

Skärmbild av Azure Monitor och tjänster som omfattar insights, visualisera, analysera, svara och integrera övervakning.

I den här självstudien fokuserar vi på Log Analytics-delen av Azure Monitor. Du lär dig att:

  • Konfigurera Log Analytics-arbetsyta.
  • Ansluta virtuella datorer till en log analytics-arbetsyta.
  • Konfigurera Log Analytics-arbetsytan för att samla in anpassade prestandaräknare.
  • Analysera telemetrin med hjälp av Kusto-frågespråk.

Komma igång

  1. Du behöver en resursgrupp med en eller flera virtuella datorer som du har åtkomst till RDP för att följa med. Om du inte har någon skapar du en ny resursgrupp och en virtuell dator i Azure Portal.

  2. Logga in på Azure Shell. Kör kommandot nedan. Den skapar en ny resursgrupp och en log analytics-arbetsyta. Ta en post med arbetsytansid för log analytics-arbetsytan när vi använder den igen.

    Ersätt värdena för variablerna med din befintliga resursgrupp, arbetsytans namn och plats.

    $ResourceGroup = "azwe-rg-devtest-logs-001"
    $WorkspaceName = "azwe-devtest-logs-01"
    $Location = "westeurope"
    
    # List of solutions to enable
    $Solutions = "CapacityPerformance", "LogManagement", "ChangeTracking", "ProcessInvestigator"
    
    # Create the resource group if needed
    try {
        Get-AzResourceGroup -Name $ResourceGroup -ErrorAction Stop
    } catch {
        New-AzResourceGroup -Name $ResourceGroup -Location $Location
    }
    
    # Create the workspace
    New-AzOperationalInsightsWorkspace -Location $Location -Name $WorkspaceName -ResourceGroupName $ResourceGroup
    
    # List all solutions and their installation status
    Get-AzOperationalInsightsIntelligencePacks -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName
    
    # Add solutions
    foreach ($solution in $Solutions) {
        Set-AzOperationalInsightsIntelligencePack -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName -IntelligencePackName $solution -Enabled $true
    }
    
    # List enabled solutions
    (Get-AzOperationalInsightsIntelligencePacks -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName).Where({($_.enabled -eq $true)})
    
    # Enable IIS Log Collection using the agent
    Enable-AzOperationalInsightsIISLogCollection -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName
    
    # Windows Event
    New-AzOperationalInsightsWindowsEventDataSource -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName -EventLogName "Application" -CollectErrors -CollectWarnings -Name "Example Application Event Log"
    
    
    
  3. Hämta log analytics-arbetsytans säkra nyckel. Ersätt värdena för variablerna med din befintliga resursgrupp och ditt arbetsytenamn.

    Get-AzOperationalInsightsWorkspaceSharedKey `
                        -ResourceGroupName azwe-rg-devtest-logs-001 `
                        -Name azwe-devtest-logs-01
    
    
  4. Mappa befintliga virtuella datorer med Log Analytics-arbetsytan. Följande fråga använder nyckeln wokspaceid och workspace-secret för log analytics-arbetsytan för att installera Microsoft Enterprise Cloud Monitoring-tillägget på en befintlig virtuell dator.

    Kommentar

    Ersätt värdena för variablerna med din befintliga resursgrupp, namn på virtuell dator, plats, arbetsyte-ID och arbetsytehemlighetsnyckel som hämtades i föregående steg.

    
    $PublicSettings = @{"workspaceId" = "<myWorkspaceId>"}
    $ProtectedSettings = @{"workspaceKey" = "<myWorkspaceKey>"}
    $ResourceGroupName = "azwe-rg-devtest-logs-001"
    $VMName = "azsu-d-sql01-01"
    $Location = "westeurope"
    
    Set-AzVMExtension -ExtensionName "Microsoft.EnterpriseCloud.Monitoring" `
        -ResourceGroupName $ResourceGroupName `
        -VMName $VMName `
        -Publisher "Microsoft.EnterpriseCloud.Monitoring" `
        -ExtensionType "MicrosoftMonitoringAgent" `
        -TypeHandlerVersion 1.0 `
        -Settings $PublicSettings `
        -ProtectedSettings $ProtectedSettings `
        -Location $Location
    
    

    Kommentar

    Om du har flera prenumerationer kan du behöva ange prenumerationskontexten innan du kör kommandot ovan. Använd följande kommando för att ange prenumerationskontexten.

    Set-AzContext -SubscriptionId "<subscription-id>"
    

    Kommentar

    Om tillägget inte kan installeras kan du försöka ta bort tillägget och installera det igen. Använd följande kommando för att ta bort tillägget.

    
     Remove-AzVMExtension -ResourceGroupName $ResourceGroupName -VMName $VMName -Name "Microsoft.EnterpriseCloud.Monitoring"
    
     Set-AzVMExtension -ExtensionName "Microsoft.EnterpriseCloud.Monitoring" `
     -ResourceGroupName $ResourceGroupName `
     -VMName $VMName `
     -Publisher "Microsoft.EnterpriseCloud.Monitoring" `
     -ExtensionType "MicrosoftMonitoringAgent" `
     -TypeHandlerVersion 1.0 `
     -Settings $PublicSettings `
     -ProtectedSettings $ProtectedSettings `
     -Location $Location
    

    Kommentar

    Om det fortfarande misslyckas kontrollerar du om det finns några fel i den virtuella datorns händelseloggar eller installerar tillägget manuellt genom att ladda ned Microsoft Monitoring Agent och köra installationsprogrammet.

  5. Kör skriptet för att konfigurera prestandaräknarna nedan som ska samlas in från den virtuella datorn. Ersätt värdena för variablerna med din befintliga resursgrupp och ditt arbetsytenamn.

    #Login-AzureRmAccount
    
    #Instance
    ##################################
    $InstanceNameAll = "*"
    $InstanceNameTotal = '_Total'
    #Objects
    ##################################
    $ObjectCache = "Cache"
    $ObjectLogicalDisk = "LogicalDisk"
    $ObjectMemory = "Memory"
    $ObjectNetworkAdapter = "Network Adapter"
    $ObjectNetworkInterface = "Network Interface"
    $ObjectPagingFile = "Paging File"
    $ObjectProcess = "Process"
    $ObjectProcessorInformation = "Processor Information"
    $ObjectProcessor = "Processor"
    
    $ObjectSQLAgentAlerts = "SQLAgent:Alerts"
    $ObjectSQLAgentJobs = "SQLAgent:Jobs"
    $ObjectSQLAgentStatistics = "SQLAgent:Statistics"
    
    $ObjectSQLServerAccessMethods = "SQLServer:Access Methods"
    $ObjectSQLServerExecStatistics = "SQLServer:Exec Statistics"
    $ObjectSQLServerLocks = "SQLServer:Locks"
    $ObjectSQLServerSQLErrors = "SQLServer:SQL Errors"
    
    $ObjectSystem = "System"
    
    #Counters
    #########################################################
    $CounterCache = "Copy Read Hits %"
    
    $CounterLogicalDisk =
        "% Free Space" `
        ,"Avg. Disk sec/Read" `
        ,"Avg. Disk sec/Transfer" `
        ,"Avg. Disk sec/Write" `
        ,"Current Disk Queue Length" `
        ,"Disk Read Bytes/sec" `
        ,"Disk Reads/sec" `
        ,"Disk Transfers/sec" `
        ,"Disk Writes/sec"
    
    $CounterMemory =
        "% Committed Bytes In Use" `
        ,"Available MBytes" `
        ,"Page Faults/sec" `
        ,"Pages Input/sec" `
        ,"Pages Output/sec" `
        ,"Pool Nonpaged Bytes"
    
    $CounterNetworkAdapter =
        "Bytes Received/sec" `
        ,"Bytes Sent/sec"
    
    $CounterNetworkInterface = "Bytes Total/sec"
    
    $CounterPagingFile =
        "% Usage" `
        ,"% Usage Peak"
    
    $CounterProcess = "% Processor Time"
    
    $CounterProcessorInformation =
        "% Interrupt Time" `
        ,"Interrupts/sec"
    
    $CounterProcessor = "% Processor Time"
    $CounterProcessorTotal = "% Processor Time"
    
    $CounterSQLAgentAlerts = "Activated alerts"
    $CounterSQLAgentJobs = "Failed jobs"
    $CounterSQLAgentStatistics = "SQL Server restarted"
    $CounterSQLServerAccessMethods = "Table Lock Escalations/sec"
    $CounterSQLServerExecStatistics = "Distributed Query"
    $CounterSQLServerLocks = "Number of Deadlocks/sec"
    $CounterSQLServerSQLErrors = "Errors/sec"
    
    $CounterSystem = "Processor Queue Length"
    
    #########################################################
    $global:number = 1 #Name parameter needs to be unique that why we'll use number ++ in function
    #########################################################
    
    function AddPerfCounters ($PerfObject, $PerfCounters, $Instance)
    {
        ForEach ($Counter in $PerfCounters)
        {
            New-AzOperationalInsightsWindowsPerformanceCounterDataSource `
                        -ResourceGroupName 'azwe-rg-devtest-logs-001' `
                        -WorkspaceName 'azwe-devtest-logs-01' `
                        -ObjectName $PerfObject `
                        -InstanceName $Instance `
                        -CounterName $Counter `
                        -IntervalSeconds 10 `
                        -Name "Windows Performance Counter $global:number"
            $global:number ++
        }
    }
    
    AddPerfCounters -PerfObject $ObjectLogicalDisk -PerfCounter $CounterLogicalDisk -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectNetworkAdapter -PerfCounter $CounterNetworkAdapter -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectNetworkInterface -PerfCounter $CounterNetworkInterface -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectPagingFile -PerfCounter $CounterPagingFile -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectProcess -PerfCounter $CounterProcess -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectProcessorInformation -PerfCounter $CounterProcessorInformation -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectProcessor -PerfCounter $CounterProcessor -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectProcessor -PerfCounter $CounterProcessorTotal -Instance $InstanceNameTotal
    AddPerfCounters -PerfObject $ObjectSQLAgentAlerts -PerfCounter $CounterSQLAgentAlerts -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectSQLAgentJobs -PerfCounter $CounterSQLAgentJobs -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectSQLAgentStatistics -PerfCounter $CounterSQLAgentStatistics -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectSQLServerAccessMethods -PerfCounter $CounterSQLServerAccessMethods -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectSQLServerExecStatistics -PerfCounter $CounterSQLServerExecStatistics -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectSQLServerLocks -PerfCounter $CounterSQLServerLocks -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectSQLServerSQLErrors -PerfCounter $CounterSQLServerSQLErrors -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectSystem -PerfCounter $CounterSystem -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectMemory -PerfCounter $CounterMemory -Instance $InstanceNameAll
    AddPerfCounters -PerfObject $ObjectCache -PerfCounter $CounterCache -Instance $InstanceNameAll
    
    
  6. För att generera intressant prestandastatistik. Ladda ned heavyload-verktyget (ett verktyg för kostnadsfri belastningstestning) och kör det på den virtuella datorn för att simulera hög CPU-, minnes- och IOPS-förbrukning.

Hur det fungerar

  1. Log Analytics fungerar genom att köra Tjänsten Microsoft Monitoring Agent på datorn. Tjänsten samlar in och buffrar händelserna lokalt och skickar dem säkert ut till Log Analytics-arbetsytan i Azure.

  2. Logga in på den virtuella datorn, navigera till C:\\Program Files\\Microsoft Monitoring Agent\\MMAoch öppna kontrollpanelen. Den visar information om den log analytics-arbetsyta som är ansluten. Du kan också lägga till flera log analytics-arbetsytor för att publicera loggdata i olika arbetsytor.

    Skärmbild av egenskaperna för Microsoft Monitoring Agent med datornamn, egenskapsnamn och produktversionsinformation.

Sammanfattning

Hittills har vi skapat en log analytics-arbetsyta i en resursgrupp.

Log Analytics-arbetsytan har konfigurerats för att samla in prestandaräknare, händelseloggar och IIS-loggar.

Molnövervakningstillägget för Microsoft Enterprise har mappat en virtuell dator till log analytics-arbetsytan.

HeavyLoad har använts för att simulera hög CPU, minne och IOPS på den virtuella datorn.