Utforska Azure Monitor och Log Analytics
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.
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
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.
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"
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
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.
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
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
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.
Logga in på den virtuella datorn, navigera till
C:\\Program Files\\Microsoft Monitoring Agent\\MMA
och ö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.
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.