aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorM.Gergo2018-03-08 00:38:44 +0100
committerM.Gergo2018-03-08 00:38:44 +0100
commit925131711b22e1b7a50959921527d7692706cd88 (patch)
tree6515f2598492de538a6fbec5028634963c9823b3
parent45ed7b4a9df6d6e4d5d1b851f39814f753d0bc19 (diff)
downloadmayor-925131711b22e1b7a50959921527d7692706cd88.tar.gz
mayor-925131711b22e1b7a50959921527d7692706cd88.zip
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.
-rw-r--r--külsős/munin/README98
-rwxr-xr-xkülsős/munin/mayor_munin.php122
2 files changed, 220 insertions, 0 deletions
diff --git a/külsős/munin/README b/külsős/munin/README
new file mode 100644
index 00000000..a0ad5eb8
--- /dev/null
+++ b/külsős/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ülsős/munin/mayor_munin.php b/külsős/munin/mayor_munin.php
new file mode 100755
index 00000000..a1cb6c34
--- /dev/null
+++ b/külsős/munin/mayor_munin.php
@@ -0,0 +1,122 @@
+#!/usr/bin/env php
+<?php
+
+
+$set['db_user'] = "mayor-munin";
+$set['db_pass'] = "";
+$set['db_db'] = "mayor_login";
+$set['db_host'] = "localhost";
+$set['naplo_host'] = "mayor.iskolaneve.hu";
+$set['t_active'] = "10"; //pl: 10 perc (Az elmúlt x percben aktívak voltak)
+$ret = array();
+
+
+if (isset($argv[1]) and $argv[1] == "config"){
+
+ $cf = "host_name ".$set['naplo_host']."\n";
+ $cf .= "graph_title Napló rendszerterhelés (Mayor)\n";
+ $cf .= "graph_args --base 1000 \n";
+ $cf .= "graph_vlabel fő\n";
+ $cf .= "graph_category mayor\n";
+ $cf .= "graph_info Naplo users\n";
+
+ $cf .= "mayor_ip_sum.label Összes\n";
+ $cf .= "mayor_ip_sum.draw LINE2\n";
+ $cf .= "mayor_ip_sum.info Összes\n";
+
+ $cf .= "mayor_ip_b.label Belső IP\n";
+ $cf .= "mayor_ip_b.draw LINE2\n";
+ $cf .= "mayor_ip_b.info Belső IP\n";
+
+ $cf .= "mayor_ip_k.label Kulső IP\n";
+ $cf .= "mayor_ip_k.draw LINE2\n";
+ $cf .= "mayor_ip_k.info Kulső IP\n";
+
+ $cf .= "mayor_p_pri.label Policy pri.\n";
+ $cf .= "mayor_p_pri.draw LINE1.2\n";
+ $cf .= "mayor_p_pri.info Policy pri.\n";
+
+ $cf .= "mayor_p_par.label Policy par.\n";
+ $cf .= "mayor_p_par.draw LINE1.2\n";
+ $cf .= "mayor_p_par.info Policy par.\n";
+
+ $cf .= "mayor_a_t1.label Aktív: ".$set['t_active']."perc\n";
+ $cf .= "mayor_a_t1.draw LINE2\n";
+ $cf .= "mayor_a_t1.info Aktív: ".$set['t_active']."perc\n";
+
+ $cf .= "mayor_a_t2.label Aktív: ".($set['t_active']*2)."perc\n";
+ $cf .= "mayor_a_t2.draw LINE1.2\n";
+ $cf .= "mayor_a_t2.info Aktív: ".($set['t_active']*2)."perc\n";
+
+ $cf .= "mayor_a_tt.label Aktív: tétlen\n";
+ $cf .= "mayor_a_tt.draw LINE1.2\n";
+ $cf .= "mayor_a_tt.info Aktív: tétlen\n";
+
+ echo iconv("UTF-8", "ISO-8859-2", $cf), PHP_EOL;
+
+} else {
+
+ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 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