[[kategooria:õpetused]]
==Mis on MRTG?==
MRTG on vaba tarkvara serverite ja ka igasuguse muu info jälgimiseks. Tarkvara eesmärgiks on joonistada graafikuid kindla kasutaja poolt määratud ajavahemiku järel. Võimalik on jälgida nii serveri protsessori koormust kui ka vajadusel välise temperatuuri muutumist (selleks siis vaja muidugi vastavaid vahendeid). MRTG kasutab peamiselt oma graafikute joonistamisel tarkvara SNMP poolt kogutud infot.
MRTG on kirjutatud perlis ning välja lastud Gnu GPL litsentsi all.
Näide MRTG poolt joonistatud graafikust:
[[Pilt:Cpu-day.png]]
[root@localhost root]# service snmpd start
Sellega on algus tehtud. Kelle distributsioon taolisi pakihaldureid ei võimalda, siis MRTG installimisest täpsemalt võib leida aadressilt [http://peopleoss.ee.ethzoetiker.ch/~oetikermrtg/webtoolsdoc/mrtg-unix-guide.en.html http://oss.oetiker.ch/mrtg/doc/mrtg-unix-guide.en.html ].
==Esimene proov==
public@localhost</pre>
Käsu kergem lahtiseletus oleks järgmine: WorkDir: on juba eelmainitud asukoht, kuhu hakkab süsteem uusi faile looma, Options[_]: tähendab seda, et järgnevad valikud kehtivad kõigi sisestatud graafide graafikute kohta, seda märgib [_], output on juba kõigile iseenesest mõistetavalt koht, kuhu käskluse poolt toodetud fail välja kirjutatakse ning public@localhost on vajalik selleks, et ära määrata, millise masina infot kuulatakse.
Käskluse tulemuseks on pikk cfg fail, mis sisaldab meile palju ebavajalikku. Seega puhastan ma selle igasugustest ebavajalikest kommentaariridadest, nii et jääks vaid need võrguseadmed, mida ma ka tegelikult tahan jälgida:
<pre>
sysdescr "Linux 2.6.x"
syscontact sander85 <sander85@ÄT uno.PUNKT ee>
sysname Kodune töölaud
syslocation Misiganes :) </pre>
Järgmisena tuleb koostada leht, mis hakkab kogu seda infot meile kuvama, selleks kasutame käsklust '''indexmaker'''. Selles näites kirjutan üle juba eelnevalt mainitud asukohas olevad failid (/var/www/html/mrtg), sest sinna on määratud ka WorkDir. Kui on soov aga WorkDir-i muuta, siis peab vastavalt ümber liigutama ka kõik selles kaustas olevad pildifailid (mrtg-l.png jne).
[root@localhost root]# indexmaker /var/www/html/mrtg/mrtg.cfg --output /var/www/html/mrtg/index.html
See käsklus tekitab index.html faili, mida võib vaadata aadressilt http://sinuserver/mrtg/
Sellega peakski olema loodud ka esimene graafik (millel klikates avaneb pikem ülevaade kuulatavast objektist), mis joonistub vastavalt konfiguratsioonile paremalt ja mille edasiseks arenguks peate veel jätkuvalt jooksutama käsklust mrtg. Siiski on ületatud kõige keerulisem peatükk, kui siiani on kõik õnnestund, siis edasine on üldiselt lihtne.
==MRTG ja omaloodud scriptid==
Selles peatükis teen väikse ülevaate, kuidas on võimalik MRTG ühendada omaloodud scriptidega.
Kuna erinevad distributsioonid ja arvutid erinevad suuresti, siis selles näites kasutatav info ei pruugi kõigil arvutitel kattuda. Aga kui asja töökäik selge, siis peaks olema võimalik vajalikud andmed oma arvutist ise kätte saada.
Oma näites kasutan infot, mida edastavad sensorid, seega on vajalik installeerida pakk nimega '''lm_sensors'''
[root@localhost sander]# urpmi lm_sensors
Peale installi on vaja lm_sensors konfigureerida, selleks tuleb root kasutajana käivitada järgmine käsk:
[root@localhost sander]# sensors-detect
Et sensorite jälgimine edukalt tööle hakkaks, on soovitatav süsteemile taaskäivitus teha
[root@localhost sander]# reboot
Peale taaskäivitust peaks olema võimalik käsklusega sensors näha, millised andmed on arvutist jälgitavad.
<pre>[root@localhost sander]# sensors
it87-isa-0290
Adapter: ISA adapter
VCore 1: +1.70 V (min = +1.42 V, max = +1.57 V) ALARM
VCore 2: +2.42 V (min = +2.40 V, max = +2.61 V)
+3.3V: +6.40 V (min = +3.14 V, max = +3.46 V) ALARM
+5V: +5.13 V (min = +4.76 V, max = +5.24 V)
+12V: +11.78 V (min = +11.39 V, max = +12.61 V)
-12V: -19.38 V (min = -12.63 V, max = -11.41 V) ALARM
-5V: -8.58 V (min = -5.26 V, max = -4.77 V) ALARM
Stdby: +5.13 V (min = +4.76 V, max = +5.24 V)
VBat: +1.73 V
fan1: 0 RPM (min = 0 RPM, div = 2)
fan2: 4141 RPM (min = 2657 RPM, div = 2)
fan3: 0 RPM (min = 2657 RPM, div = 2)
M/B Temp: +73°C (low = +15°C, high = +40°C) sensor = thermistor
CPU Temp: +39°C (low = +15°C, high = +45°C) sensor = thermistor
Temp3: +41°C (low = +15°C, high = +45°C) sensor = thermistor
eeprom-i2c-2-51
Adapter: SMBus Via Pro adapter at 0500
Memory type: SDR SDRAM DIMM
Memory size (MB): 256
eeprom-i2c-2-50
Adapter: SMBus Via Pro adapter at 0500
Memory type: SDR SDRAM DIMM
Memory size (MB): 256
eeprom-i2c-1-50
Adapter: NVIDIA display adapter bus 0
Either use the ddcmon driver instead of the eeprom driver,
or run the decode-edid.pl script.</pre>
Info, mida mina tahan hetkel kasutada on järgmine:
CPU Temp: +39°C (low = +15°C, high = +45°C) sensor = thermistor
Temp3: +41°C (low = +15°C, high = +45°C) sensor = thermistor
Esimene neist on protsessori temperatuur ning teine toiteploki oma.
Et neid kasutada on vaja kirjutada script, mida MRTG saaks kasutada. Et skripte võib ajapikku juurde tekkida ja alati võib tulla vajadus neid ümber teha, siis teen selleks eraldi kausta, et kergem hiljem leida oleks.
[root@localhost sander]# mkdir /var/www/html/mrtg/scriptid
Järgmisena loome sellesse kausta faili '''temperatuurid.sh''', mille sisu on järgmine:
<pre>#!/bin/sh
cpu=`sensors |grep CPU | awk '{print $3}' | sed -e 's/+//' -e 's/°C//'`
echo $cpu
psu=`sensors |grep Temp3 | awk '{print $2}' | sed -e 's/+//' -e 's/°C//'`
echo $psu
echo "a long time"
echo "Kodune töölaud"</pre>
Et natuke selgust majja tuua, siis on see lühike skript, mis käivitab järjestikku mõningad käslused. Kui vaadata, mis järgneb cpu= real, siis esimesena käivitatakse käsk sensors, toruga eraldatuna leitakse sealt rida, mis sisaldab stringi CPU. Järgmine käslus prindib sellelt realt välja kolmanda stringi, ehk siis algkujul +39°C ning viimane käsklus eemaldab selle stringi küljest meile ebavajlikud märgid. Tulemuseks jääb vaid 39. Käsklused echo "a long time" ning echo "Kodune töölaud" on vajalikud selleks, et saaks täidetud see info kui kaua on masin üleval olnud ja mis masinaga on tegu (silmas tuleb pidada seda, et MRTG võrdleb alati kahte tulemust, seega kui on soov jälgida vaid ühte sensorit või mõnda muud tulemust, siis tuleb ta välja printida kaks korda järjest). Kellel tahtmist/viitsimist, võib ka uptime'i kontrollimiseks if lausetega scripti valmis kribada :)
Et kontrollida, kas script ka töötab, on vaja talle anda käivitamiseks vajalikud õigused
[root@localhost root]# chmod +x /var/www/html/mrtg/scriptid/temperatuurid.sh
Ning siis script käivitada
<pre>[root@localhost sander]# /var/www/html/mrtg/scriptid/temperatuurid.sh
39
41
a long time
Kodune töölaud</pre>
Nagu näha on tulemus käes ja üle jääb see vaid MRTGga ühendada.
<pre>### Temperatures
Target[temperatures]: `/var/www/html/mrtg/scriptid/temperatuurid.sh`
Title[temperatures]: Temperatures
PageTop[temperatures]: <H1>Temperatures</H1>
MaxBytes[temperatures]: 100
YLegend[temperatures]: °C
ShortLegend[temperatures]: °C
LegendI[temperatures]: CPU
LegendO[temperatures]: PSU
Legend1[temperatures]: Temperature of CPU
Legend2[temperatures]: Temperature of PSU
Options[temperatures]: gauge, growright, nopercent</pre>
Sellega teen ka siinkohal õpetusele lõpu, kellel ideid mõne muu info jälgimiseks, siis oleks teretulnud näha neid kommentaarides :)
==MRTG kasutamine edasijõudnutele==
Kui mõnel tekib küsimus, et miks viimane rida välja on kommenteeritud, siis vastus on lihtne, see on lihtsalt maitse asi ja jätsin selle rea alles, et ta oleks näitena olemas kui kellegil on soovi pidevalt maksimaalses skaalas jooksvaid graafe graafikuid jälgida :)
Kogu cfg faili sisu peale protsessori lisamist näeb minul välja järgnev:
# System: Kodune töölaud
# Description: "Linux 2.6.x"
# Contact: sander85 <sander85@ÄT uno.PUNKT ee>
# Location: Misiganes :)
######################################################################
<TABLE>
<TR><TD>System:</TD> <TD>Kodune töölaud in Misiganes :)</TD></TR>
<TR><TD>Maintainer:</TD> <TD>sander85 <sander85@ÄT uno.PUNKT ee></TD></TR>
<TR><TD>Description:</TD><TD>eth0 </TD></TR>
<TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
# System: Kodune töölaud
# Description: "Linux 2.6.x"
# Contact: sander85 <sander85@ÄT uno.PUNKT ee>
# Location: Misiganes :)
######################################################################
<TABLE>
<TR><TD>System:</TD> <TD>Kodune töölaud in Misiganes :)</TD></TR>
<TR><TD>Maintainer:</TD> <TD>sander85 <sander85@ÄT uno.PUNKT ee></TD></TR>
<TR><TD>Description:</TD><TD>eth0 </TD></TR>
<TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
Autor:[http://pingviin.org/profile.php?mode=viewprofile&u=69 Sander85]