Använda New Relic för att övervaka dina servrar

En löpande applikation är inte bara en massa kod, men koden måste också springa någonstans. Jag pratar om dina produktionsservrar. Det är lika viktigt att du ser till att dina produktionslådor beter sig som att se till att din ansökningskod är prestanda. Du kan ställa in system som Nagios för att hjälpa dig med det här, men det kan vara extremt komplicerat att arbeta med, kräva en väsentlig infrastruktur och kan vara total överkill (om inte dina infrastrukturbehov är extremt komplexa). New Relic ger ett mindre komplett men mycket enkelt alternativ när det gäller infrastrukturövervakning.

Om du har läst några av våra tidigare artiklar om New Relic borde du vara hemma med hur New Relic instrumentpaneler fungerar. Serverns övervakningspaneler använder samma begrepp. Om du redan använder New Relic kan du börja ta emot data om serverns prestanda väldigt snabbt. Även om du inte tidigare har skapat New Relic kan det vara värt att använda det bara för serverövervakning. De sex eller så instrumentpaneler som New Relic tillhandahåller kan avsevärt fördröja (eller till och med helt ta bort) behovet av en mer komplett lösning för infrastrukturövervakning.

Varför behöver jag en tjänst för att övervaka lådor alls?

Beroende på behoven hos din ansökan kan du ha en webbkomponent, databas, cache, sökning, lastbalans osv. Vissa av dessa kan dela samma rutan. Men när din ansökan går över en viss storlek börjar du lägga några av dessa på sina egna lådor. När du bara har en produktionsserver är det enkelt. Du SSH i den rutan, kör några skalkommandon och få en ganska bra idé om hälsan hos den ena servern. När antalet lådor växer kan detta bli lite av en chore. Det skulle vara praktiskt om du kunde få ett sätt att ta reda på hälsan hos alla dina lådor samtidigt. Det här är exakt det problem som New Relic-serverens instrumentpaneler löser. Du får en ögonblicksbild av hälsan hos alla dina produktionsservrar samtidigt.

Självklart är det inte den mest effektiva sak att manuellt kontrollera hälsan på alla dina servrar. När sakerna går fel vill du ta reda på det så snart det händer, inte nästa gång du bestämmer dig för att kolla. De flesta infrastrukturövervakningssystemen har ett sätt att skicka varningar när vissa delar av de övervakade servrarna misslyckas (t.ex. disk full, använder för mycket RAM etc). New Relic är inte annorlunda. Du kan använda den mycket flexibla, varningspolitiska infrastrukturen för att skicka felmeddelanden på något sätt som du gillar, till exempel e-post, webbhakar mm.

Slutligen uppstår inte infrastrukturproblem plötsligt, historiskt sammanhang är viktigt. RAM kommer långsamt att bli ätit upp i timmar innan lådan börjar misslyckas, disken fyller i dagar innan sakerna kommer till ett huvud. Spotkontroll av dina servrar ger dig inte det historiska sammanhanget du behöver för att förhindra att problemen uppstår. Om du bara råkar kolla diskanvändningen när den blir lite full, kan du göra något åt ​​det. Om inte, lär du dig bara om problemet när dina lådor dör. New Relic samlar data och skickar den tillbaka till sina servrar hela tiden, så instrumentpanelen handlar om historiskt sammanhang. Detta gör det väldigt lätt att förbereda vissa klasser av problem.

Det fungerar i verkliga livet

Låt mig berätta ett par berättelser. Vi använder New Relic i Tuts + för både programövervakning och serverövervakning. För några månader sedan var jag i samtal när våra lådor började misshandlas några minuter. De föll inte helt, men ansökan skulle fungera mycket dåligt under korta perioder. Jag loggade in i rutorna och fann att minnesanvändningen var väldigt hög. Så jag startade om servrarna en efter en och sakerna tycktes vara okej ett tag. Men några timmar senare började allting hända igen. Detta luktade som en minnesläcka. 

Så jag loggade in på New Relic för att titta på graferna. Visst nog har en av de installationer vi gjorde tidigare infört en minnesläcka i applikationen. Det skulle ta några timmar för att hela minnet skulle konsumeras av ansökan då det skulle gå in i en desperat insamlingsfasi, vilket orsakade alla möjliga roliga problem. Titta på minnesgraven på alla lådor var det omedelbart uppenbart vad som hände. Vid den tiden hade vi inga varningar inrättade (vi gör nu), så vi blev inte medvetna om problemet tills det orsakade andra problem att manifestera. Men, att kunna jämföra alla lådor till varandra, samt att ha det historiska sammanhanget, låt mig lätt diagnostisera problemet, rulla ut en fix och sova i tid den natten.

