Övervaka virtuella datorer med Azure Monitor: Samla in data

Den här artikeln är en del av guiden Övervaka virtuella datorer och deras arbetsbelastningar i Azure Monitor. Den beskriver hur du konfigurerar insamling av data när du har distribuerat Azure Monitor Agent till dina virtuella Azure- och hybriddatorer i Azure Monitor.

Den här artikeln innehåller vägledning om hur du samlar in de vanligaste typerna av telemetri från virtuella datorer. Den exakta konfiguration som du väljer beror på de arbetsbelastningar som du kör på dina datorer. I varje avsnitt ingår exempelloggsökningsaviseringar som du kan använda med dessa data.

Kommentar

Det här scenariot beskriver hur du implementerar fullständig övervakning av din azure- och hybridmiljö för virtuella datorer. Information om hur du kommer igång med att övervaka din första virtuella Azure-dator finns i Övervaka virtuella Azure-datorer.

Regler för datainsamling

Datainsamling från Azure Monitor Agent definieras av en eller flera regler för datainsamling (DCR) som lagras i din Azure-prenumeration och är associerade med dina virtuella datorer.

För virtuella datorer definierar DCR-enheter data, till exempel händelser och prestandaräknare, för att samla in och ange de Log Analytics-arbetsytor där data ska skickas. DCR kan också använda transformeringar för att filtrera bort oönskade data och lägga till beräknade kolumner. En enskild dator kan associeras med flera DCR och en enda DCR kan associeras med flera datorer. DCR levereras till alla datorer som de är associerade med där Azure Monitor Agent bearbetar dem.

Visa regler för datainsamling

Du kan visa domänkontrollanterna i din Azure-prenumeration från datainsamlingsreglermenyn Övervaka i Azure Portal. DCR stöder andra datainsamlingsscenarier i Azure Monitor, så alla dina domänkontrollanter är inte nödvändigtvis för virtuella datorer.

Skärmbild som visar domänkontrollanter i Azure Portal.

Skapa regler för datainsamling

Det finns flera metoder för att skapa domänkontrollanter beroende på scenariot för datainsamling. I vissa fall vägleder Azure Portal dig genom konfigurationen. Andra scenarier kräver att du redigerar en DCR direkt. När du konfigurerar VM-insikter skapas en förkonfigurerad DCR åt dig automatiskt. I följande avsnitt identifieras vanliga data som ska samlas in och hur du konfigurerar datainsamling.

I vissa fall kan du behöva redigera en befintlig DCR för att lägga till funktioner. Du kan till exempel använda Azure Portal för att skapa en domänkontrollant som samlar in Windows- eller Syslog-händelser. Sedan vill du lägga till en transformering till den domänkontrollanten för att filtrera bort kolumner i de händelser som du inte vill samla in.

När din miljö mognar och växer i komplexitet bör du implementera en strategi för att organisera dina dcrs för att hjälpa deras hantering. Vägledning om olika strategier finns i Metodtips för skapande och hantering av datainsamlingsregel i Azure Monitor.

Kontrollera kostnader

Eftersom din Azure Monitor-kostnad är beroende av hur mycket data du samlar in kontrollerar du att du inte samlar in mer än du behöver för att uppfylla dina övervakningskrav. Konfigurationen är en balans mellan din budget och hur mycket insikt du vill ha i driften av dina virtuella datorer.

Dricks

Strategier för att minska dina Azure Monitor-kostnader finns i Kostnadsoptimering och Azure Monitor.

En typisk virtuell dator genererar mellan 1 GB och 3 GB data per månad. Den här datastorleken beror på datorns konfiguration, de arbetsbelastningar som körs på den och konfigurationen av dina domänkontrollanter. Innan du konfigurerar datainsamling i hela miljön för virtuella datorer ska du börja samla in på vissa representativa datorer för att bättre förutsäga dina förväntade kostnader när de distribueras i din miljö. Använd Log Analytics-arbetsyteinsikter eller loggfrågor i Datavolym per dator för att fastställa mängden fakturerbara data som samlas in för varje dator och justera därefter.

