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., 11: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?

