Bruke New Relic til å overvåke serverne dine

Et løpende program er ikke bare en haug med kode, men koden må også løpe et sted. Jeg snakker om produksjonsserverne dine. Det er like viktig å sikre at produksjonsboksene dine oppfører seg som det er å sørge for at søknadskoden din er effektiv. Du kan sette opp systemer som Nagios for å hjelpe deg med dette, men disse kan være svært komplekse å jobbe med, krever betydelig infrastruktur og kan være total overkill (med mindre infrastrukturbehovene er ekstremt komplekse). New Relic gir et mindre fullverdig, men veldig enkelt alternativ når det gjelder infrastrukturovervåking.

Hvis du har lest noen av våre tidligere artikler om New Relic, bør du være hjemme med hvordan New Relic dashboards fungerer. Serverovervåkingspanelet bruker de samme konseptene. Hvis du allerede bruker New Relic, kan du begynne å motta data om serverytelsen din veldig raskt. Selv om du ikke tidligere har satt opp New Relic, kan det være verdt å bruke det bare for serverovervåking. De seks eller så dashbordene som New Relic gir, kan vesentlig forsinke (eller til og med helt fjerne) behovet for en mer fullverdig infrastrukturovervåkingsløsning.

Hvorfor trenger jeg en tjeneste for å overvåke bokser i det hele tatt?

Avhengig av behovene i søknaden din, kan det hende du har en webkomponent, database, cache, søk, lastbalanse osv. Noen av disse kan dele samme boks. Men når søknaden din kommer over en viss størrelse, vil du begynne å sette noen av disse på sine egne bokser. Når du bare har en produksjonsserver, er det enkelt. Du SSH i den boksen, kjør noen shell kommandoer og få en ganske god ide om helsen til den ene serveren. Etter hvert som antall bokser vokser, kan dette bli litt av en rolle. Det ville være nyttig hvis du kunne få en måte å finne ut om helsen til alle boksene dine på en gang. Dette er akkurat det problemet som New Relic-serverens dashboards løser. Du får et øyeblikksbilde av helsen til alle produksjonsserverne dine samtidig.

Selvfølgelig er det ikke den mest effektive tingen å manuelt sjekke helsen til alle serverne dine. Når ting går galt, vil du finne ut så snart det skjer, ikke neste gang du bestemmer deg for å sjekke. De fleste infrastrukturovervåkingssystemer har en måte å sende varsler når bestemte deler av de overvåkede serverne feiler (f.eks. Disk full, bruker for mye RAM osv.). New Relic er ikke annerledes. Du kan bruke den svært fleksible, varslingspolitiske infrastrukturen til å sende feilmeldinger på en måte du liker, for eksempel e-post, webhooks osv.

Til slutt, infrastruktur problemer ofte ikke vises plutselig, historisk sammenheng er viktig. RAM vil sakte bli spist opp i timer før boksen begynner å mislykkes, disken vil fylle opp for dager før ting kommer til hodet. Spot sjekker serverne gir deg ikke den historiske konteksten du trenger for å forhindre at problemene oppstår. Hvis du bare skal sjekke diskbruken når den blir litt full, kan du gjøre noe med det. Hvis ikke, lærer du bare om problemet når boksene dine dør. New Relic samler data og sender det tilbake til sine servere hele tiden, så instrumentbrettene handler om historisk sammenheng. Dette gjør det veldig enkelt å preempt bestemte klasser av problemer.

Det fungerer i virkeligheten

La meg fortelle deg et par historier. Vi bruker New Relic i Tuts + for både programovervåking og serverovervåking. For noen måneder siden var jeg på vakt da våre bokser begynte å misbeholde hvert par minutter. De var ikke helt falle over, men søknaden ville fungere svært dårlig i korte perioder. Jeg logget på boksene og fant ut at minnebruken var veldig høy. Så jeg startet serverne en etter en, og det syntes å være ok for en stund. Men noen timer senere begynte alt igjen. Dette luktet som en minnelekkasje. 

Så jeg logget på New Relic for å se på grafene. Sikkert nok, en av de deployer vi gjorde tidligere hadde introdusert en minnelekkasje i søknaden. Det ville ta noen timer for alt minnet å bli konsumert av søknaden, på hvilket tidspunkt det ville gå inn i en desperat søppelsamlingsfase, noe som forårsaket alle slags morsomme problemer. Ser på minnegrafer på alle boksene var det umiddelbart åpenbart hva som skjedde. På det tidspunktet hadde vi ikke noen varsler satt opp (vi gjør nå), så vi ble ikke oppmerksom på problemet før det førte til at andre problemer skulle manifestere seg. Men å kunne sammenligne alle boksene til hverandre, i tillegg til å ha den historiske konteksten, la meg enkelt diagnostisere problemet, rulle ut en fikse og komme til å sove i tide den kvelden.