Utvärdera insamlade data och filtrera bort alla som uppfyller följande kriterier för att minska dina kostnader. Varje datakälla som du samlar in kan ha en annan metod för att filtrera bort oönskade data. Se avsnitten nedan för information om var och en av de gemensamma datakällorna.

  • Används inte för aviseringar.
  • Inget känt kriminaltekniskt eller diagnostiskt värde.
  • Krävs inte av tillsynsmyndigheter.
  • Används inte i några instrumentpaneler eller arbetsböcker.

Du kan också använda transformeringar för att implementera mer detaljerad filtrering och även för att filtrera data från kolumner som ger lite värde. Du kan till exempel ha en Windows-händelse som är värdefull för aviseringar, men den innehåller kolumner med redundanta eller överdrivna data. Du kan skapa en transformering som gör att händelsen kan samlas in men tar bort dessa överdrivna data.

Filtrera data så mycket som möjligt innan de skickas till Azure Monitor för att undvika en potentiell avgift för att filtrera för mycket data med transformeringar. Använd transformeringar för postfiltrering med komplex logik och för att filtrera kolumner med data som du inte behöver.

Standarddatainsamling

Azure Monitor utför automatiskt följande datainsamling utan att kräva någon annan konfiguration.

Plattformsmått

Plattformsmått för virtuella Azure-datorer innehåller viktiga värdmått som processor-, nätverks- och diskanvändning. De kan vara:

Aktivitetslogg

Aktivitetsloggen samlas in automatiskt. Den innehåller den senaste aktiviteten på datorn, till exempel eventuella konfigurationsändringar och när den stoppades och startades. Du kan visa plattformsmått och aktivitetsloggar som samlats in för varje virtuell datorvärd i Azure Portal.

Du kan visa aktivitetsloggen för en enskild dator eller för alla resurser i en prenumeration. Skapa en diagnostikinställning för att skicka dessa data till samma Log Analytics-arbetsyta som används av Azure Monitor Agent för att analysera dem med andra övervakningsdata som samlats in för den virtuella datorn. Det kostar ingenting för inmatning eller kvarhållning av aktivitetsloggdata.

Information om VM-tillgänglighet i Azure Resource Graph

Med Azure Resource Graph kan du använda samma Kusto-frågespråk som används i loggfrågor för att köra frågor mot dina Azure-resurser i stor skala med komplex filtrering, gruppering och sortering efter resursegenskaper. Du kan använda hälsokommentarer för virtuella datorer till Resource Graph för detaljerad analys av felattribution och stilleståndstid.

Information om vilka data som samlas in och hur du visar dem finns i Övervaka virtuella datorer med Azure Monitor: Analysera övervakningsdata.

VM-insikter

När du aktiverar VM-insikter skapas en DCR med MSVMI-prefixet som samlar in följande information. Du kan använda samma DCR med andra datorer i stället för att skapa en ny för varje virtuell dator.

  • Vanliga prestandaräknare för klientoperativsystemet skickas till tabellen InsightsMetrics på Log Analytics-arbetsytan. Räknarnamn normaliseras för att använda samma gemensamma namn oavsett operativsystemtyp.

  • Om du har angett processer och beroenden som ska samlas in fylls följande tabeller i:

    • VMBoundPort: Trafik för öppna serverportar på datorn
    • VMComputer: Inventeringsdata för datorn
    • VMConnection: Trafik för inkommande och utgående anslutningar till och från datorn
    • VMProcess: Processer som körs på datorn

Som standard möjliggör vm-insikter inte insamling av processer och beroenden för att spara kostnader för datainmatning. Dessa data krävs för map-funktionen och distribuerar även beroendeagenten till datorn. Aktivera den här samlingen om du vill använda den här funktionen.

Samla in Windows- och Syslog-händelser

Operativsystemet och programmen på virtuella datorer skriver ofta till Windows-händelseloggen eller Syslog. Du kan skapa en avisering så snart en enskild händelse hittas eller vänta på en serie matchande händelser inom en viss tidsperiod. Du kan också samla in händelser för senare analys, till exempel identifiera specifika trender över tid eller för att utföra felsökning när ett problem inträffar.