Här är en annan. Nyligen var det ett avbrott i AWS datacenter där Tuts + är värd. När sakerna äntligen slogs ner, startade vi om alla lådor för att se till att det inte fanns några nigglingproblem. Men när rutorna kom tillbaka, skulle ansökan intermittent returnera 500 svar eller utföra mycket dåligt en del av tiden. Detta var sannolikt ett problem med en eller flera servrar, vilket är väldigt irriterande att diagnostisera när du har många lådor. Återigen såg vi på New Relic oss att överfatta problemet mycket snabbt. En av våra lådor kom tillbaka med en skurk process som förbrukade mycket CPU, vilket gjorde att appen på den låda skulle fungera dåligt. En annan låda påverkades av någon typ av AWS-glitch, vilket ledde till att skivan IO-användningen av den rutan var 100%. Vi tog den lådan ut ur vår lastbalanser, blev av med skurkprocessen på den andra och ansökan började fungera bra igen.

Graferna New Relic tillhandahåller är verkligen användbara och jag vill inte göra utan dem, så låt mig visa hur man får serverövervakning igång.

Installera New Relic Server Monitoring Agent

I grund och botten kommer allt att logga in på din server och installera New Relic-serverövervakningsdemonen (nrsysmond). Om du har läst New Relic for PHP-artikeln är proceduren nästan identisk. Som vanligt, låt oss anta att vi är på Ubuntu. 

Det första du behöver göra är att importera ny relikförvaringsnyckel:

wget -O - https://download.newrelic.com/548C16BF.gpg | sudo apt-key lägg till -

Nu lägger vi till New Relic repository sig till systemet: 

sudo sh-c "echo" deb http://apt.newrelic.com/debian/ newrelic non-free "> /etc/apt/sources.list.d/newrelic.list"

Nu använder vi bara benägen:

sudo apt-få uppdatering sudo apt-get install newrelic-sysmond

När det är klart att du installerar, får du ett bra meddelande så här:

