Delprosjekt:
Statistikk

Ansvarlig:

Thomas Gundersen (thomas.m.gundersen@hiof.no)

Innledning

Al Mashriq er en server med et stort antall besøkende hver eneste dag. For å kunne danne seg et bilde av hvordan trafikken på serveren er til enhver tid, produseres det statistikk hver uke og måned. Statistikken inneholder data for antall treff, antall bytes overført per dag samt informasjon om hvor de besøkende kommer fra, hvilke dokumenter de har hentet og hvilken browsertype de kjører.

Problemstilling

De to siste månedene før porsjektstart hadde ikke statistikken blitt oppdatert de siste månedene. Det kunne se ut som om scriptene rett og slett hadde sluttet å virke. Det ble ytret et ønske fra veileder om å få ordnet opp i problemet så fort som mulig.

Mål med prosjektet

Hovedmålet med delprosjektet var å få rettet opp de mangler og feil som statistikken hadde. I tillegg var det opp til oss å se om vi kunne utbedre statistkken slik at sjansen for at feil skulle oppstå igjen ble minimal.

Gjennomføring

Som nevnt under problemstillingen var det viktig å rette opp statistikken var noe vi måtte sette i gang med så fort som mulig. I begynnelsen satt vi flere sammen for å finne ut av hva som hadde gått galt. Det viste seg også at scriptet som produserer månedsstatistkken ikke hadde avsluttet siste kjøring og sto derfor å brukte maskinresurser. Vi fant det derfor riktig å avslutte scriptet manuelt. Neste gjøremål ble derfor å finne ut hvorfor statistkken hadde stoppet.

Spørsmålet som vi stilte oss var om Al Mashriq hadde stor nok kapasitet til å håndtere den trafikkmengden som var på det aktuelle tidspunktet. Vi definerte derfor et nytt delprosjekt som skulle se hvor godt egnet maskinen var for en slik trafikkmengde. (se eget delprosjekt). Etter en gjennomgang av hva som fantes av utstyr og ledige resurser, kunne vi raskt konkludere med at statistikken hadde stoppet fordi det ikke var nok diskplass for programmenes temporære filer. For å kunne kjøre statistikken benyttet vi oss derfor av ledig plass som fantes under spool-området (eller /var/-katalogen). Her fantes fortsatt godt om plass, ihvertfall til å få kjørt scriptene.

Ved å skifte ut pathene i scriptene, ble oversiktene som manglet forsøkt produsert og lagt ut på web-området. Til å begynne med testet vi scriptene ved å kopiere logg og hjelpefiler inn i egne kataloger. P/aring; den måten unngikk vi å rote til eksisterende filer og oppsett. De første prøvekjøringene av scriptene viste seg å ta veldig lang tid, noe vi synes var merkelig da scriptene ikke var så veldig lange.

Så nå måtte vi sette oss ned å studere oppbygningen av scriptene nærmere. Her viste det seg at scriptet som ikke hadde blitt fullført, heller ikke hadde klart å flytte data for tidligere måneder over i backupfiler. Scriptene jobbet derfor på loggfiler som var to til tre ganger så store som de vanligvis er. Ved hjelp av "cat" og "grep" klarte vi da å redusere størrelsen på loggfilen som scriptet arbeider på og tidsforbruket ved kjøring. I tillegg kunne vi nå legge data for tidligere måneder i backup-katalogen.

Vi hadde nå klart å få frem en midlertidig løsning på problemet med plassmangel. Vi hadde nå også opprettet manglende statistikk-oversikter. Vi kunne dermed begynne å konsentrere oss om å rette opp scriptene til å benytte seg av nye filpather til de temporærer filene. Dette viste seg å være mere tuklete en hva vi hadde forestilt oss, og mye tid gikk med på å lokalisere og rette opp pather i scriptene.

Samtidig med utbedringene av statistkscriptenen utførte vi hele tiden kontroll av den grafiskefremstillingen. Problemene med denne delen av statistikken, var vi antakelig selv skyld i. Ved å endre på filene som inneholder Gnuplot-dataene manuelt, klarte ikke Gnuplot å tegne grafen riktig.