Information om hur du skapar en DCR för att samla in Windows- och Syslog-händelser finns i Samla in data med Azure Monitor Agent. Du kan snabbt skapa en DCR med hjälp av de vanligaste Windows-händelseloggarna och Syslog-anläggningarnas filtrering efter händelsenivå.

Om du vill ha mer detaljerad filtrering efter kriterier, till exempel händelse-ID, kan du skapa ett anpassat filter med hjälp av XPath-frågor. Du kan filtrera insamlade data ytterligare genom att redigera DCR för att lägga till en transformering.

Använd följande vägledning som en rekommenderad startpunkt för händelseinsamling. Ändra DCR-inställningarna för att filtrera onödiga händelser och lägga till andra händelser beroende på dina krav.

Källa Strategi
Windows-händelser Samla in minst kritiska händelser, fel- och varningshändelser för system- och programloggarna för att stödja aviseringar. Lägg till informationshändelser för att analysera trender och stödja felsökning. Utförliga händelser är sällan användbara och bör vanligtvis inte samlas in.
Syslog-händelser Samla in minst LOG_WARNING händelser för varje anläggning för att stödja aviseringar. Lägg till informationshändelser för att analysera trender och stödja felsökning. LOG_DEBUG händelser är sällan användbara och bör vanligtvis inte samlas in.

Exempelloggfrågor: Windows-händelser

Fråga beskrivning
Event Alla Windows-händelser
Event | where EventLevelName == "Error" Alla Windows-händelser med allvarlighetsgrad för fel
Event | summarize count() by Source Antal Windows-händelser per källa
Event | where EventLevelName == "Error" | summarize count() by Source Antal Windows-felhändelser per källa

Exempelloggfrågor: Syslog-händelser

Fråga beskrivning
Syslog Alla Syslogs
Syslog | where SeverityLevel == "error" Alla Syslog-poster med allvarlighetsgrad för fel
Syslog | summarize AggregatedValue = count() by Computer Antal Syslog-poster per dator
Syslog | summarize AggregatedValue = count() by Facility Antal Syslog-poster per anläggning

Samla in prestandaräknare

Prestandadata från klienten kan skickas till antingen Azure Monitor Metrics eller Azure Monitor-loggar och du skickar dem vanligtvis till båda målen. Om du har aktiverat VM-insikter samlas en gemensam uppsättning prestandaräknare in i Loggar för att stödja dess prestandadiagram. Du kan inte ändra den här uppsättningen räknare, men du kan skapa andra domänkontrollanter för att samla in fler räknare och skicka dem till olika mål.

Det finns flera orsaker till varför du vill skapa en DCR för att samla in gästprestanda:

  • Du använder inte VM-insikter, så klientprestandadata samlas inte redan in.
  • Samla in andra prestandaräknare som VM-insikter inte samlar in.
  • Samla in prestandaräknare från andra arbetsbelastningar som körs på klienten.
  • Skicka prestandadata till Azure Monitor Metrics där du kan använda dem med måttutforskaren och måttaviseringar.

Information om hur du skapar en DCR för att samla in prestandaräknare finns i Samla in händelser och prestandaräknare från virtuella datorer med Azure Monitor Agent. Du kan snabbt skapa en DCR med hjälp av de vanligaste räknarna. Om du vill ha mer detaljerad filtrering efter kriterier, till exempel händelse-ID, kan du skapa ett anpassat filter med hjälp av XPath-frågor.

Kommentar

Du kan välja att kombinera prestanda och händelsesamling i samma DCR.

Mål beskrivning
Mått Värdmått skickas automatiskt till Azure Monitor-mått. Du kan använda en DCR för att samla in klientmått så att de kan analyseras tillsammans med Metrics Explorer eller användas med måttaviseringar. Dessa data lagras i 93 dagar.
Loggar Prestandadata som lagras i Azure Monitor-loggar kan lagras under längre perioder. Data kan analyseras tillsammans med dina händelsedata med hjälp av loggfrågor med Log Analytics eller loggsökningsaviseringar. Du kan också korrelera data med hjälp av komplex logik mellan flera datorer, regioner och prenumerationer.

