Munin

Allikas: Kuutõrvaja

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.

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

Cpu-day.png

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

Lugeja-day.png

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

https://wiki.itcollege.ee/index.php/Munin