Dag 3: Submoduler i git og installasjon på blade server

I forrige uke fikk jeg problemer med å legge til enkelte puppetmoduler til monitoreringsbranchen på github. Etter en del feilsøking endte jeg  opp med å legge disse til som submoduler. Fordelen med submoduler er at man slipper å måtte oppdatere modulene i sitt eget repository. Ved å kjøre kommandoen nedenfor vil modulen lastes ned, og det vil ligge en sti til det remote repositoriet i .gitmodules.

git submodule add https://github.com/elastic/puppet-logstash

I tillegg til submodulene er det også blitt lagt til en egen mappe for alle konfigurasjonsfiler og patterns til logstash. Rsyslog.conf ligger også her, men planen videre er å legge til rsyslog puppetmodulen slik at det aller meste kan styres gjennom puppet. Jeg begynte også å installere winch på blade serveren jeg har fått tildelt. Denne serveren har 32GB med minne og jeg har derfor mulighet til å ha kjørende en god del instanser som jeg skal teste med. Mer om dette i morgen!

Dag 2: Integrering av logstash i «winch»

Under utplasseringen var jeg med på å lage et automatisk oppsett som installerte OpenStack og tilhørende komponenter. Dette ble gjort ufifra et prosjekt på github som het winch. Som jeg tok opp i min forrige bloggpost ønsker jeg å samle alle OpenStack loggene på en og samme maskin. Derfor her jeg laget en ny branch i winch som inkluderer en monitoreringsnode. Denne noden vil være ansvarlig for alt som skjer med tanke på logginnsamling, parsing og visualisering av informasjon. Da er det viktig at verktøyene som skal gjøre dette blir installert på samme måte som tidligere, ved hjelp av puppetmoduler.  Da kan vi sette en ønsket tilstand og si at den nye noden skal være en monitoreringsnode.

Arbeidet med å puppetifisere alle verktøyene er kommet godt i gang. Har laget en manifest fil for logstash som kan sees her. Denne vil benytte seg av puppet modulene lokalisert i puppet/modules og installere verktøyene med konfigurasjonsfiler spesifisert i manifestet. Det som gjenstår for at integreringen skal være komplett er å legge til de puppetmodulene jeg trenger. Disse er submoduler og blir derfor lagt til annerledes. Mer om dette i neste bloggpost.

Dag 1: Installasjon og oppsett av logstash, elasticsearch & kibana

Etter tips fra prosjektleder i UH-sky prosjektet er et av monitoreringsverktøyene jeg har valgt å se på logstash. Et  kraftig  verktøy som brukes til å håndtere hendelser og logger.

logstash

Logstash samler inn logger fra ulike kilder, parser loggene og lagrer de til senere bruk.  Når man installerer logstash kommer det også med et webinterface der man kan søke etter hendelsene i loggfilene og visualisere dette slik man ønsker. Dette for å kunne kartlegge feil, se endringer i systemer over tid, sette sammen data som har påvirkning på herandre osv. Logstash er et åpent kildekodeverktøy og er lisensiert under Apache 2.0.

OpenStack er et komplekst rammeverk som består av mange tjenester. Hver tjeneste har sitt eget bruksområde og sitt eget API. Det er mye informasjon som til daglig vil være spredt rundt om i  systemet. Dette gjør det viktig å samle all loggdata på et samlet sted slik at det blir enklere å hente ut den informasjonen vi trenger for å sørge for at rammeverket til enhver tid fungerer som det skal. Logstash er veldig egnet til dette formålet. I logstash.conf kan vi tagge innkommende logger og videre kan det så kjøres filter basert på disse taggene for å hente ut den spesifikke informasjonen vi vil ha tak i. For eksempel tjenestenavn, diskbruk, antall påloggingsforsøk, brukere, IP adresser,  nettleser osv. Alt av informasjon som finnes i en loggfil kan ekstraheres, lagres og videresendes til en eller annen form for visualisering.

Jeg har til nå arbeidet med en kodebase som jeg forket på github som installerer disse tre verktøyene som nevnt i overskriften. Videre har jeg tenkt å integrere denne mot winch slik at den passer øvrig prosjektstruktur. Under følger et bilde av hvordan visualiseringen av loggdataene ser ut.

kibana4-visualisering

 

 

Prosjektbeskrivelse bacheloroppgave

Etter høstens utplassering har jeg fått lov til å skrive bacheloroppgaven min her på IT-avdelingen. I denne sammenhengen publiserer jeg prosjektbeskrivelsen i sin helhet som omhandler monitorering av OpenStack ved UiB. Jeg har også laget en ny side på bloggen øverst til høyre som alltid linker til prosjektbeskrivelsen.

Prosjektbeskrivelse bachelorprosjekt.

Til nå har prosjektet kommet i gang og jeg har såvidt begynt å se på forskjellige løsninger i henhold til problemstillingen som kan brukes til å monitorere OpenStack. Videre vil jeg følge fremdriftsplanen i prosjektbeskrivelsen. Noen verktøy jeg så langt har fått kikket på:

  • Icinga (basert på Nagios)
  • Logstash
  • Elasticsearch / Kibana
  • Monasca
  • Ceilometer / graphite

Denne bloggen har tidligere vært brukt i utplasseringsfaget DAT156 og har hatt en bloggpost for hver dag. Bloggen vil nå bli brukt til bachelorprosjektet som varer frem til juni 2015. Og vil følge samme oppsett med en bloggpost for hver dag. Neste blogginnlegg vil begynne på dag 0 som oppsummerer arbeidet med oppgaven så langt.

Dag 31: Logstash & Kibana

Benyttet mesteparten av dagen til å kikke på to verktøy som heter Logstash og Kibana. Logstash er et verktøy for å samle og håndtere logg. Den samler inn, parser og lagrer logg og viser dem i et webpanel kalt Kibana. Her kan man ved hjelp av et kraftig søkeverktøy søke opp alt av hendelser som har skjedd på systemet siden loggingen startet. I webpanelet vil det genereres grafer på hvor ofte en hendelse man har søkt på forekommer. Ganske nyttig dersom man skal filtrere en spesifikk feil for å finne ut om feilen er kritisk eller ikke.

Konfigurasjonsmessig kan man gjøre mye med logstash. Det viktigste av konfigurasjonen skjer ved hjelp av en konfigurasjonsfil der en spesifiserer input, hva som skal filtreres og output. Output delen kan være forskjellige tjenester, i dette tilfellet ble output satt til å være elasticsearch. Elasticsearch er logstash’ sin backend for lagring av logg. Senere vil jeg ta for meg installasjonen og oppsett av logstash og kartlegge tjenester som skal overvåkes. I tillegg ønsker jeg også å kikke nærmere på verktøyet Graphite som kan spesifiseres som output.