Prestandadata skickas till följande tabeller:
– VM-insikter: InsightsMetrics
– Andra prestandadata: Perf

Exempelloggfrågor

Följande exempel använder tabellen Perf med anpassade prestandadata.

Fråga beskrivning
Perf Alla prestandadata
Perf | where Computer == "MyComputer" Alla prestandadata från en viss dator
Perf | where CounterName == "Current Disk Queue Length" Alla prestandadata för en viss räknare
Perf | where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" | summarize AVGCPU = avg(CounterValue) by Computer Genomsnittlig CPU-användning på alla datorer
Perf | where CounterName == "% Processor Time" | summarize AggregatedValue = max(CounterValue) by Computer Maximal cpu-användning på alla datorer
Perf | where ObjectName == "LogicalDisk" and CounterName == "Current Disk Queue Length" and Computer == "MyComputerName" | summarize AggregatedValue = avg(CounterValue) by InstanceName Genomsnittlig längd på aktuell diskkö för alla instanser av en viss dator
Perf | where CounterName == "Disk Transfers/sec" | summarize AggregatedValue = percentile(CounterValue, 95) by Computer 95:e percentilen av disköverföringar per sekund på alla datorer
Perf | where CounterName == "% Processor Time" and InstanceName == "_Total" | summarize AggregatedValue = avg(CounterValue) by bin(TimeGenerated, 1h), Computer Genomsnittlig processoranvändning per timme på alla datorer
Perf | where Computer == "MyComputer" and CounterName startswith_cs "%" and InstanceName == "_Total" | summarize AggregatedValue = percentile(CounterValue, 70) by bin(TimeGenerated, 1h), CounterName Timvis 70 percentil av varje % procenträknare för en viss dator
Perf | where CounterName == "% Processor Time" and InstanceName == "_Total" and Computer == "MyComputer" | summarize ["min(CounterValue)"] = min(CounterValue), ["avg(CounterValue)"] = avg(CounterValue), ["percentile75(CounterValue)"] = percentile(CounterValue, 75), ["max(CounterValue)"] = max(CounterValue) by bin(TimeGenerated, 1h), Computer Timgenomsnitt, minsta, högsta och 75-percentil cpu-användning för en viss dator
Perf | where ObjectName == "MSSQL$INST2:Databases" and InstanceName == "master" Alla prestandadata från databasprestandaobjektet för huvuddatabasen från den namngivna SQL Server-instansen INST2.
Perf | where TimeGenerated >ago(5m) | where ObjectName == "Process" and InstanceName != "_Total" and InstanceName != "Idle" | where CounterName == "% Processor Time" | summarize cpuVal=avg(CounterValue) by Computer,InstanceName | join (Perf| where TimeGenerated >ago(5m)| where ObjectName == "Process" and CounterName == "ID Process" | summarize arg_max(TimeGenerated,*) by ProcID=CounterValue ) on Computer,InstanceName | sort by TimeGenerated desc | summarize AvgCPU = avg(cpuVal) by InstanceName,ProcID Medelvärde av CPU under de senaste 5 minuter för varje process-ID.

Samla in textloggar

Vissa program skriver händelser som skrivits till en textlogg som lagras på den virtuella datorn. Skapa en anpassad tabell och DCR för att samla in dessa data. Du definierar platsen för textloggen, dess detaljerade konfiguration och schemat för den anpassade tabellen. Det finns en kostnad för inmatning och kvarhållning av dessa data på arbetsytan.

Exempelloggfrågor

Kolumnnamnen som används här är endast exempel. Kolumnnamnen för din logg kommer troligen att vara olika.

Fråga beskrivning
MyApp_CL | summarize count() by code Räkna antalet händelser efter kod.
MyApp_CL | where status == "Error" | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m) Skapa en aviseringsregel för alla felhändelser.

Samla in IIS-loggar

IIS som körs på Windows-datorer skriver loggar till en textfil. Konfigurera IIS-logginsamling med hjälp av Samla in IIS-loggar med Azure Monitor Agent. Det finns en kostnad för inmatning och kvarhållning av dessa data på arbetsytan.