Her er en annen. Nylig var det en feil i AWS datacenter der Tuts + er vert. Når ting endelig slo seg ned, rebootte vi alle boksene for å sikre at det ikke var noen niggling problemer. Men da boksene kom tilbake, ville søknaden periodisk returnere 500 svar eller utføre svært dårlig noe av tiden. Dette var sannsynligvis et problem med en eller flere av serverne, noe som er veldig irriterende å diagnostisere når du har mange bokser. Igjen, se på New Relic tillot oss å overfylle problemet veldig raskt. En av våre bokser kom tilbake med en skurkaktig prosess som tok mye CPU, noe som gjorde at appen på den boksen skulle fungere dårlig. En annen boks ble påvirket av en slags AWS-glitch som forårsaket at disken IO-utnyttelsen av den boksen var 100%. Vi tok den boksen ut av vår lastbalanser, ble kvitt skurkprosessen på den andre og søknaden begynte å fungere fint igjen.

Grafene New Relic gir er virkelig nyttige, og jeg vil ikke gjøre uten dem, så la meg vise hvordan du får serverovervåking opp og ned.

Installere New Relic Server Monitoring Agent

I utgangspunktet kommer alt ned til å logge på serveren din og installere New Relic server overvåking daemon (nrsysmond). Hvis du har lest New Relic for PHP-artikkelen, er prosedyren nesten identisk. Som vanlig, la oss anta at vi er på Ubuntu. 

Den første tingen å gjøre er å importere New Relic-depotnøkkelen:

wget -O - https://download.newrelic.com/548C16BF.gpg | sudo apt-key add -

Nå legger vi New Relic-depotet til systemet: 

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

Nå bruker vi bare apt:

sudo apt-get oppdatering sudo apt-get install newrelic-sysmond

Etter at installasjonen er ferdig, får du en fin melding som denne:

************************************************** ******************* ****************************** ************************************* *** *** Kan ikke starte New Relic Server Monitor til du legger inn en *** gyldig lisensnøkkel i følgende fil: *** *** /etc/newrelic/nrsysmond.cfg *** *** Du kan gjøre dette ved å kjøre følgende kommando som root: * ** *** nrsysmond-config - sett license_key = *** *** Ingen data vil bli rapportert før servermonitoren kan starte. *** Du kan få din New Relic-nøkkel fra delen Konfigurasjon *** i "Support" -menyen til New Relic-kontoen din (tilgjengelig på *** https://rpm.newrelic.com). *** ********************************************* ********************** **************************** *****************************************

La oss gjøre hva det står. For det første, la oss hoppe inn i våre New Relic-kontoinnstillinger for å se opp lisensnøkkelen vår (den kommer til høyre):

La oss nå kjøre kommandoen:

nrsysmond-config - sett license_key =

Hvis du sjekker konfigurasjonsfilen nå: /etc/newrelic/nrsysmond.cfg. Du vil se lisensnøkkelen din der inne. Vi er klare til å starte agenten:

/etc/init.d/newrelic-sysmond start

Du kan nå sjekke prosesslisten for å sikre at den kjører:

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 - -color = auto nrsys

I henhold til PHP-agenten er det to prosesser. Den ene er en skjermprosess, og den andre er arbeideren. Arbeidsgiveren jobber faktisk med å kommunisere med New Relic-serverne, overvåkingsprosessen ser bare på arbeideren, og hvis arbeideren dør, uansett grunn, vil den gyte en ny.

Vi kan også sjekke loggene for å sikre at det ikke var noen feil ved oppstart:

cat /var/log/newrelic/nrsysmond.log 2014-05-25 09:25:02 [10089 / main] alltid: New Relic Server Monitor versjon 1.4.0.471/C+IA startet - pid = 10089 background = true SSL = sant ca_bundle = ca_path = vert = 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 betyr standard port )

Alt ser bra ut, og du bør nå begynne å se data vises i New Relic-brukergrensesnittet.

Konfigurere serverovervåkingsagenten

Mesteparten av tiden trenger du ikke å konfigurere noe annet enn lisensnøkkelen, men hvis du trenger opp lognivå eller konfigurere en proxy, er det definitivt mulig. Alt lever i /etc/newrelic/nrsysmond.cfg. Filen er veldig godt kommentert og ganske selvforklarende. Hvis du endrer noe, husk å omstart demonen:

