Serveri jälgimine MRTG abiga Linuxis

Allikas: Pingviini viki


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:

Cpu-day.png


Paigaldame vajaliku

MRTG edukaks jooksutamiseks on peamiselt vaja kahte asja MRTGd ennast ning snmp-d, millelt MRTG oma peamise info saab. Eelduseks on loomulikult, et masinas jookseb juba veebiserver (Apache või mõni muu samalaadne), on olemas gd, libpng ning zlib.

Kõige lihtsam moodus mrtg ning snmp paigaldamiseks on nende installimine distributsiooni pakihalduriga, olgu selleks siis yum, yast, apt-get või mõni muu samalaadne.

Järgneva õpetuse koostamisel kasutan näidetena Mandriva Linuxi pakihaldurit urpmi.

Esimese asjana tuleb paigaldada MRTG ise, mis üldjuhul ka snmp-d nõuab, kui kasutusel on mõni pakihaldur.

[root@localhost root]# urpmi mrtg

Järgnevalt tuleb käivitada snmp service.

[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://oss.oetiker.ch/mrtg/doc/mrtg-unix-guide.en.html.

Esimene proov

Kui MRTG on kenasti peal, siis on aeg teha algust ja vaadata, kas ka mingi tulemuse saab. Selleks tuleb kindlaks teha, kuhu MRTG installimisel on paigutatud fail mrtg.cfg.

[root@localhost root]# locate mrtg.cfg

kui tulemus saabub kohe, on hästi, kui mitte, siis tuleb uuendada andmebaasi:

[root@localhost root]# updatedb

Üldjuhul paigutatakse see fail asukohta /var/www/html/mrtg/, kuid võib ka esineda erinevusi, olenevalt distributsioonist ja paigaldamisest.

Ka faili sisu erineb erinevate distributsioonide ja MRTG versioonide tõttu üsna palju. Osad versioonid koostavad installides esimese konfiguratsiooni ise ära ja sellega antakse algus võrgu jälgimiseks ära, teised aga koostavad täielikult konfimata faili. Selles õpetuses tulebki algust teha tühjalt lehelt.

Ehk siis algne faili sisu näeb välja järgnev:

######################################################################
# Multi Router Traffic Grapher -- Example Configuration File
######################################################################
# This file is for use with mrtg-2.0
#
# Note:
#
# * Keywords must start at the begin of a line.
#
# * Lines which follow a keyword line which do start
#   with a blank are appended to the keyword line
#
# * Empty Lines are ignored
#
# * Lines starting with a # sign are comments.

# Where should the logfiles, and webpages be created?

# Minimal mrtg.cfg
#--------------------

WorkDir: /var/www/html/mrtg
#Target[r1]: 2:public@myrouter.somplace.edu
#MaxBytes[r1]: 1250000
#Title[r1]: Traffic Analysis
#PageTop[r1]: <H1>Stats for our Ethernet</H1>

Kuna selle konfiga ei ole suurt midagi peale hakata, siis koostame uue faili käsklusega cfgmaker.

Eelnevalt aga kontrollime, kas snmp kaudu on võimalik mingisugust infot saada. Selleks kasutame järgnevat käsklust:

[root@localhost root]# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex

kui vastav käsklus tööle ei hakka, tuleb järelikult paigaldada ka net-snmp-utils.

Kui tulemuseks on midagi taolist:

[root@localhost root]# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
ip.ipAddrTable.ipAddrEntry.ipAdEntIfIndex.127.0.0.1 = 1
ip.ipAddrTable.ipAddrEntry.ipAdEntIfIndex.192.168.0.3 = 2 

siis võib asuda cfgmaker'i kasutamise juurde, muul juhul tuleb seadistada snmp. (Tavaliselt just Red Hat'i baasil töötavad süsteemid on turvalisuse mõttes eelkonfigureerimata.)

Sellisel juhul tuleks snmpd.conf faili viia sisse järgmised muudatused: rida:

com2sec notConfigUser default public

tuleb asendada ridadega (asenda 192.168.0.0/24 oma võrgu IPdega):