Poster från IIS-loggen lagras i W3CIISLog-tabellen på Log Analytics-arbetsytan. Det finns en kostnad för inmatning och kvarhållning av dessa data på arbetsytan.

Exempelloggfrågor

Fråga beskrivning
W3CIISLog | where csHost=="www.contoso.com" | summarize count() by csUriStem Räkna IIS-loggposterna efter URL för värden www.contoso.com.
W3CIISLog | summarize sum(csBytes) by Computer Granska de totala byte som tas emot av varje IIS-dator.

Övervaka en tjänst eller daemon

Om du vill övervaka status för en Windows-tjänst eller Linux-daemon aktiverar du Ändringsspårning- och inventeringslösningen i Azure Automation.

Azure Monitor har ingen egen möjlighet att övervaka statusen för en tjänst eller daemon. Det finns några möjliga metoder att använda, till exempel att söka efter händelser i Windows-händelseloggen, men den här metoden är otillförlitlig. Du kan också leta efter den process som är associerad med tjänsten som körs på datorn från VMProcess-tabellen som fylls i av VM-insikter. Den här tabellen uppdateras bara varje timme, vilket vanligtvis inte räcker om du vill använda dessa data för aviseringar.

Kommentar

Lösningen Ändringsspårning och analys skiljer sig från funktionen Ändringsanalys i VM-insikter. Den här funktionen är i offentlig förhandsversion och ingår ännu inte i det här scenariot.

Olika alternativ för att aktivera Ändringsspårning lösning på dina virtuella datorer finns i Aktivera Ändringsspårning och inventering. Den här lösningen innehåller metoder för att konfigurera virtuella datorer i stor skala. Du måste skapa ett Azure Automation-konto för att stödja lösningen.

När du aktiverar Ändringsspårning och inventering skapas två nya tabeller på Log Analytics-arbetsytan. Använd dessa tabeller för loggfrågor och aviseringsregler för loggsökning.

Register beskrivning
ConfigurationChange Ändringar i gästkonfigurationsdata
ConfigurationData Senast rapporterat tillstånd för gästkonfigurationsdata

Exempelloggfrågor

  • Visa en lista över alla tjänster och daemoner som nyligen har startats.

    ConfigurationChange
    | where ConfigChangeType == "Daemons" or ConfigChangeType == "WindowsServices"
    | where SvcState == "Running"
    | sort by Computer, SvcName
    
  • Avisering när en specifik tjänst stoppas. Använd den här frågan i en aviseringsregel för loggsökning.

    ConfigurationData
    | where SvcName == "W3SVC" 
    | where SvcState == "Stopped"
    | where ConfigDataType == "WindowsServices"
    | where SvcStartupType == "Auto"
    | summarize AggregatedValue = count() by Computer, SvcName, SvcDisplayName, SvcState, bin(TimeGenerated, 15m)
    
  • Avisering när en av en uppsättning tjänster stoppas. Använd den här frågan i en aviseringsregel för loggsökning.

    let services = dynamic(["omskd","cshost","schedule","wuauserv","heathservice","efs","wsusservice","SrmSvc","CertSvc","wmsvc","vpxd","winmgmt","netman","smsexec","w3svc","sms_site_vss_writer","ccmexe","spooler","eventsystem","netlogon","kdc","ntds","lsmserv","gpsvc","dns","dfsr","dfs","dhcp","DNSCache","dmserver","messenger","w32time","plugplay","rpcss","lanmanserver","lmhosts","eventlog","lanmanworkstation","wnirm","mpssvc","dhcpserver","VSS","ClusSvc","MSExchangeTransport","MSExchangeIS"]);
    ConfigurationData
    | where ConfigDataType == "WindowsServices"
    | where SvcStartupType == "Auto"
    | where SvcName in (services)
    | where SvcState == "Stopped"
    | project TimeGenerated, Computer, SvcName, SvcDisplayName, SvcState
    | summarize AggregatedValue = count() by Computer, SvcName, SvcDisplayName, SvcState, bin(TimeGenerated, 15m)
    

Övervaka en port

Portövervakning verifierar att en dator lyssnar på en viss port. Två potentiella strategier för portövervakning beskrivs här.

Beroendeagenttabeller

