Muudatused
Allikas: Pingviini viki
Sellega peaks olema ka automatiseerimine igal juhul tehtud ja võib liikuda edasi ning lisada uusi kuulatavaid objekte.
==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
<pre>[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
...
...</pre>
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:
<pre>### 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</pre>
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 jälgida :)
Kogu cfg faili sisu peale protsessori lisamist näeb minul välja järgnev:
<pre>######################################################################
# System: Kodune töölaud
# Description: "Linux 2.6.x"
# Contact: sander85 <sander85@uno.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@uno.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
</pre>
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.
<pre>### 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</pre>
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
<pre>### 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</pre>
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).
<pre>### 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</pre>
<pre>### 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</pre>
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'''
<pre>[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</pre>
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
<pre>[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</pre>
Jääb üle vaid vastavad seaded ka cfg faili kanda
<pre>### 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</pre>
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.
<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 :)
==Terviklik mrtg.cfg fail==
<pre>######################################################################
# System: Kodune töölaud
# Description: "Linux 2.6.x"
# Contact: sander85 <sander85@uno.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@uno.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</pre>
Autor:Sander85