From 925131711b22e1b7a50959921527d7692706cd88 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 8 Mar 2018 00:38:44 +0100 Subject: mayor_munin_monitorozó Munin monitorozó plugin a mayorhoz Grafikonokat készít a "munin" program segítségével a Mayor pillanatnyi állapotáról. Egyelőre csak debian 9+ rendszeren tesztelt, de pár apró módosítással életrekelthető más rendszereken is. Rögzíti az: -- Egyidejűleg (pillanatnyi) bejelentkezett felhasználók számát. -- IP-cím alapján a lokális (192.168.*.*, 10.*.*.*, 172.16.*.*, fd**::/8) és külön a külső tartományokat. -- Policy alapján a 'private' és/vagy 'parent' -ben belépett felhasználókat. -- Aktivitás alapján az Xperc (pl:10perc) ideje, a 2*Xperc ideje aktív felhasználókat és a tétleneket. Beállítása a következő: (debian) 1.lépés: >>> apt-get install munin 2.lépés: a "/etc/munin/munin.conf" fájl szerkesztése a következő módon: --(I.) először keressük meg a következő részt: # a simple host tree [localhost.localdomain] address 127.0.0.1 use_node_name yes -- módosítsuk a "localhost.localdomain"-t a napló-szerver gépnevének megfelelően: (itt az FQDN (teljes elérési út szükséges)) [gépnév.iskolaneve.hu] address 127.0.0.1 use_node_name yes --(II.) ugyanitt, adjuk hozzá a következő sorokat: (és írjuk át a "mayor.iskolaneve.hu" címet a napló címének megfelelően) [mayor.iskolaneve.hu] address 127.0.0.1 use_node_name no --(III.) ezután módosítanunk kell a "mayor_munin.php" scriptben a "$set['naplo_host'] = "mayor.iskolaneve.hu";"-t (első sorok egyike) a saját naplónk címének megfelelően. Ez egy fontos beállítás, mert ezen keresztül ismeri fel a munin rendszer a mi monitorozó scriptünket. --(IV.) utána másoljuk a "mayor_munin.php"-t az: az /usr/share/munin/plugins/ mappába vagy az /etc/munin/ könyvtárba vagy bárhova, ahonnan a munin eléri. FONTOS!! A "mayor_munin.php"-nak állítsuk be a "root" tulajdonost és 700-as jogokat! (nehogy valami kiolvassa a jelszót) --(V.) ezután el kell helyezni egy simlink-et a /etc/munin/plugins/ könyvtárba, ami a bemásolt fájlra mutat. pl: ln -s /usr/share/munin/plugins/mayor_munin.php /etc/munin/plugins/munin --(VI.) végül be kell állítanunk egy felhasználót, a mysql-ben, amivel olvasni lehet a mayor_login.session és a mayor_login.loginLog táblákat (például:) mysql> GRANT SELECT ON mayor_login.loginLog TO 'mayor-monitor'@'localhost' IDENTIFIED BY 'erőős-jelszóó!'; mysql> GRANT SELECT ON mayor_login.session TO 'mayor-monitor'@'localhost' IDENTIFIED BY 'erőős-jelszóó!'; - Lehetőség van mysql/unix_socket authentikációra is, ez nagyban növeli biztonságot, mert nem alkalmaz jelszót, így szinte lehetetlen próbálgatással feltörni. Fontos, hogy a kiválasztott felhasználónak/felhasználónévnek valósnak kell lenni, és léteznie kell a rendszerben. Egyszerűség kedvéért használhatjuk a "root" felhasználót, ez eredetileg is unix_socket-tel authentikál a mysql-ben, (hacsak a mysql telepítésénél meg nem változtattuk) vagy a "munin" nevű felhasználót, ezt adjuk hozzá a mysql-hez: mysql> GRANT SELECT ON mayor_login.session TO 'munin'@'localhost' IDENTIFIED via unix_socket; mysql> GRANT SELECT ON mayor_login.loginLog TO 'munin'@'localhost' IDENTIFIED via unix_socket; majd rá kell venni a munin-t, hogy a "munin" felhasználónévvel futtassa, ezt a "/etc/munin/plugin-conf.d/munin-node" fájlba kell beírni, a következő sorok hozzáadásával: [mayor_munin] user munin Fontos: ekkor a mayor_munin.php tulajdonosát a "munin"-ra kell állítani! --(VII.) Finomhangolás: Végül írjuk be a "mayor_munin.php" elejére, a "$set['___']" tömböt módosítva, a maysql adatokat, illetve itt tudjuk beállítani az aktivitáshoz számolt időt percben, és a napló webcímét is. --(VIII.) Befejezésképpen pedig indítsuk újra a munin-t az alábbi parancsokkal: >>> /etc/init.d/munin-node restart >>> /etc/init.d/munin restart --(++) a beálítás végeztével a következő paranccsal ellenőrizhetjük, hogy mindent jól csináltunk-e: >>> munin-run mayor_munin Ekkor egy listát kapunk, ahol a változók nevei ("mayor_xxxx_xx.values") mellett számértékeket látunk, ha semmi, vagy a számok helyett egy "U" betű jelenik meg, akkor még valamit finomhangolni kell. --- "k\303\274ls\305\221s/munin/README" | 98 +++++++++++++++++++++ "k\303\274ls\305\221s/munin/mayor_munin.php" | 122 +++++++++++++++++++++++++++ 2 files changed, 220 insertions(+) create mode 100644 "k\303\274ls\305\221s/munin/README" create mode 100755 "k\303\274ls\305\221s/munin/mayor_munin.php" diff --git "a/k\303\274ls\305\221s/munin/README" "b/k\303\274ls\305\221s/munin/README" new file mode 100644 index 00000000..a0ad5eb8 --- /dev/null +++ "b/k\303\274ls\305\221s/munin/README" @@ -0,0 +1,98 @@ + +Munin monitorozó plugin a mayorhoz + +Grafikonokat készít a "munin" program segítségével a Mayor pillanatnyi állapotáról. +Egyelőre csak debian 9+ rendszeren tesztelt, de pár apró módosítással életrekelthető más rendszereken is. + +Rögzíti az: +-- Egyidejűleg (pillanatnyi) bejelentkezett felhasználók számát. +-- IP-cím alapján a lokális (192.168.*.*, 10.*.*.*, 172.16.*.*, fd**::/8) és külön a külső tartományokat. +-- Policy alapján a 'private' és/vagy 'parent' -ben belépett felhasználókat. +-- Aktivitás alapján az Xperc (pl:10perc) ideje, a 2*Xperc ideje aktív felhasználókat és a tétleneket. + + +Beállítása a következő: (debian) + +1.lépés: >>> apt-get install munin +2.lépés: a "/etc/munin/munin.conf" fájl szerkesztése a következő módon: + +--(I.) először keressük meg a következő részt: + # a simple host tree + [localhost.localdomain] + address 127.0.0.1 + use_node_name yes + +-- módosítsuk a "localhost.localdomain"-t a napló-szerver gépnevének megfelelően: + (itt az FQDN (teljes elérési út szükséges)) + [gépnév.iskolaneve.hu] + address 127.0.0.1 + use_node_name yes + +--(II.) ugyanitt, adjuk hozzá a következő sorokat: + (és írjuk át a "mayor.iskolaneve.hu" címet a napló címének megfelelően) + [mayor.iskolaneve.hu] + address 127.0.0.1 + use_node_name no + + +--(III.) ezután módosítanunk kell a "mayor_munin.php" scriptben a "$set['naplo_host'] = "mayor.iskolaneve.hu";"-t + (első sorok egyike) a saját naplónk címének megfelelően. + Ez egy fontos beállítás, mert ezen keresztül ismeri fel a munin rendszer a mi + monitorozó scriptünket. + + +--(IV.) utána másoljuk a "mayor_munin.php"-t az: + az /usr/share/munin/plugins/ mappába vagy + az /etc/munin/ könyvtárba vagy + bárhova, ahonnan a munin eléri. + + FONTOS!! + A "mayor_munin.php"-nak állítsuk be a "root" tulajdonost és 700-as jogokat! + (nehogy valami kiolvassa a jelszót) + + +--(V.) ezután el kell helyezni egy simlink-et a /etc/munin/plugins/ könyvtárba, ami a bemásolt fájlra mutat. + pl: ln -s /usr/share/munin/plugins/mayor_munin.php /etc/munin/plugins/munin + + +--(VI.) végül be kell állítanunk egy felhasználót, a mysql-ben, amivel olvasni lehet a mayor_login.session és a mayor_login.loginLog táblákat + (például:) + mysql> GRANT SELECT ON mayor_login.loginLog TO 'mayor-monitor'@'localhost' IDENTIFIED BY 'erőős-jelszóó!'; + mysql> GRANT SELECT ON mayor_login.session TO 'mayor-monitor'@'localhost' IDENTIFIED BY 'erőős-jelszóó!'; + +- Lehetőség van mysql/unix_socket authentikációra is, ez nagyban növeli biztonságot, mert nem alkalmaz jelszót, + így szinte lehetetlen próbálgatással feltörni. + Fontos, hogy a kiválasztott felhasználónak/felhasználónévnek valósnak kell lenni, és léteznie kell a rendszerben. + Egyszerűség kedvéért használhatjuk a "root" felhasználót, ez eredetileg is unix_socket-tel authentikál a mysql-ben, + (hacsak a mysql telepítésénél meg nem változtattuk) + + vagy a "munin" nevű felhasználót, ezt adjuk hozzá a mysql-hez: + + mysql> GRANT SELECT ON mayor_login.session TO 'munin'@'localhost' IDENTIFIED via unix_socket; + mysql> GRANT SELECT ON mayor_login.loginLog TO 'munin'@'localhost' IDENTIFIED via unix_socket; + + majd rá kell venni a munin-t, hogy a "munin" felhasználónévvel futtassa, ezt a "/etc/munin/plugin-conf.d/munin-node" + fájlba kell beírni, a következő sorok hozzáadásával: + + [mayor_munin] + user munin + + Fontos: ekkor a mayor_munin.php tulajdonosát a "munin"-ra kell állítani! + + + +--(VII.) Finomhangolás: + Végül írjuk be a "mayor_munin.php" elejére, a "$set['___']" tömböt módosítva, a maysql adatokat, + illetve itt tudjuk beállítani az aktivitáshoz számolt időt percben, és a napló webcímét is. + + +--(VIII.) Befejezésképpen pedig indítsuk újra a munin-t az alábbi parancsokkal: + >>> /etc/init.d/munin-node restart + >>> /etc/init.d/munin restart + + +--(++) a beálítás végeztével a következő paranccsal ellenőrizhetjük, hogy mindent jól csináltunk-e: + >>> munin-run mayor_munin + + Ekkor egy listát kapunk, ahol a változók nevei ("mayor_xxxx_xx.values") mellett számértékeket látunk, + ha semmi, vagy a számok helyett egy "U" betű jelenik meg, akkor még valamit finomhangolni kell. diff --git "a/k\303\274ls\305\221s/munin/mayor_munin.php" "b/k\303\274ls\305\221s/munin/mayor_munin.php" new file mode 100755 index 00000000..a1cb6c34 --- /dev/null +++ "b/k\303\274ls\305\221s/munin/mayor_munin.php" @@ -0,0 +1,122 @@ +#!/usr/bin/env php += 7 ) { //MySQLi (Improved) és php7 kell!!! + + $ret['ip_b'] = 0; + $ret['ip_k'] = 0; + $ret['p_pri'] = 0; + $ret['p_par'] = 0; + $ret['a_t1'] = 0; + $ret['a_t2'] = 0; + $ret['a_tt'] = 0; + $l = mysqli_connect($set['db_host'], $set['db_user'], $set['db_pass'], $set['db_db']); + if(!$l){ +// echo "hiba\n "; + $ret['ip_b'] = "U"; + $ret['ip_k'] = "U"; + $ret['p_pri'] = "U"; + $ret['p_par'] = "U"; + $ret['a_t1'] = "U"; + $ret['a_t2'] = "U"; + $ret['a_tt'] = "U"; + + } else{ + mysqli_set_charset($l, "utf8"); + $r = mysqli_query($l," SELECT session.userAccount,session.policy, UNIX_TIMESTAMP(session.activity) AS activity, loginLog.ip + FROM mayor_login.session, mayor_login.loginLog + WHERE session.dt = loginLog.dt AND session.userAccount=loginLog.userAccount AND loginLog.flag=0; "); + + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + if($row['policy'] == "private") { + $ret['p_pri'] ++; + } + if($row['policy'] == "parent") { + $ret['p_par'] ++; + } + + if( $row['activity'] >= time()-$set['t_active']*60){ //Az elmúlt x percben aktívak voltak + $ret['a_t1']++; + } else if( $row['activity'] >= time()-$set['t_active']*2*60){ //Az elmúlt 2*x percben aktívak voltak + $ret['a_t2']++; + } else { + $ret['a_tt']++; + } + + if( preg_match('/^((10\.)|(192\.168\.)|(172\.16\.)|(fd..\:)).*/', $row['ip']) ){ + $ret['ip_b']++ ; + } else{ + $ret['ip_k']++ ; + } + } + } + + @mysqli_free_result($r); + @mysqli_close($l); + echo "mayor_ip_sum.value ".($ret['ip_b']+$ret['ip_k'])."\n". "mayor_ip_b.value ".$ret['ip_b']."\n". "mayor_ip_k.value ".$ret['ip_k']."\n" ; + echo "mayor_p_pri.value ".$ret['p_pri']."\n". "mayor_p_par.value ".$ret['p_par']."\n"; + echo "mayor_a_t1.value ".$ret['a_t1']."\n". "mayor_a_t2.value ".$ret['a_t2']."\n". "mayor_a_tt.value ".$ret['a_tt']."\n" ; + + } else{ + echo "mayor_ip_sum.value U\n". "mayor_ip_b.value U\n". "mayor_ip_k.value U\n" ; + echo "mayor_p_pri.value U\n". "mayor_p_par.value U\n"; + echo "mayor_a_t1.value U\n". "mayor_a_t2.value U\n". "mayor_a_tt.value U\n"; + } +} + +?> \ No newline at end of file -- cgit v1.2.3