Om du använder VM-insikter med samlingen Processer och beroenden aktiverad kan du använda VMConnection och VMBoundPort för att analysera anslutningar och portar på datorn. Tabellen VMBoundPort uppdateras varje minut med varje process som körs på datorn och porten som den lyssnar på. Du kan skapa en loggsökningsavisering som liknar den saknade pulsslagsaviseringen för att hitta processer som har stoppats eller för att varna när datorn inte lyssnar på en viss port.

  • Granska antalet öppna portar på dina virtuella datorer för att bedöma vilka virtuella datorer som har konfigurations- och säkerhetsrisker.

    VMBoundPort
    | where Ip != "127.0.0.1"
    | summarize by Computer, Machine, Port, Protocol
    | summarize OpenPorts=count() by Computer, Machine
    | order by OpenPorts desc
    
  • Lista de bundna portarna på dina virtuella datorer för att bedöma vilka virtuella datorer som har konfigurations- och säkerhetsrisker.

    VMBoundPort
    | distinct Computer, Port, ProcessName
    
  • Analysera nätverksaktivitet efter port för att avgöra hur ditt program eller din tjänst har konfigurerats.

    VMBoundPort
    | where Ip != "127.0.0.1"
    | summarize BytesSent=sum(BytesSent), BytesReceived=sum(BytesReceived), LinksEstablished=sum(LinksEstablished), LinksTerminated=sum(LinksTerminated), arg_max(TimeGenerated, LinksLive) by Machine, Computer, ProcessName, Ip, Port, IsWildcardBind
    | project-away TimeGenerated
    | order by Machine, Computer, Port, Ip, ProcessName
    
  • Granska skickade och mottagna bytetrender för dina virtuella datorer.

    VMConnection
    | summarize sum(BytesSent), sum(BytesReceived) by bin(TimeGenerated,1hr), Computer
    | order by Computer desc
    | render timechart
    
  • Använd anslutningsfel över tid för att avgöra om felfrekvensen är stabil eller ändras.

    VMConnection
    | where Computer == <replace this with a computer name, e.g. 'acme-demo'>
    | extend bythehour = datetime_part("hour", TimeGenerated)
    | project bythehour, LinksFailed
    | summarize failCount = count() by bythehour
    | sort by bythehour asc
    | render timechart
    
  • Länka statustrender för att analysera beteendet och anslutningsstatusen för en dator.

    VMConnection
    | where Computer == <replace this with a computer name, e.g. 'acme-demo'>
    | summarize  dcount(LinksEstablished), dcount(LinksLive), dcount(LinksFailed), dcount(LinksTerminated) by bin(TimeGenerated, 1h)
    | render timechart
    

Anslutningshanteraren

Funktionen Anslutningsövervakare i Network Watcher används för att testa anslutningar till en port på en virtuell dator. Ett test verifierar att datorn lyssnar på porten och att den är tillgänglig i nätverket.

Anslutningshanteraren kräver Network Watcher-tillägget på klientdatorn som initierar testet. Den behöver inte installeras på den dator som testas. Mer information finns i Självstudie: Övervaka nätverkskommunikation med hjälp av Azure Portal.

Det finns en extra kostnad för Anslutningshanteraren. Mer information finns i Priser för Network Watcher.

Köra en process på en lokal dator

Övervakning av vissa arbetsbelastningar kräver en lokal process. Ett exempel är ett PowerShell-skript som körs på den lokala datorn för att ansluta till ett program och samla in eller bearbeta data. Du kan använda Hybrid Runbook Worker, som är en del av Azure Automation, för att köra ett lokalt PowerShell-skript. Det finns ingen direkt kostnad för Hybrid Runbook Worker, men det finns en kostnad för varje runbook som används.

Runbooken kan komma åt alla resurser på den lokala datorn för att samla in nödvändiga data. Det kan inte skicka data direkt till Azure Monitor eller skapa en avisering. Om du vill skapa en avisering måste runbooken skriva en post till en anpassad logg. Konfigurera sedan loggen som ska samlas in av Azure Monitor. Skapa en aviseringsregel för loggsökning som utlöses på loggposten.

Nästa steg