/etc/init.d/newrelic-sysmond restart

Det er bare en subtil ting når det kommer til å konfigurere serverovervåkning, og det er navnet på serveren, som det vil bli sett på New Relic-dashboards. Som standard vil New Relic ta vertsnavnet til boksen og gjøre det navnet på serveren i oversikten (dvs. utgangen av vertsnavn kommando). Jeg anbefaler at du holder den på denne måten. Hvis du også bruker New Relic for applikasjonsovervåkning, holder du vertsnavnet, som utdata av vertsnavn kommando, da navnet på serveren vil sikre at New Relic kan utføre riktig ut hvilke programmer som kjører på hvilke bokser og koble alt riktig opp i brukergrensesnittet.

Hvis du virkelig må, kan du endre navnet til serveren som det vil vises i brukergrensesnittet ved å sette inn hostname = parameter i konfigurasjonsfilen: /etc/newrelic/nrsysmond.cfg. Du må starte daemonen på nytt for at dette skal tre i kraft. Du kan også endre navnet på serveren direkte i brukergrensesnittet, som ikke vil påvirke demonen.

Bruke Dashboards for serverovervåking

Det første du ser når du klikker på servere lenken til venstre er et øyeblikksbilde av alle serverne dine og nøkkeltallene for alle (CPU, Disk, Memory, IO). 

På denne siden kan du se om en eller flere av boksene dine åpenbart feiler. Her kan du også omdøpe en server eller legge til koder til den, om nødvendig.

Hvis vi klikker på en av serverne, kommer vi til hoveddriverens betjeningspanel:

Det er seks hovedverdier her:

  • CPU bruk
  • Minnebruk
  • Disk IO-utnyttelse
  • Nettverk IO
  • Last gjennomsnitt
  • Prosessliste

Dette gir deg en rask oversikt over en bestemt server. Du kan bore ned i hver av grafene for å få mer informasjon. For eksempel kan du bore ned i CPU-grafen for å se hvilke prosesser som bruker CPU:

Eller du kan bore ned i diskgrafen for å se din IO-rate, en sammenfatning av leser og skriver, samt få et estimat på hvor lenge det vil være før disken din er full.

Den beste delen er at du kan bruke de samme operasjonene på alle disse grafene som du kan på applikasjonsnivågrafer. Så du kan zoome inn på et fem minutters vindu for å se på en CPU-brukspik nærmere, eller du kan se på en syv-dagers trend i minnesbruk. 

Den beste delen er at grafene er enkle å forstå, du er ikke overveldet med beregninger, og du kan sammenligne lignende bokser til hverandre. Dette kan hjelpe deg med å diagnostisere 99% av vanlige problemer du sannsynligvis vil støte på med infrastrukturen din.

Sette opp serverovervåkning

New Relic har nylig gjort mye arbeid for å forbedre sine varslingsevner. Advarselspolicyer er hva de har kommet over på hele sitt system (for eksempel er det policyer for programvarsling for program- og servervarslingspolitikk for bokser). Det kan være litt forvirrende i begynnelsen, men det er ganske enkelt når du får tak i det. Det er to hovedkonsepter, retningslinjer og kanaler. Når det gjelder servervarsler, fungerer det slik: 

Vi oppretter en policy og tilordner noen servere til den:

Du lager også en kanal (for eksempel e-post, webhook) til hvilke varsler kan sendes:

Du tilordner deretter en kanal til en policy. Fra det tidspunktet avhengig av innstillingene for kanalen (for eksempel første kritiske hendelsen, alle kritiske hendelser, kun nedetid). Du får meldinger på den kanalen.

Den eneste forvirrende biten om varslingspolitikk er hvor du finner dem. De lever under Verktøy-> Alertpolicyer:

Du må da klikke på servere i menyen øverst, for å finne servervarslingspolicyer.

Konklusjon

Hvis du allerede bruker en infrastrukturovervåkingsløsning som Nagios, og det fungerer bra for deg, kan du ikke få for mye ekstra fra New Relic-serverovervåkning (selv om grafene og historikkene er ganske gode). Men hvis du ikke overvåker infrastrukturen din i det hele tatt, eller din nåværende løsning ikke fungerer for deg, gir du definitivt New Relic. For meg har det blitt det første verktøyet jeg går til når jeg mistenker at noe er galt med serverne mine. Og ofte nok vil det fortelle meg at problemer bryter før situasjonen blir kritisk. Som utviklere er det slags verktøy vi alle vil ha i vårt arsenal.