Haaga-Helia Linux palvelimena kurssin toteutus 17, ict4tn003-17, kotitehtävä 2
Tehtävänanto:
– Kerää kuormitustietoja munin – ohjelmalla
– Kuormita konetta stress:llä
– Käytä tunnilla käytyjä työkaluja arvioidaksesi kuormitusta: cpu, mem, io…
– Lopuksi analysoi munin keräämiä käyriä
– Aiheuta valitsemaasi lokiin muutamia rivejä ja analysoi niistä 2-3 riviä perusteellisesti
Vapaaehtoisia lisätehtävä:
– Valvo Nagioksella ja aiheuta hälytys
– Kokeile jotain yli ajan tilatietoja tallentavaa ohjelmaa (muuta kuin munin)
Vapaaehtoisia lisätehtäviä jatkuu:
– Kirjoita oma ohjelma, joka näyttää tilatietoja Linuxissa (esim vapaa muisti, prosessorien lukumäärä…). Tehtävää helpottavat /proc/ ja /sys/, joten riittänee, kun osaat lukea tekstitiedostoja.
Toteutus
Harjoitus tehdään työasemalla, jolle on asennettu Xubuntu 14.04 LTS Desktop aikaisemmin. Olen jo aikaisemmin ajanut komentoja kuten sudo apt-get update, joten paketit ovat ajantasalla. Tietokoneen rauta on seuraavanlaista:
Emolevy: Asus M3N78 PRO
Prosessori: AMD Phenom 9859 Quad Core
Ram: 4GB DDR2 800MHz
Näytönohjain: Nvidia GeForce 8200
Kovalevy: WD 320GB
Munin -ohjelman asennus
Etsitään mitä eri paketteja löytyy sanalla Munin ajamalla apt-cache search munin ja asennetaan peruspaketti komennolla sudo apt-get install munin. Ohjelman asennuttua katsoin ohjelman manuaalia man munin. Ohjelman saa näkyviin Firefox selaimeen kirjoittamalla osoiteriville /var/cache/munin/www/index.html. Ohjelmasta löytyy kategorioita eri valvontakohteille.
Stress
Asennetaan stress -ohjelma, jotta saadaan järjestelmää kuormitettua sudo apt-get install stress htop. Samalla asennetaan myös htop, joka on versio top-ohjelmasta. Top -ohjelma on tarkoitettu prosessien resurssien kulutuksen seuraamiseen. Käynnistetään stress komennolla stress –cpu 8 –io 4 –stress –cpu 8 –io 4 –vm 2 –vm-bytes 512M –timeout 1m. ”-cpu 8” parametri käynnistää 8 prosessia kuormittamaan cpu:ta, ”-io 4” kuormittaa io-väylää, ”-vm 2 –vm-bytes 512M” kuormittaa muistia 2 prosessilla, joista kukin on 512M ja ”timeout 1m” asettaa aikakatkaisun minuuttiin.
Analyysiä
htop
Testissä stress kuormitti CPU:ta noin 24-30% ja muistia 3-13% vaihdellen yllättävän paljon. Vaihdoin htop listan järjestystä prosessorin ja muistin kuormituksen mukaan komennoilla shift+m ja shift+p.
ps
Laitoin stress -ajon pyörimään taustalle ja tarkastelin tilannetta komennolla ps waux | grep meri, joka näyttää käyttäjän meri prosessit. Opiskelin ps:n eri parametrejä ja laadin itselleni tällaisen komennon: ps -U meri -o pid,euser,stat,cmd,%mem,%cpu. Se näyttää käyttäjän meri prosessit, cpu ja ram käytön ynnä muuta.
free -m
Sitten tarkastelin muistin tilannetta free -m komennolla. Tulokset on taulukossa luettavuuden takia:
meri@p01:~$free -m | ||||||
total | used | free | shared | buffers | cached | |
---|---|---|---|---|---|---|
Mem: | 3699 | 2195 | 1504 | 21 | 89 | 694 |
-/+ buffers/cache: | 1411 | 2288 | ||||
Swap: | 3836 | 0 | 3836 |
Tähän komentoon kun lisätään -h, niin saadaan tiedot paremmassa muodossa eli ns. ”human readable form”
meri@p01:~$ free -m -h | ||||||
total | used | free | shared | buffers | cached | |
---|---|---|---|---|---|---|
Mem: | 3,6G | 1,4G | 2,2G | 21M | 91M | 695M |
-/+ buffers/cache: | 670M | 3,0G | ||||
Swap: | 3,7G | 0B | 3,7G |
iotop
Seuraavaksi tarkastellaan iotop ohjelmaa. Ajoin komennon iotop -o, mutta järjestelmä kertoi, että se ei ole asennettuna ajoin siis komennon sudo apt-get install iotop ja sitten uudelleen iotop -o, jolloin järjestelmä huomautti, että tämä tulee ajaa sudona. Viimein onnisti: sudo iotop -o. Aiheutin vähän liikettä aikaisemmin mainitulla stress komennolla. Tältä se näytti:
Tämä auttanee selvittämään, mikäli jossain järjestelmässä on pullonkauloja. Lopetin iotopin komennolla ”q”.
iftop
Sitten ajetaan iftop, joka tutkii verkkoliikennettä. Jälleen asennetaan ohjelma ensin sudo apt-get install iftop. Ohjelmaan täytyy antaa parametriksi oikea verkkokortti, joten tarkastetaan oikea ip addr -komennolla. Verkkokorttini on eth0 joten komennoksi tulee sudo iftop -i eth0. Aiheutin liikennettä pingaamalla google.comia samalla. Kiinnitin huomiota siihen, että windows 7 työasemani ottaa jatkuvasti yhteyttä tähän linux koneeseen. Molemmat ovat siis samassa lähiverkossa.
Munin
Menin katsomaan Muninin tuotoksia.
Se oli toiminut hyvin ja piirtänyt kuvaajaa, mutta en saa Dynazoomia toimimaan eli yksittäisen kuvaajan kun yrittää avata suuremmaksi, niin kuvaa ei ole. Googletin mahdollista ratkaisua ja sellaista ei ole toistaiseksi löytynyt.
Kokeilin täältä löytynyttä ohjetta, mutta se ei auttanut:
But enabling the apache2 cgi (or cgid) makes the dynazoom work. sudo a2enmod cgi; sudo /etc/init.d/apache2 restart
Sitten löysin toisen ohjeen, kokeillaan sitä. Siirrytään cd:llä seuraavaan hakemistoon ja ajetaan seuraava komento (oli pakko sudottaa). meri@p01:/etc/munin$ sudo nano apache.conf. Muokataan tiedostoa ohjeen mukaan ja tallennetaan Ctrl+z, sitten Y ja enter.
Please edit this file: /etc/munin/apache2.conf # Enables fastcgi for munin-cgi-graph if present ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph Order allow,deny # Allow from localhost 127.0.0.0/8 ::1 Allow from all # AuthUserFile /etc/munin/munin-htpasswd # AuthName "Munin" # AuthType Basic # require valid-user SetHandler fastcgi-script ScriptAlias /munin-cgi/munin-cgi-html /usr/lib/munin/cgi/munin-cgi-html Order allow,deny # Allow from localhost 127.0.0.0/8 ::1 Allow from all # AuthUserFile /etc/munin/munin-htpasswd # AuthName "Munin" # AuthType Basic # require valid-user SetHandler fastcgi-script You will see "Allow from localhost 127.0.0.0/8 ::1" for both munin-cgi-graph and munin-cgi-html. Please comment these lines out and add "Allow from all" (change this depending on your security settings of course) and restart apache2. Now you should be able to zoom to your graphs.
Eipä auttanut tämäkään. Tällä erää ei ole enempää aikaa käyttää tuon ihmettelyyn. Analysointia on vaikea suorittaa ilman tarkempaa kuvaa.
Lokit
Linuxissa lokit löytyvät paikasta /var/log/ kurkistetaan siis mitä täältä löytyy.
Katselin muutamia lokeja ensin esim. munin kansiosta, sitten menin kansioon apache2 (cd apache2) ja avasin sieltä access.log tiedoston nanolla: nano access.log. Huomasin, että sinne oli tullut muun muassa Muninin auheuttamia rivejä. Loin tälle koneelle webpalvelimen jo aikaisemmassa tehtävässä, joten menin firefoxilla osoitteeseen localhost. Sen jälkeen menin uudelleen katsomaan apache2:n access.logia ja siellä oli uusia rivejä.
Tarkastellaan lähemmin näitä rivejä:
127.0.0.1 - - [06/Sep/2015:13:38:18 +0300] "GET / HTTP/1.1" 200 3594 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0" 127.0.0.1 - - [06/Sep/2015:13:38:18 +0300] "GET /icons/ubuntu-logo.png HTTP/1.1" 304 179 "http://localhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firef$ 127.0.0.1 - - [06/Sep/2015:13:38:18 +0300] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0" 127.0.0.1 - - [06/Sep/2015:13:40:04 +0300] "GET /server-status?auto HTTP/1.1" 200 497 "-" "munin/2.0.19-3 (libwww-perl/6.05)"
Apachen dokumentaatiosta löytyy selitteet, käydään läpi yllä olevan lokin ensimmäinen rivi:
- 127.0.0.1 on lähde ip osoite, josta yhteyttä on otettu. Tässä tapauksessa localhost.
- – on tietoa, jota ei ole saatavilla. Tässä kohtaa se tarkoittaa RFC 1413 Ident protokollaa. Apachen mukaan tämä tieto ei ole luotettavaa vaikka olisikin saatavilla, joten sillä ei juuri ole väliä. Lisätietoja wikipediasta.
- – jälleen viiva eli tietoa ei ole saatavilla. Tässä pitäisi olla käyttäjän userid eli käyttäjätunnus. Tunnus näkyy vain mikäli autentikointi on vaadittua. Apachen perus sivulle ei tarvitse kirjautua, joten tässä on viiva.
- [06/Sep/2015:13:38:18 +0300] on aikaleima hetkestä, jolloin pyyntö on otettu vastaan. Muoto on päivä/kuukausi/vuosi:tunnit:minuutit:sekunnit aikavyöhyke.
- ”GET / HTTP/1.1” eli request line. Apachen mukaan tässä on tärkeää tietoa. Ensin kerrotaan yhteydenottajan metodi eli GET. Sitten kerrotaan mitä on pyydetty eli tässä tapauksessa se puuttuu kokonaan (voisi olla esimerkiksi kuvan nimi). Sitten tulee protokolla eli HTTP 1.1.
- 200 on statuskoodi, jonka palvelin lähettää asiakkaalle. Numerolla 2 alkavat koodit tarkoittavat onnistunutta vastausta. 3 alkavat = uudelleen ohjaus, 4 alkavat = asiakkaan aiheuttama virhe ja 5 alkavat palvelimen virhe. Lista koodeista täältä.
- 3594 tarkoittaa palautetun objektin kokoa.
- ”-” paikalla olisi osoite, josta asiakas on siirtynyt. Tässä on kirjoitettu osoite tyhjään välilehteen, joten sellaista osoitetta ei tässä tapauksessa ole.
- ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0” sisältää tiedon, jonka asiakas-selain lähettää itsestään. Tässä näyttäisi olevan selaimen ja käyttäjärjestelmän tietoja.
Apache kutsuu tätä lokitus-formaattia combined log format -nimellä. Katsotaan vielä mitä eroavaisuuksia muilla riveillä on.
- Lokirivissä 2 näkyy kohta ”GET /icons/ubuntu-logo.png HTTP/1.1” ja tässä on siis pyydetty kohde, joka on ubuntu-logo.png. Nyt näkyy myös tuo osoite, josta asiakas on tullut eli http://localhost/.
- Lokirivissä 3 on paluukoodiksi tullut 404 eli siis varmasti yksi tunnetuimmista koodeista, joka tarkoittaa ettei pyydettyä resurssia löytynyt – ”not found”
- Lokirivi 4 on puolestaan Muninin aiheuttama. Tämä pisti silmään: ”GET /server-status?auto HTTP/1.1” eli tuo server-status?auto kohta onkin vain Muninin pyytämä tuon niminen resurssi. ”munin/2.0.19-3 (libwww-perl/6.05)” puolestaan on tieto, jonka munin lähettää itsestään palvelimelle.
Nagios valvonta
Asennus
Asennetaan siis Nagios, lähtötietoja ei oikeastaan ollut. Etsin oikean paketin komennolla apt-cache nagios. Nagios3 näyttää olevan täysi paketti joten asentamaan: sudo apt-get install nagios3. Asennus pyytää valitsemaan sähköpostipalvelimen asetukset, valitsen internet site. Sitten pyydetään domainia. Annan oman ostetun domainini, esim. ”example.com”. Sen jälkeen pyydetään admin salasanaa nagiosadminille ja annan vahvan sellaisen.
Nagiokseen pääsee selaimella kiinni osoitteessa http://localhost/nagios3 (tai localhostin tilalle ip osoite). Sivu pyysi asennuksen aikana annettuja tunnuksia ja päästi sisään:
Täältä näkyy yksi hälytys.
Katsotaan ongelmaa tarkemmin:
Googletan virheen ja selviää, että tämä virhe tulee aina oletuskonfiguraatiolla, koska edes rootilla ei ole oikeutta tuohon hakemistoon.
Aika ei riitä Nagioksen konfigurointiin sen paremmin tällä erää.
Lähteet
http://www.terokarvinen.com
https://lehtonenkari.wordpress.com/tag/munin/
About
This document can be copied and edited according to the GNU General Public License (version 3 or newer). http://www.gnu.org/licenses/gpl.html
Based on a course by Tero Karvinen, http://www.terokarvinen.com