com2sec local localhost public
com2sec mynetwork 192.168.0.0/24 public

read:

group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser

tuleb asendada ridadega:

group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork

seejärel tuleb kerida alla reani:

view systemview included system

ning asendada see reaga:

view all included .1 80

kerida veel alla ning vahetada rida:

access notConfigGroup "" any noauth exact systemview none none

ridadega:

access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none

Peale seda tuleb snmp uuesti käivitada

service snmp restart

ning proovida uuesti käsklust

[root@localhost root]# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex

tulemuseks peaks tulema midagi taolist nagu ülalpool näidatud ning nüüd võib jätkata mrtg.cfg faili loomisega.

Käskluses esinevad kaldkriipsud peavad sinna ka jääma, sest need tähistavad seda, et murtud rida sisestataks kui üks pikk rida käsklust.

[root@localhost root]# cfgmaker --global 'WorkDir: /var/www/html/mrtg' \
--global 'Options[_]: bits,growright' \
--output /var/www/html/mrtg/mrtg.cfg \
public@localhost

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 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:

WorkDir: /var/www/html/mrtg
Options[_]: bits, growright

### Interface 3 >> Descr: 'eth0' | Name: '' | Ip: '192.168.11.4' | Eth: '00-80-1e-15-8f-38' ###

Target[localhost_3]: 3:public@localhost:
SetEnv[localhost_3]: MRTG_INT_IP="192.168.11.4" MRTG_INT_DESCR="eth0"
MaxBytes[localhost_3]: 12500000
Title[localhost_3]: Traffic Analysis for 3 -- Not defined (edit /etc/snmp/snmpd.conf or use snmpconf)
PageTop[localhost_3]: <H1>Traffic Analysis for 3 -- Not defined (edit /etc/snmp/snmpd.conf or use snmpconf)</H1>
 <TABLE>
   <TR><TD>System:</TD>     <TD>Not defined (edit /etc/snmp/snmpd.conf or use snmpconf) in Not defined (edit /etc/snmp/snmpd.conf or use snmpconf)</TD></TR>
   <TR><TD>Maintainer:</TD> <TD>root <root@localhost> (configure /etc/snmp/snmp.local.conf or use snmpconf)</TD></TR>
   <TR><TD>Description:</TD><TD>eth0  </TD></TR>
   <TR><TD>ifType:</TD>     <TD>ethernetCsmacd (6)</TD></TR>
   <TR><TD>ifName:</TD>     <TD></TD></TR>
   <TR><TD>Max Speed:</TD>  <TD>100.0 Mbits/s</TD></TR>
   <TR><TD>Ip:</TD>         <TD>192.168.11.4 ()</TD></TR>
 </TABLE>

Nagu märgata võib, siis teatatakse meile, et midagi on jäänud konfigureerimata failis snmpd.conf, taolised vead võime hetkel antud cfg failist ise mõne redaktoriga eemaldada, aga et neid edaspidi ei tekiks, siis korrastame ka tolle snmpd.conf faili. Selleks tuleb teil leida failist /etc/snmp/snmpd.conf järgmised read ning need vastavalt vajadusele ümber muuta:

sysdescr        "Linux 2.6.x"
syscontact      sander85 <sander85 ÄT uno PUNKT ee>
sysname         Kodune töölaud
syslocation     Misiganes :) 

Et muutused rakenduks, siis tuleb vastav service taaskäivitada

[root@localhost root]# service snmpd restart

Järgmine kord enam nende muutujatega nüüd probleeme ei tule. Ja kellel soovi, võib ka kohe uue cfg faili genereerida :)

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/

Kui kõik õnnestus, siis on näha üsna tühi lehekülg, kust puuduvad igasugused graafikud.

Nüüd jääb üle vaid tekitada ka esimene graafik. Selleks peame kasutama käsklust mrtg. NB! paar esimest korda tekivad selle käsu jooksutamisel errorid, mida ei ole vaja väga tõsiselt võtta, need tekivad iga kord kui on lisatud mõni uus kuulatav objekt (kui näete, siis saate aru).

[root@localhost root]# mrtg /var/www/html/mrtg/mrtg.cfg

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 kasutamine edasijõudnutele

