Munin
Sisukord
[peida]Sissejuhatus
Munin on monitoorimise tarkvara teenustest statistiliste graafikute joonistamiseks ja koormuste jälgimiseks. Munin on üritatud luua võimalikult lihtsalt seadistatavaks ja paindlikuks. Üks munini suurimaid eeliseid on suur pluginite kogu ja lihtsus luua uusi pluginaid.
Munin kasutab enda tööks RRDTool'i ja ta on kirjutatud perlis. Munin on master-node arhidektuuriga mis äraseletatult tähendab, et master (ehk server) käivitub teatud intervalli (vaikimisi iga viie minuti järel) järel cronist ja ühendub nodedega, küsib neilt mis pluginid sisse lülitatud, seejärel loeb vajaliku info ning salvestab selle serveris rrd failidesse millede alusel omakorda genereerib graafikafailid. Tasub tähele panna, et node on ise väga väheste sõltuvustega ja ei tekita serverile kus asub pea mitte mingit lisakoormust. Server võib aga paljude nodede korral muutuda aeglaseks ning seetõttu tasuks vältida liiga paljude pluginate lubamist.
Järgnevat näide kus meil on kaks arvutit: server ja klient, millekohta tahame jälgida üldkoormust ning samuti soovime joonistada graafikut /home kaustas olevate failide arvukohta
- Server 192.168.1.10
- Klient 192.168.1.5
Install
Klientmasinale installine munin-node serverile installime munin serveri. Insallimiseks kasutame operatsioonisüsteemi enda vahendeid. Mingeid erilisi märkusi sellekohta rohkem pole.
- FreeBSDs kliendi install: cd /usr/ports/sysutils/munin-node ja make install clean
- FreeBSDs serveri install: cd /usr/ports/sysutils/munin-master ja make install clean
- Debianis kliendi install: apt-get install munin-node
- Debianis kliendi kasutamise märkused http://www.debian-administration.org/articles/229
Munin töötab sedasi, et CRON abil käivitatav SERVER võtab nt iga 5 minuti järel ühendust kliendiga-klientidega, klient käivitab enda plugin kataloogis olevad skriptid ja saadab nende väljundiks oleva info serverile, mis selle info alusel uuendab enda RRD graafikuid. Kasutatavad pluginad lingitakse plugins kataloogi Linuxis /usr/share/ või FreeBSD puhul /usr/libexec all asuvast pluginate baasist. Lisaks saab pluginaid tõmmata netist või kirjutada vajadusel ise.
Debiani puhul tasub tähele panna veel, et pluginad asuvad kaustas /usr/share/munin/plugins/ ning vajadusel tuleb neid sealt lisaks linkida kausta /etc/munin/plugins
Näiteks lingime munini kliendile külge pluginad mis joonistavad graafikuid protsessori io, koormusest, protsessidest, mälukasutusest ning ketta täituvusest.
# ln -s /usr/share/munin/plugins/{cpu, df, iostat, netstat, open_files, open_inodes, processes, vmstat, memory \ /etc/munin/plugins/
Gentoos tuleb linkimiseks käivitada järgnev käsk
# ln -s /usr/libexec/munin/plugins/{cpu,df,df_abs,forks,iostat,load,memory,netstat,processes,vmstat,fw_conntrack,postfix_mailqueue} \ /etc/munin/plugins/
Ja seejärel teha munini kliendile restart
# /etc/init.d/munin-node restart
FreeBSDs
# ln -s /usr/local/share/munin/plugins/{cpu,iostat,load,memory,netstat,processes,vmstat,swap,open_files} \ /usr/local/etc/munin/plugins/
Ja võrgukaartide statistika kogumiseks:
# ln -s /usr/local/share/munin/plugins/if_ /usr/local/etc/munin/plugins/if_bce0 # ln -s /usr/local/share/munin/plugins/if_ /usr/local/etc/munin/plugins/if_bce1
Üldiselt on munini disaini puhul arvestatud pigem suurte serveriparkide administraatoritega kes soovivad joonistada hõlpsalt graafikuid kogu serveripargist. Kuid server ja klient ei pea olema lahus vaid võivad asuda ka samas füüsilises arvutis juhul kui on soov jälgida vaid üht serverit või tööjaama.
- https://help.ubuntu.com/10.04/serverguide/C/munin.html munini paigaldamine ubuntus
Klient
Vastavalt siis kas /etc (linux) või /usr/local/etc/ (FreeBSD)
munin-node.conf
Põhimõtteliselt piisab kui default konfi lisada ligipääsuks luba munini serveri jaoks.
allow ^192\.168\.0\.10$
Stardime munin-node
/etc/init.d/munin-node start (linux) /usr/local/etc/rc.d/munin-node.sh start (FreeBSD)
Vaikimisi joonistab munin järgnevatest teenustest graafikuid
- Disk
- Network
- Processes
- Sendmail
- System
Näiteks cpu kohta joonistab munin sellise pildi
Munin node'lt on võimalik infot küsida kasvõi telneti abil. Võib olla vajalik selleks ,et selgitada näiteks välja miks mõni plugin ei toimi. Näiteks küsime enda localhostis jooksva node käest mis on ta versioon ja laseme tal väljastada cpu info.
# telnet localhost 4949 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. # munin node at server.ee version munins node on server.ee version: 1.2.5 fetch cpu user.value 7277242 nice.value 3456 system.value 6928877 interrupt.value 4260973 idle.value 6397641460 quit
Pluginate lisamine
Muninil on kaasas rikkalik kogu erinevaid pluginaid
asuvad nad realselt kaustas /usr/local/share/munin/plugins/ kust peamised on lingitud kausta /usr/local/etc/munin/plugins
tasub uurida juba olemasolevaid pluginaid enne kui hakata neid netist otsima.
Näiteks mysql jaoks on olemas juba põhjalikud graafikute joonistamise vahendid. Nende lubamiseks.
Lingime mysql pluginad munin'i work kataloogi
# ln -s /usr/local/share/munin/plugins/mysql_* /usr/local/etc/munin/plugins
Avame faili plugin-conf.d/plugins.conf ja lisame sinna
[mysql*] env.mysqlopts -u status
Seejärel siseneme mysql serverisse ning tekitame sinna paroolita ja privileegideta kasutaja status
Seejärel restardime munin-node
Server
Serveris tuleb defineerida ära kataloog kuhu tekivad graafikute pildid
htmldir /usr/local/www/munin
Liigume etc/munin' kausta ja avame munin.conf. Defineerime kliendi
[klient.host.ee] address 192.168.1.5 use_node_name yes
Kui peale munini tarkvara upgradet serveris graafikute joonistamine enam ei toimi, tasub kontrollida kaustade õigusi, kus faile hoitakse.
Juhul kui veebiserveri dokumentroot on suunatud kuhugi mujale ja mitte sinna kuhu graafikuid tekitatakse on vajalik lisada httpd.conf'i rida alias /munin /usr/local/www/munin' ning anda ka sellele kataloogile vastavad õigused
Plugina kirjutamine
väga primitiivne plugin mis Loeb kokku kaustas olevad failid ja joonistab neist graafikut
Plugina nimeks paneme loenda
Skriptile on kaks nõudmist. Pannes selle lihtsalt käima peab ta andma info mida kasutatakse graafiku joonistamiseks Ja käivitatades parameetriga config peab plugin jagama endakohta täpsemat kirjeldust
#!/bin/sh if [ "$1" = "config" ]; then echo "graph_title failide hulga graafik" echo 'graph_category Failid' echo "graph_info See graafik joonistatakse failide hulga järgi kaustas" echo 'loenda.label failide arv ' echo "loenda.info failide arv kaustas" echo "loenda.type GAUGE" exit 0 fi echo -n "loenda.value " ls -la /home | wc -l
Muidugi on võimalusi veel palju rohkem. Keerukamateks lahendusteks soovitan uurida manuali.
Stardime loodud skripti
# plugins/loenda loenda.value 124
Ja kontrollime kas ta väljastab korrektset infot
# plugins/loenda config graph_title failide hulga graafik graph_category Failid graph_info See graafik joonistatakse failide hulga järgi kaustas loenda.label failide arv loenda.info failide arv kaustas loenda.type GAUGE
Plugina installimine
Nende seadistus käib kaustast plugin-conf.d/ failist plugins.conf. Kaust plugin-conf on etc/munin alamkaustaks.
Pluginad ise asuvad kaustas plugins
Näiteks soovime lisada plugina loenda
Selleks kopeerime plugina kausta plugins Ja lisame plugins.conf faili read
[loenda] user root
Seejärel teeme munin-node'le taas restardi.
Tulemus oleks selline
Teavitamine mailile
Munini vahenditega on üsna lihtne saata kõigi teadete kohta mail, piisab kui lisada munin.conf faili serveril
contact.someuser.command mail -s "Munin notification" kasutaja@nimi.ee
Ja edaspidi saadetakse kõikide masinate teated OK -> WARNING, CRITICAL -> OK määratud aadressile.
näiteks
Kriitiline teade
nimi.ee :: mail.nimi.ee :: Load average CRITICALs: load is 4.23 (outside range [0:0]).
Ja probleemi lahendus
nimi.ee :: mail.nimi.ee :: Load average OKs: load is 1.36.
Erinevaid tasemeid millest alates munin leiab ,et on oht saab modifitseerida taas munin serveris näiteks tõstame taset mis hetkest load on kriitiline
[klient.host.ee] address 192.168.1.5 use_node_name yes load.load.warning 10 load.load.critical 20
Sellisel kujul saab muuta kõiki vaikeseadeid mida iga teenuse mõõtmisel kasutatakse. Süntaks on järgmine
[plugina nimi].[Field].(warning|critical) [value]
Väärtused mis kasutusel on kõigi graafikute all nimekirjana väljatoodud, samuti Field nimetused. Plugina nime saab vajadusel täpselt ülevaadata vaadata plugins kaustast.
Kettastatistika
Ketta jõudluse täpsemaks mõõtmiseks on plugin diskstat_
Kasutamine süsteemis, kus kettaks /dev/sda
# /usr/libexec/munin/plugins/diskstat_ suggest latency_sda throughput_sda iops_sda
Sisse lülitamiseks
# ln -s /usr/libexec/munin/plugins/diskstat_ diskstat_throughput_sda # ln -s /usr/libexec/munin/plugins/diskstat_ diskstat_iops_sda # ln -s /usr/libexec/munin/plugins/diskstat_ diskstat_latency_sda
Lisa1 näiteplugin UPSi kolme faasi võimsuse graafiku joonistamiseks
Plugin küsib kasutades SNMP'd upsilt infot ja joonistab selle alusel kolm gfaafikut
#!/bin/sh
if [ "$1" = "config" ]; then
echo 'graph_title UPSi faaside v6imsused'
echo 'graph_vlabel Watts'
echo 'graph_category ups'
echo 'graph_info See graafik joonistatakse UPSi kolme faasi võimsuste alusel (upsOutputPowergen)'
echo 'faas1.label Faas 1 '
echo 'faas1.info Faas 1'
echo 'faas1.type GAUGE'
echo 'faas2.label Faas 2 '
echo 'faas2.info Faas 2'
echo 'faas2.type GAUGE'
echo 'faas3.label Faas 3 '
echo 'faas3.info Faas 3'
echo 'faas3.type GAUGE'
exit 0
fi
echo -n "faas1.value "
/usr/local/bin/snmpget -v 2c -c idenfifikaator ups.zoo.tartu.ee SNMPv2-SMI::mib-2.33.1.4.4.1.4.1 | awk '{ print $4 }'
echo -n "faas2.value "
/usr/local/bin/snmpget -v 2c -c identifikaator ups.zoo.tartu.ee SNMPv2-SMI::mib-2.33.1.4.4.1.4.2 | awk '{ print $4 }'
echo -n "faas3.value "
/usr/local/bin/snmpget -v 2c -c idenfifikaator ups.zoo.tartu.ee SNMPv2-SMI::mib-2.33.1.4.4.1.4.3 | awk '{ print $4 }'
Munin-node for windows
Kõigepealt tuleks paigaldada programm munin-node-win32.exe
Seepeale paigaldatakse C:\Program Files (x86)\Munin Node for Windows\ kausta vajalikud failid: munin-node.exe, munin-node.ini, uninstall.exe. Loomulikult luuakse ka Windowsi Service, mis aktiivselt teenust töös hoiab.
munin-node.exe on enamjaolt kontrollimiseks - kui selle väljund on vigadeta, siis on tõenäoliselt ka hilisem info pärimine edukas.
munin-node.ini failis on parameetrid ja jäetud on ka pisut seadistamisvõimalust.
Ühe serveri ini faili näidis
[Plugins]
; Plugin Section, 1 enables plugin, 0 disables
Disk=0
Memory=0
Processes=0
Network=0
MbmTemp=0
MbmVoltage=0
MbmFan=0
MbmMhz=0
SMART=0
HD=0
Cpu=0
SpeedFan=0
External=1
ExternalTimeout=5
[PerfCounterPlugin_uptime]
; This is a section for the Performance Counter plugin
; The Object and Counter settings are used to access the Performance Counter
; For uptime this would result in \System\System Up Time
; The Graph settings are reported to munin
; The DropTotal setting will drop the last instance from the list, which is often _Total
; Has no effect on single instance counters (Uptime)
; The CounterFormat setting controls what format the counter value is read in as a double, int, or large (int64).
; If CounterFormat = int - then munin will output integer formatted numbers so that DERIVE can work.
; The CounterMultiply setting sets a value the counter value is multiplied by, use it to adjust the scale
; 1.1574074074074073e-005 is the result of(1 / 86400.0), the uptime counter reports seconds and we want to report days.
; So we want to divide the counter value by the number of seconds in a day, 86400.
Object=System
Counter=System Up Time
GraphTitle=Uptime
GraphCategory=system
GraphDraw=AREA
GraphArgs=--base 1000 -l 0
DropTotal=0
CounterFormat=large
CounterMultiply=1.1574074074074073e-005
ExternalPlugin
Mõeldud kasutaja-defineeritud pluginate käivitamiseks. Kirjutada tuleb kujul:
nimetus=asukoht HPtest=C:\hptest.ini
Kui asukoht on nt Program Files (x86), siis on soovitatav panna jutumärgid. Saab kergemini hakkama.
Tundub hetkel, et Pythonis loodud skripte saab käima panna munini abiga küll (vajalik enne python muidugi paigaldada).
Lingid
Ametlik kodulekeülg http://munin.projects.linpro.no/
Plugin windowsile http://munin.projects.linpro.no/wiki/HowToMonitorWindows
Pluginate kogumik http://muninexchange.projects.linpro.no/
FreeBSD installiõpetus http://www.freebsdmadeeasy.com/tutorials/web-server/monitoring-with-munin.php