Stabilt!

Hur man levererar en stabil och pålitlig tjänst genom bästa möjliga kontroll på sina servar. Primärt fokus är webtjänster.

Principen går ut på att övervaka, vara proaktiv och bli larmad när något händer.

Alla plattformar har verktyg för att åstadkomma ovanstående. Se till att du känner till, kan använda och faktiskt använder dom.

Realtidsövervakning

Övervaka resursförbrukning som CPU-last, minnesförbrukning, disk I/O, nät I/O, anrop per sekund, svarstider och felfrekvenser (avbrutna anrop, packetkollisioner, etc).

statsd + graphite är exempel på verktyg som kan användas för att få en grafisk realtidsbild. Mer traditionella verktyg är top, ps, iostat och sysstat.

Det är viktigt att ha en tydlig bild av hur normal drift ser ut för att snabbt upptäcka avvikelser vid produktionssättning av nya versioner.

Larm och notifieringar

Larma om tjänster blir onåbara eller svarar långsamt. Larma om tjänster kraschar eller slutar svara.

Många lösningar för övervakning har inbyggt stöd för att skicka larm. Exempelvis Nagios. Pingdom är en onlinetjänst för att övervaka nåbarhet och svarstider från olika delar av världen.

Loggning

Sätt upp en central loggserver och logga alla fel tillsammans med så mycket information om tillståndet när felet uppstod som möjligt.

Även saker som långsamma anrop och långsamma frågor bör loggas.

Följ upp felrappoter och buggar i ett ärendehanteringssystem.

syslog-ng är en utmärkt loggserver och Trac exempel på ett bra ärendehanteringssystem.

Logga anrop

Logga och för statistik över anrop till din tjänst och dess komponenter. Dels ser du snabbt om något märklig uppstår men framförallt får du en bild över hur tjänsten beter sig. Detta är en ovärderlig hjälp vid felsökning (var är flaskhalsen?), resursplanering (vilken hårdvara behöver vi investera i?) och inte minst optimering (vilken komponent är värd att optimera?).

Du bör exempelvis hålla koll på vilka URL-anrop som oftast görs till en web-server och vilka frågor som oftast ställs till en SQL-server.

Typiska värden att kolla på för ett visst anrop är total sammanlagd tid, genomsnittlig tid per anrop, långamast tid, snabbast tid, antal anrop till subkomponenter (ex. SQL-frågor och cache-anrop).

Ett enkelt verktyg för att logga WSGI-anrop är request-logger.

Övervakning, profilering och analys

Förutom realtidsövervakning bör profilering och trendanalys ingå som ett redskap i din arsenal. [Cacti och Nagios är exempel på verktyg som erbjuder detta.

Idag erbjuder många hosting-leverantörer inbyggda verktyg för övervakning och trendanalys.