Hopp til innholdet

cjohansen.no

Monitorering av /proc/user_beancounters

Virtuelle serverinstanser under OpenVZ har sine ressursbegrensninger, og informasjon om hvordan ressursene fordeles og benyttes kan hentes fra /proc/user_beancounters. Disse tallene bør monitoreres jevnlig for å sikre stabilitet og oppetid. Her er et script som gjør det for deg.

/proc/user_beancounters

Som nevnt så inneholder denne informasjon om hvordan ressursene er fordelt, og hvordan de virtuelle maskinene benytter seg av disse. Administrerer du maskinvarenoden (altså maskinen som har OpenVZ installert) vil /proc/user_beancounters gi deg oversikt over alle serverne.

Leier du bare en "slice" eller har kontroll på kun én eller få virtuelle servere så vil /proc/user_beancounters gi oversikt over ressursbruk og grenser for den enkelte server på den enkelte server.

Det er ett tall som er spesielt interessant i denne tabellen: failcnt. Denne sier deg hvor mange ganger den virtuelle maskinen har feilet i et forsøk på allokere ressurser. Hvis maskinen ikke får ressursene den trenger er det ingen garanti for hva som skjer; alt fra lang responstid til at maskinen går ned.

Monitorering

Nettopp fordi failcnt kan fortelle deg at maskinen potensielt er i ferd med å få store problemer kan det være greit å monitorere denne. Jeg har laget et script som sjekker /proc/user_beancounters for deg og sender en mail dersom tallene har økt siden forrige kjøring.

Dette scriptet kan kjøres i en cronjob så ofte som det er nødvendig.

ubc_monitor

ubc_monitor er et Ruby-script, så du må ha Ruby installert for å kjøre det. Scriptet kjøres enkelt nok på følgende måte:

$ ./ubc_monitor

Dette vil få scriptet til å scanne /proc/user_beancounters, og opprette en fil ~/.ubc_monitor (eller annen fil, etter eget ønske) hvor den logger alle failcnt som er høyere enn 0. Dersom det er noen tall større enn 0 sender scriptet også en e-post, eller viser rapporten rett i shellet. Ved neste kjøring sjekker scriptet ikke mot 0, men verdiene i ~/.ubc_monitor (eller tilsvarende).

Logging i ~/.ubc_monitor

Grunnen til at scriptet logger og ikke bare mailer avgårde alle failcnt som er høyere enn 0 er at UBC ikke nullstilles når du øker grensene. Det er heller ingen måte å enkelt nullstille dem på foruten å stoppe hele vz i minst fem minutter.

På grunn av dette vil failcnt ha en verdi selv etter at du har utbedret situasjonen som ga feil til å begynne med. Dette er en god grunn til å bruke et script til å holde oversikten for deg.

Installasjon

Såfremt du har Ruby installert kan du laste ned kjørbart script til et sted på stien din, og voila, ubc_monitor er installert. Kjør med $ ubc_monitor -h for å se opsjonene.

Du kan også laste ned hele pakka med tester og dokumentasjon, skulle du ønske det. Dokumentasjon er også tilgjengelig online.

Cronjobber

Cronjobbene setter du opp så ofte som du har behov for. På en relativt stabil server burde det holde å kjøre scriptet en gang daglig bare for å følge med. Kjør scriptet med -t din@epost.no for å få rapport på mail når noe går galt. Under oppsett av ny server kan det være nyttig å kjøre scriptet oftere for å tweake ressursallokeringen.

Håper det er til hjelp for noen. Tilbakemeldinger er som vanlig veldig velkomne!

Muligens relatert

2006 - 2010 Christian Johansen Creative Commons Lisens