A munin működése
(Két potenciális zh-kérdés felvéve) |
a (→A grafikonok: hiányzó névelő) |
||
(egy szerkesztő 5 közbeeső változata nincs mutatva) | |||
10. sor: | 10. sor: | ||
** Ez gyűjti a teljesítményadatokat és rajzol belőlük grafikont. |
** Ez gyűjti a teljesítményadatokat és rajzol belőlük grafikont. |
||
** Azért idézőjel, mert TCP-értelemben kliensként viselkedik. |
** Azért idézőjel, mert TCP-értelemben kliensként viselkedik. |
||
− | ** Nincs állandóan futó része, ötpercenként elindul, lekérdezi az adatokat, és frissíti a grafikonokat. |
+ | ** Nincs állandóan futó része: ötpercenként elindul, lekérdezi az adatokat, és frissíti a grafikonokat. |
* munin-node |
* munin-node |
||
16. sor: | 16. sor: | ||
** A munin-"szerver" kapcsolódik rá és lekérdezi, amit le lehet. |
** A munin-"szerver" kapcsolódik rá és lekérdezi, amit le lehet. |
||
** Hogy mit lehet lekérdezni, azt az dönti el, hogy milyen pluginek aktívak a munin-node-on. |
** Hogy mit lehet lekérdezni, azt az dönti el, hogy milyen pluginek aktívak a munin-node-on. |
||
+ | *** Egy plugin aktívvá tételéhez csak be kell symlinkelnünk a <tt>plugins</tt> könyvtárba (és újra kell indítanunk a munin-node-ot). |
||
** Egy plugin outputja részben a hozzá tartozó grafikonok beállításait, részben az aktuális mért adatokat tartalmazza. |
** Egy plugin outputja részben a hozzá tartozó grafikonok beállításait, részben az aktuális mért adatokat tartalmazza. |
||
25. sor: | 26. sor: | ||
[[Kép:Ircszerver-if eth0-week.png]] |
[[Kép:Ircszerver-if eth0-week.png]] |
||
− | * A grafikonokat az RRDtool rajzolja és az adatokat is ő tárolja; a munin igazából csak egy perl wrapper az RRDtool köré. |
+ | * A grafikonokat az [[RRDTool]] rajzolja és az adatokat is ő tárolja; a munin igazából csak egy perl wrapper az RRDtool köré. |
* RRD: round-robin database (man rrd-beginners, man rrdtutorial - ebben van SNMP is, ha valakit érdekel) |
* RRD: round-robin database (man rrd-beginners, man rrdtutorial - ebben van SNMP is, ha valakit érdekel) |
||
** Sosem nő a mérete, lényegében egy körpuffer |
** Sosem nő a mérete, lényegében egy körpuffer |
||
− | * Adatforrások típusa (man rrdcreate): |
+ | * Adatforrások típusa (man rrdcreate; a lényeg: a típus a kiolvasott adat jellemzőiből következik, nem szabadon választható!): |
− | ** GAUGE: egy simán kiolvasható abszolút érték; pl. hőmérséklet |
+ | ** GAUGE: egy olyan érték, amelynek nem az idő szerinti deriváltját szeretnénk ábrázolni; pl. hőmérséklet |
** COUNTER: számláló, ami sosem csökken (kivéve túlcsorduláskor); pl. hálózati forgalom |
** COUNTER: számláló, ami sosem csökken (kivéve túlcsorduláskor); pl. hálózati forgalom |
||
− | *** Ha bármi miatt resetelődik a számlálónk, tüskés lesz a grafikon |
+ | *** Ha bármi miatt resetelődik a számlálónk, tüskés lesz a grafikon, mert az RRDTool túlcsordulást feltételez és ennek megfelelően korrigálja az értéket. Létezik egy killspike.pl nevű script, amivel utólag megtisztíthatjuk az adatbázisokat, de jobb eleve elkerülni a tüske létrejöttét pl. úgy, hogy azt is megadjuk, legfeljebb mekkora érték hihető. |
− | *** Workaround: killspike.pl |
+ | *** Az [[RRDTool]] a grafikonban nem a számláló mindenkori értékét ábrázolja, hanem a számláló növekedésének az ütemét (a számláló idő szerinti deriváltját). |
− | ** DERIVE: olyan számláló, aminél sosem feltételezünk túlcsordulást |
+ | ** DERIVE: olyan számláló, aminél sosem feltételezünk túlcsordulást. |
− | *** "Valójában" a két egymást követő értéket összekötő szakasz meredekségét fogja ábrázolni |
+ | *** A két egymást követő értéket összekötő szakasz meredekségét fogja ábrázolni. |
− | *** Ez lehet negatív is, tehát számlálóknál érdemes alulról korlátozni az értelmezési tartományt |
+ | *** Ez lehet negatív is, tehát számlálóknál érdemes alulról korlátozni az értelmezési tartományt. |
− | ** ABSOLUTE: olyan számláló, amit a kiolvasás resetel |
+ | ** ABSOLUTE: olyan számláló, amit a kiolvasás aktusa nulláz. Egyébként úgy viselkedik, mint a COUNTER. |
* Adatforrások további tulajdonságai: |
* Adatforrások további tulajdonságai: |
||
131. sor: | 132. sor: | ||
== Riasztások küldése == |
== Riasztások küldése == |
||
− | Egyfelől lehet [http://munin.projects.linpro.no/wiki/HowToContactNagios a nagioson át]; erről pénteken lesz szó. |
+ | Egyfelől lehet [http://munin.projects.linpro.no/wiki/HowToContactNagios a nagioson át]. |
Másfelől lehet [http://edseek.com/archives/2006/07/13/munin-alert-email-notification/ önállóan]. |
Másfelől lehet [http://edseek.com/archives/2006/07/13/munin-alert-email-notification/ önállóan]. |
||
149. sor: | 150. sor: | ||
hddtemp.hda.critical 50 |
hddtemp.hda.critical 50 |
||
</pre> |
</pre> |
||
+ | |||
+ | A valóságban nekem 2004. körül nem nagyon működött a riasztások küldése; sok vakriasztás volt, és nem sikerült rájönni, mi okozza őket. Azóta nem próbáltam. |
||
== Egyéb lehetőségek == |
== Egyéb lehetőségek == |
A lap jelenlegi, 2010. június 26., 12:33-kori változata
A munin egy olyan programcsomag, amivel egy gép könnyedén lekérdezheti sok másik gép teljesítményadatait és grafikonokat rajzolhat belőlük.
Össze lehet kapcsolni a nagios-szal; ebben az esetben riasztást kapunk arról, ha valamely lekérdezett teljesítményadat meghalad egy küszöbértéket.
Tartalomjegyzék |
[szerkesztés] 1 Architektúra
A munin alapvetően kétféle gépet különböztet meg:
- munin-"szerver".
- Ez gyűjti a teljesítményadatokat és rajzol belőlük grafikont.
- Azért idézőjel, mert TCP-értelemben kliensként viselkedik.
- Nincs állandóan futó része: ötpercenként elindul, lekérdezi az adatokat, és frissíti a grafikonokat.
- munin-node
- TCP-értelemben szerver.
- A munin-"szerver" kapcsolódik rá és lekérdezi, amit le lehet.
- Hogy mit lehet lekérdezni, azt az dönti el, hogy milyen pluginek aktívak a munin-node-on.
- Egy plugin aktívvá tételéhez csak be kell symlinkelnünk a plugins könyvtárba (és újra kell indítanunk a munin-node-ot).
- Egy plugin outputja részben a hozzá tartozó grafikonok beállításait, részben az aktuális mért adatokat tartalmazza.
[szerkesztés] 2 A grafikonok
Így fognak kinézni:
- A grafikonokat az RRDTool rajzolja és az adatokat is ő tárolja; a munin igazából csak egy perl wrapper az RRDtool köré.
- RRD: round-robin database (man rrd-beginners, man rrdtutorial - ebben van SNMP is, ha valakit érdekel)
- Sosem nő a mérete, lényegében egy körpuffer
- Adatforrások típusa (man rrdcreate; a lényeg: a típus a kiolvasott adat jellemzőiből következik, nem szabadon választható!):
- GAUGE: egy olyan érték, amelynek nem az idő szerinti deriváltját szeretnénk ábrázolni; pl. hőmérséklet
- COUNTER: számláló, ami sosem csökken (kivéve túlcsorduláskor); pl. hálózati forgalom
- Ha bármi miatt resetelődik a számlálónk, tüskés lesz a grafikon, mert az RRDTool túlcsordulást feltételez és ennek megfelelően korrigálja az értéket. Létezik egy killspike.pl nevű script, amivel utólag megtisztíthatjuk az adatbázisokat, de jobb eleve elkerülni a tüske létrejöttét pl. úgy, hogy azt is megadjuk, legfeljebb mekkora érték hihető.
- Az RRDTool a grafikonban nem a számláló mindenkori értékét ábrázolja, hanem a számláló növekedésének az ütemét (a számláló idő szerinti deriváltját).
- DERIVE: olyan számláló, aminél sosem feltételezünk túlcsordulást.
- A két egymást követő értéket összekötő szakasz meredekségét fogja ábrázolni.
- Ez lehet negatív is, tehát számlálóknál érdemes alulról korlátozni az értelmezési tartományt.
- ABSOLUTE: olyan számláló, amit a kiolvasás aktusa nulláz. Egyébként úgy viselkedik, mint a COUNTER.
- Adatforrások további tulajdonságai:
- min, max: érdemes megadni, ha meg tudjuk, mert így az rrdtool el tudja dobni a hibás adatokat (pl. nem lesz az ADSL-ünkön gigabit/s-os forgalmi tüske a grafikon szerint)
- Az adatok értéke lehet "ismeretlen", ami nem ugyanaz, mint a nulla
- Ha a megadottnál hosszabb ideig nem kerül új adat az rrd-be, akkor arra az időszakra ismeretlen lesz az érték
- Grafikonok lehetőségei, a teljesség igénye nélkül:
- Görbék
- "kitöltött görbék" (area)
- Ezek stackelhetők
- Berakhatók fix vízszintes vonalak
- Származtatott értékek ("CDEF")
- Címkék
[szerkesztés] 3 Konfiguráció
A munin-"szervert" a /etc/munin/munin.conf file-ban kell konfigurálni.
Pl:
dbdir /var/lib/munin htmldir /var/www/munin logdir /var/log/munin rundir /var/run/munin # Where to look for the HTML templates tmpldir /etc/munin/templates # a simple host tree [saját.magunk.domain] address 127.0.0.1 [másik.gép.domain] address 192.168.0.4 [harmadik.gép.domain2] address 10.0.0.2 port 49494 [domain;negyedik.gép.valahol] address 172.16.2.3 [domain;névváltós.gép.valahol] address 1.2.3.4 use_node_name yes
A monitorozott gép konfigurációja egyrészt a /etc/munin/munin-node.conf file-ban, másrészt pluginek symlinkelésével történik.
Példaconfig (runitos futtatáshoz):
log_level 4 log_file /var/log/munin/munin-node.log port 4949 pid_file /var/run/munin/munin-node.pid #background 1 #setsid yes host * user root group root host_name névváltós.gép.valahol allow ^127\.0\.0\.1$ allow ^192\.168\.10\.3$
A plugineket a /etc/munin/plugins könyvtárba kell symlinkelni. Vannak generikus pluginek, amik a symlink nevéből találják ki, mit is kell csinálniuk; pl:
- /etc/munin/plugins/if_eth0 -> /usr/share/munin/plugins/if_
- /etc/munin/plugins/sensors_fan -> /usr/share/munin/plugins/sensors_
- /etc/munin/plugins/ping_1.2.3.4 -> /usr/share/munin/plugins/ping_
A pluginek viselkedését külön configfile-okban szabályozhatjuk a /etc/munin/plugin-conf.d könyvtárban elhelyezett file-okkal; pl.:
[mysql*] user root env.mysqlopts --defaults-extra-file=/etc/mysql/debian.cnf [exim_mailstats] group mail, adm [ldap_*] env.binddn cn=munin,dc=foo,dc=bar env.bindpw secret [snmp_*] env.community SecretSNMPCommunityString
[szerkesztés] 4 Riasztások küldése
Egyfelől lehet a nagioson át.
Másfelől lehet önállóan.
Ehhez csak a következőket kell írni a munin.conf-ba:
contacts admin contact.admin.command mail -s "Munin notification ${var:host}" admin@email.cime contact.admin.always_send warning critical [saját.magunk.domain] address 127.0.0.1 # a HTML-ből lehet kipuskázni az alábbi mezőneveket: df._dev_sda1.warning 95 df._dev_sda1.critical 99 hddtemp.hda.critical 50
A valóságban nekem 2004. körül nem nagyon működött a riasztások küldése; sok vakriasztás volt, és nem sikerült rájönni, mi okozza őket. Azóta nem próbáltam.
[szerkesztés] 5 Egyéb lehetőségek
[szerkesztés] 6 Pluginek írása
Példaplugin:
HDDTEMP=/usr/sbin/hddtemp if [ "$1" = "autoconf" ]; then if [ -x "$HDDTEMP" ]; then echo yes exit 0 else echo no exit 1 fi fi if [ "$1" = "config" ]; then echo 'graph_category sensors' echo 'graph_title HDD temperature' echo 'graph_args --base 1000 -l 0' echo 'graph_vlabel temp in °C' echo "graph_width 600" echo "graph_height 200" for a in $drives; do echo "$a.label $a" echo "$a.min 20" echo "$a.max 95" done exit 0 fi function gettemp() { ( if hddtemp -q $1 | grep '[0-9].C$'; then for i in 1 2; do sleep 1 hddtemp -q $1 | grep '[0-9].C$' || exit done fi ) \ | sed 's/.*: \([0-9][0-9]*\).C$/\1/' \ | sort -n \ | head -2 \ | tail -1 } cd /dev for a in ${drives:-[hs]d[a-z]}; do echo "$a.value " $(gettemp $a) | egrep ' [0-9]+$' & done wait
[szerkesztés] 7 Ajánlott irodalom
[szerkesztés] 8 Potenciális ZH-kérdések
- Hogy néz ki a munin architektúrája? Milyen elemekből áll, és ezek hogyan kapcsolódnak egymáshoz? (A válaszban ki kell térni legalább a munin-node-ra, a munin-"szerverre", az rrdtoolra és a pluginekre.)
- Milyen esetben érdemes COUNTER helyett DERIVE típusúnak definiálni egy adatot a munin (rrdtool) számára, és miért?