Seda peatükki soovitaks lugeda alles siis kui eelnevad peatükid on läbitud ning võrgu liikluse jälgimine toimib juba automaatselt iga 5 minuti tagant.

Esimese asjana võtame siis ette protsessori koormuse jälgimise. Selleks on vaja kindlaks teha, et süsteemis jookseb korralikult snmp, sest just selle jaox vajalikke .txt faile on vaja edaspidi kasutada. Järgnevalt teemegi kindlaks, kas vastavad mib failid, mida me vajame, on süsteemis olemas

[root@localhost root]# locate mib | grep snmp
/usr/share/doc/net-snmp-5.2.1/README.mib2c
/usr/share/snmp/mibs
/usr/share/snmp/mibs/DISMAN-EVENT-MIB.txt
...
...


Võib järeldada, et kõik vajalik on olemas.

Et protsessori koormust jälgida vajame me faili /usr/share/snmp/mibs/UCD-SNMP-MIB.txt ning see tuleb kasutusele võtta cfg failis, kus peame ta sisse laadima. Selleks tuleb cfg faili lisada järgmine rida:

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt

Ning nüüd ei ole muud kui võib ka ülejäänud info koormuse jälgimiseks cfg faili kopida. Info on järgmine:

### CPU Monitoring

Target[cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@localhost + ssCpuRawSystem.0&ssCpuRawSystem.0:public@localhost + ssCpuRawNice.0&ssCpuRawNice.0:public@localhost
Title[cpu]: Server CPU Load
PageTop[cpu]: <H1>CPU Load</H1>
MaxBytes[cpu]: 100
ShortLegend[cpu]: %
YLegend[cpu]: CPU Utilization
Legend1[cpu]: Current CPU percentage load
LegendI[cpu]: Used
LegendO[cpu]:
Options[cpu]: growright,nopercent
#Unscaled[cpu]: ymwd


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 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 :)
######################################################################

WorkDir: /var/www/html/mrtg
Options[_]: bits, growright

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt

### Interface 3 >> Descr: 'eth0' | Name: '' | Ip: '192.168.11.4' | Eth: '00-80-1e-15-8f-38' ###

Target[localhost_3]: 3:public@localhost:
SetEnv[localhost_3]: MRTG_INT_IP="192.168.11.4" MRTG_INT_DESCR="eth0"
MaxBytes[localhost_3]: 12500000
Title[localhost_3]: Traffic Analysis for 3 -- Kodune töölaud
PageTop[localhost_3]: <H1>Traffic Analysis for 3 -- Kodune töölaud</H1>
 <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>
   <TR><TD>ifName:</TD>     <TD></TD></TR>
   <TR><TD>Max Speed:</TD>  <TD>100.0 Mbits/s</TD></TR>
   <TR><TD>Ip:</TD>         <TD>192.168.11.4 ()</TD></TR>
 </TABLE>

### CPU Monitoring