************************************************** ******************* ******************************* ************************************** *** *** Kan inte starta New Relic Server Monitor tills du sätter in en *** Giltig licensnyckel i följande fil: *** *** /etc/newrelic/nrsysmond.cfg *** *** Du kan göra detta genom att köra följande kommando som root: * ** *** nrsysmond-config --set license_key = *** *** Inga uppgifter kommer att rapporteras förrän serverns skärm kan starta. *** Du kan få din New Relic-nyckel från avsnittet Konfiguration *** i "Support" -menyn på ditt New Relic-konto (tillgängligt på *** https://rpm.newrelic.com). *** ********************************************** ********************** **************************** *****************************************

Låt oss göra vad det säger. Först, låt oss hoppa in i våra New Relic-kontoinställningar för att leta upp vår licensnyckel (den kommer till höger):

Låt oss nu köra kommandot:

nrsysmond-config --set license_key =

Om du kontrollerar konfigurationsfilen nu: /etc/newrelic/nrsysmond.cfg. Du får se din licensnyckel där inne. Vi är redo att starta agenten:

/etc/init.d/newrelic-sysmond start

Du kan nu kontrollera din processlista för att se till att den körs:

ps -ef | grep nrsys newrelic 10087 1 0 09:25? 00:00:00 / usr / sbin / nrsysmond -c /etc/newrelic/nrsysmond.cfg -p /var/run/newrelic/nrsysmond.pid newrelic 10089 10087 0 09:25? 00:00:00 / usr / sbin / nrsysmond -c /etc/newrelic/nrsysmond.cfg -p /var/run/newrelic/nrsysmond.pid ubuntu 10100 9734 0 09:25 pts / 1 00:00:00 grep - -färg = auto nrsys

Enligt PHP-agenten finns det två processer. En är en bildskärmsprocess och den andra är arbetaren. Arbetaren gör faktiskt jobbet med att kommunicera med New Relic-servrarna, övervakningsprocessen tittar helt enkelt på arbetaren och om arbetaren dör av vilken anledning som helst kommer det att hämta en ny.

Vi kan också kontrollera loggarna för att se till att det inte fanns några fel vid uppstarten:

cat /var/log/newrelic/nrsysmond.log 2014-05-25 09:25:02 [10089 / main] alltid: Ny Relic Server Monitor version 1.4.0.471/C+IA startad - pid = 10089 background = true SSL = sant ca_bundle = ca_path = host = ip-10-196-10-195 2014-05-25 09:25:03 [10089 / main] info: RPM omdirigering: collector-102.newrelic.com (50.31.164.202) port 0 (0 betyder standard port )

Allt ser bra ut, och du bör nu börja se att data visas i New Relic-gränssnittet.

Konfigurera serverövervakningsagenten

För det mesta behöver du inte konfigurera något annat än licensnyckeln, men om du behöver höja loggnivån eller konfigurera en proxy, är det definitivt möjligt. Allt bor i /etc/newrelic/nrsysmond.cfg. Filen är mycket väl kommenterad och ganska självförklarande. Om du ändrar något, kom ihåg att omstart demonen:

/etc/init.d/newrelic-sysmond starta om

Det finns bara en subtil sak när det kommer att konfigurera servernövervakning och det är namnet på servern, som det kommer att ses i New Relic instrumentpaneler. Som standard kommer New Relic att ta värdnamnet i rutan och göra det namnet på servern i instrumentpanelen (dvs. utmatningen från hostname kommando). Jag rekommenderar att du håller den så här. Om du också använder New Relic för programövervakning, behåller du värdnamnet, som utmatas av hostname kommandot, eftersom serverns namn kommer att se till att New Relic kan korrekt utse vilka program som körs på vilka lådor och koppla allt upp ordentligt i gränssnittet.

Om du verkligen behöver, kan du ändra namnet på servern som det kommer att visas i användargränssnittet genom att ställa in hostname = parameter i konfigurationsfilen: /etc/newrelic/nrsysmond.cfg. Du måste starta om demonen för att detta ska träda i kraft. Du kan också ändra serverns namn direkt i användargränssnittet som inte påverkar demonen.

Använda Dashboards för serverövervakning

Det första du ser när du klickar på servrar länken till vänster är en ögonblicksbild av alla dina servrar och nyckeltal för alla (CPU, Disk, Memory, IO). 

På den här sidan kan du se om en eller flera av dina lådor uppenbarligen misshandlar. Här kan du också byta namn på en server eller lägga till taggar till den, om det behövs.

Om vi ​​klickar på en av servrarna kommer vi till huvuddatorens instrumentpanel:

Det finns sex huvudsakliga mätvärden här:

  • CPU-användning
  • Minnesanvändning
  • Disk IO-utnyttjande
  • Nätverk IO
  • Ladda genomsnittet
  • Processlista

Detta ger dig en snabb översikt över en viss server. Du kan borra ner i varje graf för att få mer information. Du kan till exempel borra ner i CPU-grafen för att se vilka processer som använder CPU:

Eller du kan borra ner i skivdiagrammet för att se din IO-hastighet, en uppdelning av läser och skriver, samt få en uppskattning av hur lång tid det kommer att vara innan din disk är full.

Det bästa är att du kan använda samma operationer på alla dessa grafer som du kan på applikationsnivågrafer. Så, du kan zooma in på ett fem minuters fönster för att titta på en CPU-användningspik närmare, eller du kan titta på en sju dagars trend i minnesanvändning. 

Det bästa är att graferna är enkla att förstå, du är inte överväldigad med mätvärden och du kan jämföra liknande lådor med varandra. Det här kan hjälpa dig att diagnostisera 99% av vanliga problem som du sannolikt kommer att stöta på med din infrastruktur.

Inställning av serverövervakningsvarningar

New Relic har nyligen gjort mycket arbete för att förbättra sina varningsmöjligheter. Varningsmeddelanden är vad de har kommit över hela hela systemet (till exempel finns det policy för programvarning för program och program för programvaran för serverns varning för rutor). Det kan vara lite förvirrande först, men det är ganska enkelt när du hänger på det. Det finns två huvudkoncept, policyer och kanaler. När det gäller serverns varningar fungerar det så här: 

Vi ställer in en policy och tilldelar vissa servrar till den:

Du skapar också en kanal (till exempel e-post, webbhaka) till vilka varningar kan skickas:

Du tilldelar sedan en kanal till en policy. Från och med den tiden, beroende på inställningarna för kanalen (t.ex. första kritiska händelsen, alla kritiska händelser, endast driftstopp). Du får meddelanden på den kanalen.

Den enda förvirrande biten om varningspolitiken är var man hittar dem. De lever under Verktygs-> Alertpolicyer:

Du måste då klicka på servrar i menyn högst upp, för att hitta serverns varningspolicy.

Slutsats

Om du redan använder en lösning för infrastrukturövervakning som Nagios och det fungerar bra för dig, kan du inte få för mycket extra från New Relic-serverövervakning (även om diagrammen och de historiska trenderna är ganska bra). Men om du inte övervakar din infrastruktur alls eller din nuvarande lösning inte fungerar för dig, ger du definitivt New Relic. För mig har det blivit det första verktyget jag går till när jag misstänker att något är fel med mina servrar. Och ofta kommer det att låta mig veta att besväret brygger innan situationen blir kritisk. Som utvecklare är det typ av verktyg vi alla vill ha i vårt arsenal.