For å rette opp denne feilen ble stadige tester med Gnuplot på en annen maskin gjennomført. Og etter noe knoting frem og tilbake, tegnes grafen nå riktig.

Statistikkscriptene har etter dette blitt modifisert slik at de nå benytter seg av de deler av harddisken hvor det er mer ledig plass. Nå vil scriptene ikke lengre stoppe på grunn av plassmangel, forhåpentligvis ikke på mange måneder enda. Og innen den tid har vel muligens Al Mashriq blitt oppgradert.

Flere variablenavn har blitt endret slik at det er lettere å finne dem igjen lengre ned i scriptene. Dette har blitt gjort med tanke på fremtidig vedlikehold og feilsøking. Hvis vi hadde hatt mer tid til prøvekjøring av scriptene, kunne vi også muligens gjort alle delene av scriptene mye lettere å feilsøke i. Men i og med at det går en måned mellom hver gang månedsstatistkken blir kjørt, måtte alle endringer vi har gjort blitt skrevet ferdig minst tre måneder før avsluttningen av prosjektet. Vi trenger ihvertfall to gjennomkøringer av scriptene før vi kan si at scriptene virker som de skal. Men i Mars måned hadde vi enda ikke klart å få scriptene til å virke som de skulle, og vi måtte derfor derfor nøye oss med å rette opp feil de feil som fantes uten å utføre en total omskriving.

Utover endringene nevnt over, har det ikke blitt gjort noen større endringer, hverken av struktur eller kode i statistikken. Vi har også prøvd å følge beskrivelser og hint fra forrige prosjektgruppes rapport.

Hvis nå scriptene av en eller annen grunn ikke kjører som de skal, må de kjøres manuelt. Fremgangsmåten som vi har skrevet ned her, finnes også beskrevet i fjordårets prosjekt.

Manuell kjøring av script

  • Manglende ukesstatistikk: wwwstat.weekly.cron
    Se først wwwstat.weekly-helper.cron. Dette må være korrekt. Ellers kan en kjøre scriptet manuelt, såsant en ikke har kjørt mont.cron etter siste gang ukesstatistikken ble generert.
  • Manglende månedsstatistikk: wwwstat.monthly.cron
    Hvis det ikke har gått mer en en måned siden scriptet skulle ha kjørt (dvs. statistkken fra forrige måned ikke er laget), så kan scriptet kjøres manuelt.
  • Manglende årsstatistikk: wwwstat.year.cron
    Scriptet kan kjøres manuelt uten forbehold

Ukesstatistikken blir generert natt til hver mandag, månedsstatistikken natt til 8. i måneden og årsstatistkken blir kjørt kl 0400 8. januar.

Når nye administratorer av Al Mashriq tar i bruk nye maskiner bør disse registreres i stat-ip-nummer fila som finnes i katalogen sammen med resten av statistikk-scriptene (~/admin/statistics/).

Problemer under gjennomføringen

På grunn av plassmangel, brukte vi mere tid på å reorganisere logg og tempfiler. Alle script er avhengie av at pather er korrekt satt opp, og ikke alle pather er skrevet som variabler i toppen av scriptene noe som har gjort scriptene veldig uoversiktlige. I tillegg var det mange absolutt-pather lengre ut i scriptene som var vanskelige å finne, dette har ført til at debugginen og testingen av scriptene har tatt veldig lang tid.

Konklusjon

Etter å ha prøvet og feilet gjennom fem måneder, ser vi nå at scriptene har kommet opp på bena igjen etter fjordårets stopp. Tidsmessig har vi nok brukt mer tid på dette en hva vi hadde beregnet, men så har vi også lært mye perl og systemadnimistrasjon av delprosjektet.

Oversikt over delprosjekt

Lokalisering av filer

Resultater fra statistikken

Tidsestimering

  • Thomas Gundersen:
    • Generering av tapt statistikk 46 timer
    • Generering av grafisk fremstilling 18 timer
    • Opprettinger/debugging i script 57 timer
    • Oppfølging/kontroll av cronjober 8 timer
  • Morten Gustavsen:

Verktøy

  • Emacs
  • Gnuplot
  • Perl