Target[cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@localhost + ssCpuRawSystem.0&ssCpuRawSystem.0:public@localhost + ssCpuRawNice.0&ssCpuRawNice.0:public@localhost
Title[cpu]: Server CPU Load
PageTop[cpu]: <H1>CPU Load</H1>
MaxBytes[cpu]: 100
ShortLegend[cpu]: %
YLegend[cpu]: CPU Utilization
Legend1[cpu]: Current CPU percentage load
LegendI[cpu]: Used
LegendO[cpu]:
Options[cpu]: growright, nopercent
#Unscaled[cpu]: ymwd

Silmas tuleb pidada seda, et target real olev info peab cfg faili olema sisestatud ühe reana.

Et muutused ka rakenduks, siis tuleb läbi käia tavapärased sammud

[root@localhost root]# indexmaker /var/www/html/mrtg/mrtg.cfg --output /var/www/html/index.html
[root@localhost root]# mrtg /var/www/html/mrtg/mrtg.cfg 

Edaspidised cfg faili täiendused annan vaid jupi kaupa, et mitte peatükki liiga pikaks venitada. Kogu cfg faili võib leida viimasest peatükist.

Mälu kasutatavuse jälgimiseks on mitmeid viise, esile toon neist kaks.

Esimene neist kuvab kogu olemasoleva mälu ja sellest vaba oleva mälu mahu.

### Memory Monitoring (Total Versus Available Memory)

Target[memory]: memAvailReal.0&memTotalReal.0:public@localhost
Title[memory]: Free Memory
PageTop[memory]: <H1>Free Memory</H1>
MaxBytes[memory]: 100000000000
ShortLegend[memory]: B
YLegend[memory]: Bytes
LegendI[memory]: Free
LegendO[memory]: Total
Legend1[memory]: Free memory, not including swap, in bytes
Legend2[memory]: Total memory
Options[memory]: gauge,growright,nopercent
kMG[memory]: k,M,G,T,P,X

cfg fail salvestada ja nagu tavaliselt ning ka tavapärased käsklused uue konfiguratsiooni jõustumiseks

[root@localhost root]# indexmaker /var/www/html/mrtg/mrtg.cfg --output /var/www/html/index.html
[root@localhost root]# mrtg /var/www/html/mrtg/mrtg.cfg 

Teine graafik mälu kasutusest kujutab aga protsendilist vaba mälu

### Memory Monitoring (Percentage usage)

Title[mempercent]: Percentage Free Memory
PageTop[mempercent]: <H1>Percentage Free Memory</H1>
Target[mempercent]: ( memAvailReal.0&memAvailReal.0:public@localhost ) * 100 / ( memTotalReal.0&memTotalReal.0:public@localhost )
options[mempercent]: growright,gauge,transparent,nopercent
Unscaled[mempercent]: ymwd
MaxBytes[mempercent]: 100
YLegend[mempercent]: Memory %
ShortLegend[mempercent]: Percent
LegendI[mempercent]: Free
LegendO[mempercent]: Free
Legend1[mempercent]: Percentage Free Memory
Legend2[mempercent]: Percentage Free Memory


Silmas tuleb pidada seda, kuidas kõik matemaatilised operandid on muudest märkidest tühikuga eraldatud.

Ning loomulikult

[root@localhost root]# indexmaker /var/www/html/mrtg/mrtg.cfg --output /var/www/html/index.html
[root@localhost root]# mrtg /var/www/html/mrtg/mrtg.cfg

Edasi tutvustaks veel kahte võrgu jälgimise võimalust. Esimene neist jälgib minuti jooksul loodud uusi ühendusi ning teine püsivamaid ühendusi (nagu ssh või suuremat faili ülekandev ftp).

### New TCP Connection Monitoring (per minute)

Target[newconns]: tcpPassiveOpens.0&tcpActiveOpens.0:public@localhost
Title[newconns]: Newly Created TCP Connections
PageTop[newconns]: <H1>New TCP Connections</H1>
MaxBytes[newconns]: 10000000000
ShortLegend[newconns]: c/s
YLegend[newconns]: Conns / Min
LegendI[newconns]: In
LegendO[newconns]: Out
Legend1[newconns]: New inbound connections
Legend2[newconns]: New outbound connections
Options[newconns]: growright,nopercent,perminute
### Established TCP Connections

Target[estabcons]: tcpCurrEstab.0&tcpCurrEstab.0:public@localhost
Title[estabcons]: Currently Established TCP Connections
PageTop[estabcons]: <H1>Established TCP Connections</H1>
MaxBytes[estabcons]: 10000000000
ShortLegend[estabcons]:
YLegend[estabcons]: Connections
LegendI[estabcons]: In
LegendO[estabcons]:
Legend1[estabcons]: Established connections
Legend2[estabcons]:
Options[estabcons]: growright,nopercent,gauge

Ning lõpuks seaded rakendada

[root@localhost root]# indexmaker /var/www/html/mrtg/mrtg.cfg --output /var/www/html/index.html
[root@localhost root]# mrtg /var/www/html/mrtg/mrtg.cfg

Selle peatüki lõpetan kõvaketta partitsioonide protsendilise täituvuse jälgimisega. Oma näites kasutan partitsioone / ning /mnt/win_d. Et teada saada, milliseid partitsioone on võimalik oma masinas jälgida, võib kasutada käsklust df

[root@localhost root]# df
Failisüsteem          Maht Kasut  Vaba Kas% Haagitud
/dev/hdc7             8,6G  1,9G  6,4G  23% /
/dev/hda1              15G   12G  3,0G  80% /mnt/win_e
/dev/hdc1              29G   21G  7,4G  74% /mnt/win_g
/dev/hda5              98G   34G   65G  35% /mnt/win_d


Erinevate distributsioonide puhul võib käskluse df poolt väljastatud info kuju erineda, kuid üldiselt on võimalik välja lugeda, millised partitsioonid on süsteemile külge haagitud.

Järgmisena tuleb soovitud partitsioonid kanda ka snmpd.conf faili, selleks leiame conf failist vastava lõigu ning täiendame seda kahe järgmise reaga (kui eelnevalt on olemas näiteks disk / 10000, siis võib selle vabalt endale sobivaks partitsiooniks ümber muuta, muul juhul tuleb ta kustutada, et ei tuleks edaspidiseid tõrkeid.

disk /

disk /mnt/win_d

Peale nende ridade lisamist tuleb snmpd service muutuste rakendumiseks taaskäivitada

[root@localhost mrtg]# service snmpd restart

Et kontrollida, kas sisestatud muutused ka toimivad, siis proovime saada nende partitsioonide kohta mingit tagasisidet. Selleks kasutame käsklust snmpwalk. Kui kõik õnnestub, siis peaks tulemus olema midagi järgnevat

[root@localhost mrtg]# snmpwalk -v 1 -c public localhost dskPercent.1
UCD-SNMP-MIB::dskPercent.1 22
[root@localhost mrtg]# snmpwalk -v 1 -c public localhost dskPercent.2
UCD-SNMP-MIB::dskPercent.2 34

Jääb üle vaid vastavad seaded ka cfg faili kanda

### Disk Usage Monitoring

Target[disk]: dskPercent.1&dskPercent.2:public@localhost
Title[disk]: Disk Partition Usage
PageTop[disk]: <H1>Disk Partition Usage / and /mnt/win_d</H1>
MaxBytes[disk]: 100
ShortLegend[disk]: %
YLegend[disk]: Utilization
LegendI[disk]: /
LegendO[disk]: /mnt/win_d
Options[disk]: gauge,growright,nopercent
Unscaled[disk]: ymwd

Lõpetuseks veelkord kaks vana tuttavat käsklust

[root@localhost root]# indexmaker /var/www/html/mrtg/mrtg.cfg --output /var/www/html/index.html
[root@localhost root]# mrtg /var/www/html/mrtg/mrtg.cfg

ning võime selle peatüki lõppenuks lugeda. Kes siiani on hakkama saanud, võib järgmisest peatükist leida õpetuse, kuidas kasutada MRTG-d omaloodud scriptidega.


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.

[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.

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:

#!/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"

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

[root@localhost sander]# /var/www/html/mrtg/scriptid/temperatuurid.sh
39
41
a long time
Kodune töölaud

Nagu näha on tulemus käes ja üle jääb see vaid MRTGga ühendada.

### 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

Sellega teen ka siinkohal õpetusele lõpu, kellel ideid mõne muu info jälgimiseks, siis oleks teretulnud näha neid kommentaarides :)


Terviklik mrtg.cfg fail

######################################################################
# System: Kodune töölaud
# Description: "Linux 2.6.x"
# Contact: sander85 <sander85 ÄT uno PUNKT ee>
# Location: Misiganes :)
######################################################################

WorkDir: /var/www/html/mrtg
Options[_]: bits, growright

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt

### Interface 3 >> Descr: 'eth0' | Name: '' | Ip: '192.168.11.4' | Eth: '00-80-1e-15-8f-38' ###

Target[localhost_3]: 3:public@localhost:
SetEnv[localhost_3]: MRTG_INT_IP="192.168.11.4" MRTG_INT_DESCR="eth0"
MaxBytes[localhost_3]: 12500000
Title[localhost_3]: Traffic Analysis for 3 -- Kodune töölaud
PageTop[localhost_3]: <H1>Traffic Analysis for 3 -- Kodune töölaud</H1>
 <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>
   <TR><TD>ifName:</TD>     <TD></TD></TR>
   <TR><TD>Max Speed:</TD>  <TD>100.0 Mbits/s</TD></TR>
   <TR><TD>Ip:</TD>         <TD>192.168.11.4 ()</TD></TR>
 </TABLE>

### CPU Monitoring

Target[cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@localhost + ssCpuRawSystem.0&ssCpuRawSystem.0:public@localhost + ssCpuRawNice.0&ssCpuRawNice.0:public@localhost
Title[cpu]: Server CPU Load
PageTop[cpu]: <H1>CPU Load</H1>
MaxBytes[cpu]: 100
ShortLegend[cpu]: %
YLegend[cpu]: CPU Utilization
Legend1[cpu]: Current CPU percentage load
LegendI[cpu]: Used
LegendO[cpu]:
Options[cpu]: growright, nopercent
#Unscaled[cpu]: ymwd

### Memory Monitoring (Total Versus Available Memory)

Target[memory]: memAvailReal.0&memTotalReal.0:public@localhost
Title[memory]: Free Memory
PageTop[memory]: <H1>Free Memory</H1>
MaxBytes[memory]: 100000000000
ShortLegend[memory]: B
YLegend[memory]: Bytes
LegendI[memory]: Free
LegendO[memory]: Total
Legend1[memory]: Free memory, not including swap, in bytes
Legend2[memory]: Total memory
Options[memory]: gauge,growright,nopercent
kMG[memory]: k,M,G,T,P,X

### Memory Monitoring (Percentage usage)

Title[mempercent]: Percentage Free Memory
PageTop[mempercent]: <H1>Percentage Free Memory</H1>
Target[mempercent]: ( memAvailReal.0&memAvailReal.0:public@localhost ) * 100 / ( memTotalReal.0&memTotalReal.0:public@localhost )
options[mempercent]: growright,gauge,transparent,nopercent
Unscaled[mempercent]: ymwd
MaxBytes[mempercent]: 100
YLegend[mempercent]: Memory %
ShortLegend[mempercent]: Percent
LegendI[mempercent]: Free
LegendO[mempercent]: Free
Legend1[mempercent]: Percentage Free Memory
Legend2[mempercent]: Percentage Free Memory

### New TCP Connection Monitoring (per minute)

Target[newconns]: tcpPassiveOpens.0&tcpActiveOpens.0:public@localhost
Title[newconns]: Newly Created TCP Connections
PageTop[newconns]: <H1>New TCP Connections</H1>
MaxBytes[newconns]: 10000000000
ShortLegend[newconns]: c/s
YLegend[newconns]: Conns / Min
LegendI[newconns]: In
LegendO[newconns]: Out
Legend1[newconns]: New inbound connections
Legend2[newconns]: New outbound connections
Options[newconns]: growright,nopercent,perminute

### Established TCP Connections

Target[estabcons]: tcpCurrEstab.0&tcpCurrEstab.0:public@localhost
Title[estabcons]: Currently Established TCP Connections
PageTop[estabcons]: <H1>Established TCP Connections</H1>
MaxBytes[estabcons]: 10000000000
ShortLegend[estabcons]:
YLegend[estabcons]: Connections
LegendI[estabcons]: In
LegendO[estabcons]:
Legend1[estabcons]: Established connections
Legend2[estabcons]:
Options[estabcons]: growright,nopercent,gauge

### Disk Usage Monitoring

Target[disk]: dskPercent.1&dskPercent.2:public@localhost
Title[disk]: Disk Partition Usage
PageTop[disk]: <H1>Disk Partition Usage / and /mnt/win_d</H1>
MaxBytes[disk]: 100
ShortLegend[disk]: %
YLegend[disk]: Utilization
LegendI[disk]: /
LegendO[disk]: /mnt/win_d
Options[disk]: gauge,growright,nopercent
Unscaled[disk]: ymwd

### 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


Autor: Sander85