Portabel Nätverksövervakning Och Prestandatest
Total Page:16
File Type:pdf, Size:1020Kb
Portabel nätverksövervakning och prestandatest Thom Bengtsson Anton Snäll Datornätverk, högskoleexamen 2020 Luleå tekniska universitet Institutionen för system- och rymdteknik PORTABEL ÖVERVAKNING OCH PRİTANDATİT Thom Bengtsson & Anton Snäll D0032D, Examensarbete Datornätverk, VT20 Luleå tekniska universitet System- och Rymdteknik Sammanfattning Detta arbete är utfört på uppdrag av CGI med ambitionen att hitta ett open source program som tillhandahåller övervakning och prestationstester. Programmet ska gå att ha på en server eller maskin som är portabel, för att möjliggöra insamling av data om ett nätverk den ena dagen och ett annat den andra dagen. På grund av rådande situation i samhället sker allt arbete på distans vilket gör att tester av programvara endast sker på små, privata nätverk. Mycket vikt läggs på efterforskning, för att hitta de program som i teorin skulle fungera för ändamålet. Det visar sig snabbt att med open source som krav är ett enda program inte ett alternativ, så sökfältet expanderas. Tester utförs där programvarorna bedöms efter användarvänlighet och funktioner som underlättar vid omlokalisering av servern. Resultatet för övervakning blir programmen OpenNMS Horizon och NetXMS som båda levde upp till kraven, prestandaverktyget som valdes ut är Flent som kombinerar bl.a. Iperf och Netperf i sina tester och erbjuder grafiska presentationer av resultatet. Den begränsade tiden påverkade möjligheterna att testa samtliga alternativ som påträffades och rådande pandemi begränsade möjligheterna att testa programmen i någon större utsträckning. Målet med en lösning uppfylldes inte utan resulterade istället i två separata mjukvaror. Dessa finner man ändå uppnår de respektive målen. Abstract This work has been done as an assignment from CGI with the ambition to find an open source program that provides both network monitoring and performance testing. The program should be able to run on a portable server or other machine, to allow for data gathering of one network one day and of another network the next day. Due to the current state of society all work is done *remotely*, restricting tests to only be performed on smaller private networks. Much time is put into research to find the programs that in theory would work for the purpose. It's quickly revealed that with open source as a demand, a single program is not an option, thus the search is expanded. Tests are performed where the programs are graded by useability and functions that facilitate redeployment of the server between network sites. The results for network monitoring are the programs OpenNMS Horizon and NetXMS, which both lived up to the demands. The program chosen for performance testing is Flent, which among others combines Iperf and Netperf in its tests and presents the results in graphs.The limited time affected our opportunities to test all the programs we came across and the current pandemic limited our opportunities to test our chosen programs to a greater extent.The goal of finding one solution was not accomplished and instead resulted in two separate pieces of software. These are found to accomplish their respective goals. Innehållsförteckning 1. Introduktion 1 2. Teori 2 2.1 SNMP 2.2 OpenNMS Horizon 2.3 NetXMS 3 2.4 Flent 4 2.5 Netperf 5 2.6 Lubuntu Core Server Desktop genom Tasksel 3. Metod 6 3.1 Material 3.2 Krav på programvara 3.3 Utförande 7 3.3.1 Mjukvara för övervakning 3.3.2 Mjukvara för prestandatest 3.3.3 Flent 3.3.4 Lubuntu Core Server Desktop 3.4 Bedömning 8 4. Resultat 10 5. Diskussion 11 6. Referenser 12 Bilaga 1: Förkortningar 14 Bilaga 2: Installationer 15 OpenNMS Horizon 26.1.0 Installationer Konfigurationer 16 Starta och kör OpenNMS. 18 NetXMS 1.8 19 Förarbete Installation MySQL och tillägg Installation Java och Tomcat Konfiguration av databasen i MySQL 21 Installation 22 Installation NetXMS Installation Management Console Inloggning 23 Flent 24 Netperf Lubuntu Core Server Desktop genom Tasksel 1. Introduktion Övervakning av nätverk är en viktig del i dess underhåll, där information om dess enheters beteende samt trafik ger en bra inblick i hur det fungerar. En trasig enhet i ett stort nätverk behöver snabbt lokaliseras och åtgärdas, istället för att söka igenom nätverket enhet för enhet kan ett nätverksövervakningsprogram smidigt upptäcka felet och larma direkt. Prestandatester är ett bra verktyg att använda i förebyggande syfte, genom att testa nätverket innan det sätts i drift eller vid förändringar kan man identifiera eventuella problem innan de inträffar och på så vis undvika driftstörningar. CGI är ett globalt företag som levererar tjänster inom IT och affärsprocesser. I samarbete med deras kontor i Skellefteå söker vi en lösning för att på ett smidigt sätt kunna övervaka och prestandatesta kunders nätverk för att identifiera eventuella fel. Idén är att man med en portabel server tillfälligt ska kunna koppla upp sig ute hos kund för att övervaka nätverket, utföra prestandatester och sedan presentera resultaten för kund på ett tilltalande sätt. CGI har upplevt supportärenden där kunder inte kan ge tillräcklig information och de behöver då åka ut till plats för att utföra felsökning. De kan då behöva bekanta sig med kundens befintliga övervakningssystem. I dessa situationer skulle användningen av egen programvara eliminera tidsåtgången för att sätta sig in i kundernas övervakningssystem och på så sätt underlätta och effektivisera felsökningsarbetet. Syftet med detta arbete är att försöka hitta lämplig programvara som skulle kunna underlätta för CGI i deras dagliga arbete. Det tänkta användningsområdet kräver att programvaran uppfyller vissa krav t.ex. ska det vara open source, portabelt, någorlunda låga prestandakrav osv. 1 2. Teori I detta avsnitt tas nödvändig mjukvara och protokoll upp som ligger till grund för arbetet. 2.1 SNMP Simple Network Management Protocol (SNMP) är ett protokoll som används vid övervakning av enheter över ett nätverk. En server agerar manager och övervakar enheter såsom datorer, mobiler, routrar, switchar etc. som kallas agents. SNMP använder sig av portarna 161 och 162 för hämtning (polling) och traps respektive. Polling hämtar information från enheten genom GET-kommandot och utförs manuellt av en administratör eller enligt ett schema genom ett script eller program, medan traps är satta gränser för t.ex. temperatur eller processoranvändning hos en övervakad enhet. När dessa gränser uppnås skickar enheten själv trafik till managern. Ny information kan även skrivas till enheterna genom SET-kommandot. Protokollet finns i tre olika versioner där v3 är den enda som tillämpar riktig säkerhet i form av authentication och privacy [1][2]. 2.2 OpenNMS Horizon Ett enterprise-klassat program för övervakning och hantering av nätverk. Utvecklat och stöttat av en community av användare och utvecklare. The OpenNMS Group har också ett finger med i spelet, de erbjuder kommersiella tjänster, utbildning och support. Ambitionen är att OpenNMS Horizon ska uppfylla alla aspekter av FCAPS-modellen medan programmet förblir 100% open source. Projektet i sig upprätthålls av en grupp utvecklare som kallar sig The Order of the Green Polo. Programmet är skrivet i Java och kan på så vis köras på alla plattformar som har stöd för Java SDK 1.6 eller högre. Utöver Java behövs databasen PostgreSQL, men det finns planer på att göra OpenNMS oberoende av databas. Processen för att lägga till enheter i systemet kan ske både manuellt enhet för enhet eller automatiskt genom att en adressrymd specificeras och programmet pingar varje adress och listar därefter de enheter den får svar från. Den underliggande tekniken som används 2 för konfigurationen är XML, så möjligheten att applicera konfiguration direkt i XML-filen finns också. Att samla in data relaterat till prestation är möjligt för en rad olika nätverksprotokoll, där ibland SNMP, HTTP, JMX, WMI, XMP, XML, NSClient och JDBC. Data kan samlas in, lagras, presenteras grafiskt och jämföras mot thresholds [3]. 2.3 NetXMS Ett övervakningsprogram utvecklat i C, C++ och Java av Victor Kirhenshtein och Alex Kirhenshtein som open source. Utvecklat för övervakning av stora nätverk, med säker och krypterad kommunikation mellan sig och andra enheter genom x.509-certifikat, lösenord, smart-cards eller RADIUS-server. Information hämtas genom SNMP eller installerade NetXMS-agenter på enheter. Upptäcker enheter automatiskt genom Active Discovery (skanningsprober) och Passive Discovery (information från ARP- och routingtabeller samt interfaces från nätverksenheter). Använder databaser såsom MySQL, MongoDB, PostgreSQL m.fl. för att förvara information genom tillämpning av Round Robin Database (RRD), där äldre information skrivs över vid behov. Administratörer kan larmas genom programmet eller via sms och e-post vid olika events. Kontrolleras via web-GUI (Graphical User Interface) eller CLI (Command Line Interface). Programvaran är tillgänglig för Linux, Windows och Mac OS X [4][5]. 3 2.4 Flent Ett program som används för att testa prestanda i nätverk. Flent är kodat i Python och är en s.k. wrapper som kombinerar Iperf och Netperf med andra verktyg för att köra förkonfigurerade tester och samla in samt presentera dess resultat. Testerna utgörs av Netperf som skickar TCP-trafik mellan enheterna samt instanser av övrig mjukvara som med UDP och SNMP mäter latency. Resultaten samlas sedan in från båda enheterna och kombineras i en JSON-fil som Flent kan presentera på olika sätt. Det kan även sparas ned som en CSV-fil och andra format. Tester kan köras mot en eller flera enheter för att bl.a. kontrollera förekomsten av bufferbloat. Bufferbloat är när onödiga mängder data samlas i bufferterna hos routrar eller switchar i ett nätverk och orsakar hög latens eller jitter [6][7]. Två exempel på tester som tillhandahålls av Flent är Real-Time Response Under Load (RRUL) och RTT fairness test. RRUL-testet är framtaget med fokus på bufferbloat, för att stresstesta nätverket och vaska fram eventuellt oönskat beteende hos enheter i nätverket. Det fungerar genom att fyra TCP-strömmar körs i vardera riktning mellan en enhet med rollen som server och en enhet med rollen som klient, samtidigt körs UDP- och ICMP-strömmar för att få ett mått på latensen.