Szerver monitorozása a Munin segítségével Debian 9 (Stretch) és Debian 10 (Buster) rendszereken (2. oldal)

botond küldte be 2020. 02. 17., h – 14:44 időpontban

Tartalom

  1. oldal: Munin szerver monitor rendszer telepítése és áttekintése
  2. oldal: Munin plugin-ok telepítése, eltávolítása, és jelszavas védelem beállítása

 

A 2. oldal tartalma

 

Folytatás

Az első oldalon feltelepítettük a Munin szerver-monitorozó szoftvert, ezen az oldalon folytatjuk a plugin-ok telepítésével, beállításával, amik segítségével még hatékonyabbá tehetjük rendszerünk megfigyelését.

 

 

Munin plugin-ok telepítése (opcionális)

A Munin plugin-ok telepítése nem kötelező, a rendszer már így is monitorozza a szerver több aspektusát is, de ha már nekiálltunk, akkor készítsük el rendesen Munin rendszerünket.

Rendszer által ajánlott plugin-ok bekapcsolása

A Munin programcsomag tartalmaz egy rendszerelemző részt is, ami felméri a gépben lévő hardverek és a gépen futó szoftveres szolgáltatások alapján az opcionálisan bekapcsolható bővítményeket, amiket egy gyors futási tesztet követően ajánl, vagy hibás működés esetén kiírja hogy az adott rendszer környezetben a kérdéses plugin nem működik.

A Munin telepítésekor már alapból elvégezte ezt az elemzést, és a szerverkörnyezet lehetőségeinek megfelelően be is kapcsolt minden használható bővítményt a saját tárából. Azonban ha később bővítjük a szervert újabb szolgáltatásokkal, érdemes utána kézzel is lefuttatni ezt az elemzést, hátha talál újabb működőképes bővítményt, ami az új szolgáltatásainkat monitorozza.

Kézi indításhoz futtassuk az alábbi parancsot:

munin-node-configure --suggest

Kicsit várni kell, amíg lefut az elemzés, majd kiadja az eredményeket.

A Debian 9-es tökéletes szerveren a kimenet:

Plugin                     | Used | Suggestions                            
------                     | ---- | -----------                            
acpi                       | no   | no [[[ plugin has errors, see below ]]]
amavis                     | no   | no [command logtail or file /var/log/mail.info not found]
apache_accesses            | yes  | yes                                    
apache_processes           | yes  | yes                                    
apache_volume              | yes  | yes                                    
apc_envunit_               | no   | no [no units to monitor]               
bonding_err_               | no   | no [No /proc/net/bonding]              
courier_mta_mailqueue      | no   | no [spooldir not found]                
courier_mta_mailstats      | no   | no [could not find executable]         
courier_mta_mailvolume     | no   | no [could not find executable]         
cps_                       | no   | no [ipvsadm not found]                 
cpu                        | yes  | yes                                    
cpuspeed                   | no   | no [neither /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state nor /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq is readable]
cupsys_pages               | no   | no [could not find logdir]             
df                         | yes  | yes                                    
df_inode                   | yes  | yes                                    
digitemp_                  | no   | no [failed to find executable starting with 'digitemp_']
diskstats                  | yes  | yes                                    
entropy                    | yes  | yes                                    
exim_mailqueue             | no   | no [command exiqgrep not found]        
exim_mailstats             | no   | no [logdir '/var/log/exim4/' does not exist]
fail2ban                   | yes  | yes                                    
forks                      | yes  | yes                                    
fw_conntrack               | no   | no [command /usr/sbin/conntrack or file /proc/net/nf_conntrack or file /proc/net/ip_conntrack not found]
fw_forwarded_local         | no   | no [command /usr/sbin/conntrack or file /proc/net/nf_conntrack or file /proc/net/ip_conntrack not found]
fw_packets                 | yes  | yes                                    
hddtemp_smartctl           | no   | no ['smartctl' executable not found]   
http_loadtime              | yes  | yes                                    
if_                        | yes  | yes (enp0s3)                           
if_err_                    | yes  | yes (enp0s3)                           
interrupts                 | yes  | yes                                    
ip_                        | no   | yes                                    
ipmi_                      | no   | no [missing ipmitool command]          
irqstats                   | yes  | yes                                    
load                       | yes  | yes                                    
lpstat                     | no   | no [lpstat not found]                  
memory                     | yes  | yes                                    
munin_stats                | yes  | yes                                    
mysql_                     | no   | no [Missing dependency Cache::Cache]   
netstat                    | yes  | yes                                    
nfs4_client                | no   | no [no /proc/net/rpc/nfs]              
nfs_client                 | no   | no [[[ plugin gave no reason why ]]]   
nfsd                       | no   | no [no /proc/net/rpc/nfsd]             
nfsd4                      | no   | no [no /proc/net/rpc/nfsd]             
nginx_request              | no   | no [no nginx status on http://localhost/nginx_status]
nginx_status               | no   | no [no nginx status on http://localhost/nginx_status]
ntp_                       | yes  | yes (193.225.118.163 193.6.222.47 195.228.75.149 62.112.193.9 84.2.44.19 92.249.148.253 +162.159.200.123 +193.225.118.162 +212.24.187.220 +212.92.16.193 +62.112.194.60 -162.159.200.1 -193.225.190.4 -193.227.197.2 -195.199.245.170 -213.157.100.71 -62.112.193.129 -62.112.195.26 -62.112.195.55 -84.2.46.19)
ntp_kernel_err             | yes  | yes                                    
ntp_kernel_pll_freq        | yes  | yes                                    
ntp_kernel_pll_off         | yes  | yes                                    
ntp_offset                 | yes  | yes                                    
ntp_states                 | yes  | yes                                    
nvidia_                    | no   | no [no nvclock executable at /usr/bin/nvclock, please configure]
open_files                 | yes  | yes                                    
open_inodes                | yes  | yes                                    
pgbouncer_connections      | no   | no [DBD::Pg not found, and cannot do psql yet]
pgbouncer_requests         | no   | no [DBD::Pg not found, and cannot do psql yet]
postfix_mailqueue          | yes  | yes                                    
postfix_mailvolume         | yes  | yes                                    
postgres_autovacuum        | no   | no [[[ plugin has errors, see below ]]]
postgres_bgwriter          | no   | no [[[ plugin has errors, see below ]]]
postgres_cache_            | no   | no [[[ plugin has errors, see below ]]]
postgres_checkpoints       | no   | no [[[ plugin has errors, see below ]]]
postgres_connections_      | no   | no [[[ plugin has errors, see below ]]]
postgres_connections_db    | no   | no [[[ plugin has errors, see below ]]]
postgres_locks_            | no   | no [[[ plugin has errors, see below ]]]
postgres_oldest_prepared_xact_ | no   | no [[[ plugin has errors, see below ]]]
postgres_prepared_xacts_   | no   | no [[[ plugin has errors, see below ]]]
postgres_querylength_      | no   | no [[[ plugin has errors, see below ]]]
postgres_scans_            | no   | no [[[ plugin has errors, see below ]]]
postgres_size_             | no   | no [[[ plugin has errors, see below ]]]
postgres_transactions_     | no   | no [[[ plugin has errors, see below ]]]
postgres_tuples_           | no   | no [[[ plugin has errors, see below ]]]
postgres_users             | no   | no [[[ plugin has errors, see below ]]]
postgres_xlog              | no   | no [[[ plugin has errors, see below ]]]
proc                       | no   | no [[[ plugin has neither autoconf not suggest support ]]]
proc_pri                   | yes  | yes                                    
processes                  | yes  | yes                                    
qmailqstat                 | no   | no [file /var/qmail/bin/qmail-qstat not found]
selinux_avcstat            | no   | no [missing /sys/fs/selinux/avc/cache_stats file]
sendmail_mailqueue         | no   | no [[[ plugin has errors, see below ]]]
sendmail_mailstats         | no   | no [[[ plugin has errors, see below ]]]
sendmail_mailtraffic       | no   | no [[[ plugin has errors, see below ]]]
sensors_                   | no   | no [program sensors died]              
slapd_                     | no   | no [Connection refused]                
slapd_bdb_cache_           | no   | no [Can't execute db_stat file '/usr/bin/db4.6_stat']
slony_lag_                 | no   | no [DBD::Pg not found, and cannot do psql yet]
smart_                     | no   | no [smartmontools not found]           
snort_alerts               | no   | no [/var/snort/snort.stats not readable]
snort_bytes_pkt            | no   | no [/var/snort/snort.stats not readable]
snort_drop_rate            | no   | no [/var/snort/snort.stats not readable]
snort_pattern_match        | no   | no [/var/snort/snort.stats not readable]
snort_pkts                 | no   | no [/var/snort/snort.stats not readable]
snort_traffic              | no   | no [/var/snort/snort.stats not readable]
squeezebox_                | no   | no [no connection on localhost port 9090]
squid_cache                | no   | no [could not connect: Connection refused]
squid_objectsize           | no   | no [could not connect: Connection refused]
squid_requests             | no   | no [could not connect: Connection refused]
squid_traffic              | no   | no [could not connect: Connection refused]
swap                       | yes  | yes                                    
threads                    | yes  | yes                                    
tomcat_                    | no   | no [could not connect to 127.0.0.1/manager/status?XML=true on port 8080]
uptime                     | yes  | yes                                    
users                      | yes  | yes                                    
varnish_                   | no   | no [[[ plugin has errors, see below ]]]
vmstat                     | yes  | yes                                    
vserver_cpu_               | no   | no [/proc/virtual/info not found]      
vserver_loadavg            | no   | no [/proc/virtual/info not found]      
vserver_resources          | no   | no [/proc/virtual/info not found]      
yum                        | no   | no [Could not run yum]                 
# The following plugins caused errors:
# acpi:
#       Junk printed to stderr
# postgres_autovacuum:
#       Non-zero exit during autoconf (255)
# postgres_bgwriter:
#       Non-zero exit during autoconf (255)
# postgres_cache_:
#       Non-zero exit during autoconf (255)
# postgres_checkpoints:
#       Non-zero exit during autoconf (255)
# postgres_connections_:
#       Non-zero exit during autoconf (255)
# postgres_connections_db:
#       Non-zero exit during autoconf (255)
# postgres_locks_:
#       Non-zero exit during autoconf (255)
# postgres_oldest_prepared_xact_:
#       Non-zero exit during autoconf (255)
# postgres_prepared_xacts_:
#       Non-zero exit during autoconf (255)
# postgres_querylength_:
#       Non-zero exit during autoconf (255)
# postgres_scans_:
#       Non-zero exit during autoconf (255)
# postgres_size_:
#       Non-zero exit during autoconf (255)
# postgres_transactions_:
#       Non-zero exit during autoconf (255)
# postgres_tuples_:
#       Non-zero exit during autoconf (255)
# postgres_users:
#       Non-zero exit during autoconf (255)
# postgres_xlog:
#       Non-zero exit during autoconf (255)
# proc:
#       In family 'auto' but doesn't have 'autoconf' capability
# sendmail_mailqueue:
#       Non-zero exit during autoconf (255)
# sendmail_mailstats:
#       Non-zero exit during autoconf (255)
# sendmail_mailtraffic:
#       Non-zero exit during autoconf (255)
# varnish_:
#       Non-zero exit during autoconf (2)

Az első hasábban a plugin neve látható, a második hasábban, hogy használatban van-e, és a 3. hasábban pedig hogy ajánlja-e a rendszer a használatát. A lista alatt pedig a hibás teszteredményeket produkált bővítmények láthatók. Jelen szituációban a postgres_ kezdetű bővítmények jeleztek hibát, ami érthető is, mivel ez a rendszer nem tartalmazza a PostgreSQL adatbáziskezelő motort. Hasonlóan a sendmail bővítmények sem működnek, mivel a Sendmail rendszer sincs telepítve (helyette ugye a Postfix-et használjuk a szerveren).

A lista harmadik hasábjában tájékozódhatunk a nem bekapcsolható bővítményekkel kapcsolatos hibákról is. Például nem tudnak olvasni egy adott naplófájlt, vagy különböző függőségi problémáik vannak, stb. Ezeket a hibákat külön szükséges orvosolni, majd ezután bekapcsolható a plugin.

Plugin-ok kézi bekapcsolása:

Ha a listánkban találunk olyan bővítményt, ami nincs bekapcsolva, viszont ajánlja a rendszer, azt a következőképpen kapcsolhatjuk be: az elérhető bővítmények könyvtárából (/usr/share/munin/plugins) kell átlinkelni a bekapcsolt plugin-ok könyvtárába (/etc/munin/plugins) az adott fájlt:

ln -s /usr/share/munin/plugins/<plugin_pontos_neve> /etc/munin/plugins/<plugin_pontos_neve>
Plugin-ok automatikus bekapcsolása:

Vannak azonban olyan bővítmények is, amik "_" karakterrel végződnek, ezeknél nem elég a pontos fájlnév alapján történő belinkelés, hanem még valamilyen utótagot is hozzá kell fűzni a szimbolikus link nevéhez, ami az adott grafikonra vonatkozik. Ezért célszerűbb az automatikus link összeállítást lekérni, ami kiadja nekünk a szükséges shell parancssorokat. Ehhez futtassuk az alábbi parancsot:

munin-node-configure --suggest --shell

Itt a --shell opcióval állítjuk át a programot, hogy ne az előző táblázatos formában adja ki nekünk a bővítmények listáját, hanem a futtatható ln parancsokat állítsa nekünk össze a pontos fájlneveket tartalmazó paraméterekkel. Ha pedig ennek a kimenetét egyből le is szeretnénk futtatni, azaz automatikusan bekapcsolni az összes ajánlott bővítményt, akkor irányítsuk át ennek a kimenetét egy csővezetéken egy shell-be:

munin-node-configure --suggest --shell | sh

Ekkor végrehajtásra kerül a kiadott "ln -s" kezdetű  parancsok teljes listája.

A plugin-ok bekapcsolása után pedig mindig újra kell indítani a Munin node-ot:

systemctl restart munin-node
A Munin node újraindítása után még várni kell 5 percet, mire a következő cron ciklus befrissíti a grafikont a HTML részre.

IP

Az "IP_" plugin segítségével figyelhetjük a szerverünk és egy vagy több IP-cím között lebonyolított adatforgalmat. Használatára akkor lehet szükség, ha például több számítógépből álló szerverkörnyezettel rendelkezünk, és a szerverek közötti adatforgalmat kívánjuk figyelni. Például ha az adatbázis kiszolgálónk egy másik szerverről működik, vagy például egy másik gépen másodlagos névszerver szolgáltatást üzemeltetünk, stb. Normál esetben, egy gépes környezetben nincs sok értelme használni.

A bővítmény egy "wildcard" bővítmény, ami azt jelenti, hogy segítségével több grafikont is létrehozhatunk (alapból ezért nem kerül aktiválásra). Bekapcsolása úgy történik, hogy a link nevébe bele kell tenni a figyelni kívánt IP-címet is. Például:

ln -s /usr/share/munin/plugins/ip_ /etc/munin/plugins/ip_192.168.1.100
ln -s /usr/share/munin/plugins/ip_ /etc/munin/plugins/ip_192.168.1.101
ln -s /usr/share/munin/plugins/ip_ /etc/munin/plugins/ip_192.168.1.102

Tehát ezzel a logikával bármennyi linket létrehozhatunk a szerverünk és egy-egy IP-cím közötti forgalom figyelésére. Mindegyik link ugyanarra az "ip_" nevű plugin fájlra kell hogy mutasson.

A bővítmény működéséhez még létre kell hozni a megfelelő tűzfal-szabályokat, amelyek számolni kezdik az adott IP-cím és a szerver közötti adatforgalmat. Ezzel kapcsolatos, példákkal ellátott dokumentációt a bővítmény forráskódjában találhatunk: /usr/share/munin/plugins/ip_

A plugin-ok bekapcsolása után indítsuk újra a Munin node-ot:

systemctl restart munin-node

 

 

MySQL

Ha a szerveren futtatunk MySQL kiszolgálót, akkor érdemes bekapcsolni ezt a bővítmény csoportot. Ezen a szerveren fut a MySQL, viszont a fenti listában függőségi hibát jelez. Ennek javításához telepítenünk kell két csomagot:

apt-get -y install libcache-{perl,cache-perl}

Az egyszerűsített parancs két csomagot telepít (libcache-perl és libcache-cache-perl), amiknek persze még vannak további függőségeik, így összesen 5 csomag kerül telepítésre. Ha ezek felkerültek, be is kapcsolhatjuk a MySQL bővítmény összes grafikonját a fentebb már leírt módszerrel:

munin-node-configure --suggest --shell | sh
Itt nagyon sok link (=grafikon) jön létre, így egyszerűbb ezzel a paranccsal automatikusan lefuttatni őket, mint egyesével bemásolgatni.

Valamint még van néhány plugin, amit az automatika nem kapcsol be, de kézi linkeléssel még hozzájuthatunk néhány hasznos MySQL grafikonhoz:

cd /etc/munin/plugins
ln -s /usr/share/munin/plugins/mysql_bytes mysql_bytes
ln -s /usr/share/munin/plugins/mysql_isam_space_ mysql_isam_space_
ln -s /usr/share/munin/plugins/mysql_queries mysql_queries
ln -s /usr/share/munin/plugins/mysql_slowqueries mysql_slowqueries
ln -s /usr/share/munin/plugins/mysql_threads mysql_threads
Ez a néhány grafikon a "mysql" kategóriában fog megjelenni, míg a fentebb, automatikusan bekapcsolt sok grafikon pedig a "mysql2" kategóriában lesz elérhető.

Ezután még szükség lesz a /etc/mysql/debian.cnf defaults fájl beállítására is, mert a bővítmény ebből a fájlból olvassa ki  a hozzáférést az adatbázis szerverünkhöz, amitől aztán le tudja kérdezni a statisztika készítéséhez szükséges adatokat. Ennek a fájlnak a beállításáról itt tájékozódhatunk.

Majd indítsuk újra a Munin node-ot:

systemctl restart munin-node

Ezután ha újra ellenőrizzük az elemző részben a bővítményt:

munin-node-configure --suggest

Akkor már láthatjuk, hogy a mysql_ kezdetű grafikonok mind be vannak kapcsolva.

Munin - MySQL plugin ellenőrzése Debian 9 rendszeren

Itt előfordulhat, hogy a MySQL grafikonok közül néhány nem jelenik meg adatot, valamint a Munin naplófájljában is dobálhatnak hibákat, akkor ezeket a bővítményeket ki lehet kapcsolni. Ez teljesen a szerverkörnyezettől függ, hogy egyes plugin-ok/grafikonok nem gyűjtenek adatokat. De erről majd később...

Ezek a MySQL grafikonok nagyon hasznosak, főleg amikor egy nagyobb szerver terhelés történik, mert ezek segítségével könnyen kielemezhetjük szerverünk, illetve a rajta futtatott weboldalak gyenge pontjait, amin aztán javíthatunk.

IPMI

Az IPMI (Intelligent Platform Management Interface) plugin segítségével mérhetjük a rendszer és a különböző perifériák, mint például a RAM-ok hőmérsékletét. A bővítmény a fenti lista alapján hiányolja az ipmitool csomagot. Ha be szeretnénk kapcsolni ezt a bővítményt, akkor telepítsük:

apt-get -y install ipmitool

(VirtualBoxban nem működik)

Ezután kapcsoljuk be a bővítmény grafikonjait:

ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_temp
ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_fans
ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_power

És ne felejtsük el újraindítani a Munin node-ot...

systemctl restart munin-node

Hddtemp és sensors

A hddtemp és sensors plugin-ok segítségével szintén hőmérsékleteket tudunk monitorozni. Korábban már készítettem egy leírást, amiben a számítógépünk különböző hardvereinek a hőmérsékleteit olvashattuk ki, most itt is szükség lesz ezekre a programcsomagokra. Tehát a linkelt oldalon leírtakhoz hasonlóan telepítsük az ehhez szükséges csomagokat:

apt-get -y install lm-sensors hddtemp smartmontools

Ezután futtassuk a szenzor detektáló programot:

sensors-detect

Itt mindenre válaszoljunk Yes-t.

Ezután indítsuk el a kmod szolgáltatást:

systemctl start kmod

Majd kapcsoljuk be a hőmérsékleteket monitorozó plugin-okat:

cd /etc/munin/plugins
ln -s /usr/share/munin/plugins/sensors_ sensors_
ln -s /usr/share/munin/plugins/hddtemp hddtemp
ln -s /usr/share/munin/plugins/hddtemp2 hddtemp2
ln -s /usr/share/munin/plugins/hddtemp_smartctl hddtemp_smartctl

Természetesen előfordulhat hogy virtuális gépen ezek közül nem működik mindegyik.

Végül indítsuk újra a Munin node-ot:

systemctl restart munin-node

Harmadik féltől származó plugin-ok telepítése

Lehetőség van további Munin bővítmények telepítésére is, amiket külső weboldalakról tölthetünk le, vagy akár magunk is elkészíthetjük őket. Az itt felsorolásra kerülő plugin-okat én már hosszú ideje használom több szerver óta, így telepítésüket és beállításukat bátran ajánlom mindenkinek.

PHP-FPM 1.

A GitHubon találtam egy PHP-FPM-et monitorozó plugin-t, ami ad néhány használható grafikont. Letöltéséhez a git programot használjuk. Először tehát telepítsük a git-et (amennyiben még nincs a renszerünkön):

apt-get install git

Lépjünk be az elérhető plugin-okat tároló könyvtárba (ahol fizikailag vannak):

cd /usr/share/munin/plugins

Majd klónozzuk le a git könyvtár tartalmát ebbe a könyvtárba:

git clone https://github.com/leprechau/php-fpm-munin-plugins.git

Ez létrehozott egy alkönyvtárat, amiben megtalálható a teljes git könyvtár tartalma: ./php-fpm-munin-plugins/.

Kapcsoljuk be a bővítményt. Mivel ez egy külső bővítmény, ennél nem működik az automatikus linkelés, tehát kézzel hozzuk létre a bővítményhez tartozó grafikonok linkjeit, majd indítsuk újra a Munint:

ln -s /usr/share/munin/plugins/php-fpm-munin-plugins/phpfpm_check /etc/munin/plugins/phpfpm_average
ln -s /usr/share/munin/plugins/php-fpm-munin-plugins/phpfpm_check /etc/munin/plugins/phpfpm_connection
ln -s /usr/share/munin/plugins/php-fpm-munin-plugins/phpfpm_check /etc/munin/plugins/phpfpm_memory
ln -s /usr/share/munin/plugins/php-fpm-munin-plugins/phpfpm_check /etc/munin/plugins/phpfpm_process
ln -s /usr/share/munin/plugins/php-fpm-munin-plugins/phpfpm_check /etc/munin/plugins/phpfpm_status
service munin-node restart

A bővítmény grafikonjai következő Munin futáskor létrejövő "php" kategóriában érhetők el. Mivel ezt a plugin-t már 2013 óta nem fejlesztik, előfordulhat, hogy egy-két grafikon ezek közül nem gyűjt adatokat. Ezeket nyugodtan törölhetjük.

 

 

PHP-FPM 2.

Van még egy nagyon hasznos PHP-FPM grafikonokat megjelenítő bővítmény is, amit szintén a GitHubról tölthetünk le. Letöltéséhez és telepítéséhez futtassuk az alábbi parancsokat:

cd /usr/share/munin/plugins/
wget -O php-fpm https://raw.github.com/MorbZ/munin-php-fpm/master/php-fpm.php
chmod +x php-fpm
ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-memory
ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-cpu
ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-count
ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-time
service munin-node restart

Ez a plugin létrehoz egy "php-fpm" nevű kategóriát, amiben megtalálhatjuk a grafikonokat. Ezekben a grafikonokban külön PHP-FPM pool-okra bontva láthatjuk a különböző adatok gyűjtését.

PureFTPd

Ha a szerveren futtatjuk a PureFTPd FTP kiszolgálót, akkor ehhez is érdemes feltelepíteni a megfelelő bővítményt.

Először telepítsük a logtail programot, amellyel a bővítmény kezeli a megfelelő naplófájlt:

apt-get install logtail

Ezután lépjünk be a plugin-okat tároló könyvtárba:

cd /usr/share/munin/plugins

Majd hozzunk létre egy új fájlt:

nano pure-ftpd

És másoljuk bele innen a pontos tartalmat:

https://github.com/munin-monitoring/contrib/blob/master/plugins/ftp/pure-ftpd-logs

Mentsük le, és tegyük futtathatóvá:

chmod +x pure-ftpd

És linkeljük át a bekapcsolt bővítmények könyvtárába:

ln -s /usr/share/munin/plugins/pure-ftpd /etc/munin/plugins/pure-ftpd

Ezután még be kell állítani, hogy a plugin root-ként fusson, mert csak a root tudja olvasni a /var/log/syslog fájlt, amiből ez a plugin dolgozik. Ehhez a plugin-ok konfigurációs könyvtárában létre kell hozni egy beállítást a pureftpd bővítmény számára. Ezt megtehetjük egy meglévő fájlba is, de létre is hozhatunk neki egy külön fájlt. Hozzunk létre egy új fájlt, így áttekinthetőbb marad a rendszer:

nano /etc/munin/plugin-conf.d/pure-ftpd

És tegyük bele az alábbiakat:

[pure-ftpd]
user root

Mentsük le és indítsuk újra a Munint:

service munin-node restart

Ennek a grafikonját a "network" kategóriában a "Pure Ftpd Logs" címmel fogjuk megtalálni a következő grafikon frissítési ciklustól.

A rendszer 5 percenként frissül, ezért az új pluginok telepítésekor a szolgáltatás újraindítása után csak a következő frissítési ciklusban jelennek meg az újonnan felrakott bővítmények.

 

Felesleges, vagy hibás grafikonok eltávolítása

A Munin rendszert – bár még ma is fejlesztik – nagyon rég készítették, így előfordulhat, hogy egyes grafikonok egyszerűen nem gyűjtenek adatokat, vagy hibásan működnek. Ezek felderítésére több módszer is kínálkozik.

Munin naplófájlok áttekintése

Az egyik módja a hibás bővítmények megtalálásának, ha belenézünk a Munin node naplófájljába. A /var/log/munin könyvtár tartalmazza a központi rendszer és a node naplófájljait. Ezek közül nekünk most a munin-node.log fájl vizsgálatára lesz szükségünk. Tekintsünk is bele a végébe:

tail -n 20 /var/log/munin/munin-node.log

A Debian 9-es virtuális gépen ezt a kimenetet adja:

Munin naplófájl ellenőrzése Debian 9 rendszeren

Itt tehát láthatunk néhány hibát. Ezek közül a "hddtemp_smartctl" valamint a "sensors_" nevű bővítmények a merevlemezek hőmérsékleteit hivatottak monitorozni, azonban virtuális gépen ez a szolgáltatás nem működik, így ezen a gépen ez érthető is. Az "ntp_" kezdetű hibáknál pedig az áll a háttérben, hogy a Munin által előre beállított NTP kiszolgálók egy része már vagy nem létezik, vagy éppen nem érhetők el, stb.

Ezeket a bővítményeket érdemes kikapcsolni, hogy feleslegesen ne fussanak, illetve ne szórják tele a naplófájlt hibaüzenetekkel.

A naplófájlok méretei miatt nem kell izgulnunk, mert a telepítő az elején automatikusan bekötötte őket a Logrotate naplófájl-forgató rendszerbe.

Bővítmények tesztelése

A hibás bővítmények feltérképezésének másik módja, ha a gyanús plugin-t lefuttatjuk a Munin saját tesztelő rendszerével.

Erre a megfelelő parancs a munin-run -d <plugin_neve>. Vegyük például a "sensors_", vagy valamelyik hibás ntp_  bővítményt:

munin-run -d sensors_
munin-run -d ntp_193.227.197.2

Munin - Bővítmények futtatása

Az elsőnél látszólag nincs hiba, de ha lekérdezzük a "?" hiba változót, ott látszik, hogy 2-es hibakóddal lépett ki. A másodiknál pedig 255-ös kóddal, itt ráadásul még hibaüzenet is van.

Így tehát ránézhetünk a gyanús plugin-okra, és megvizsgálhatjuk a működésüket.

 

 

Bővítmények kikapcsolása

A felesleges bővítményeket kikapcsolhatjuk a már ismert módon is, hogy töröljük a /etc/munin/plugins könyvtárból a linkjét, és újraindítjuk a node-ot. De van egy hatékonyabb módszer is, amivel a rendszer automatikusan leellenőrzi az összes bekapcsolt bővítményt, és a hibásakhoz elkészíti a link törlő parancsokat, amiket csak le kell futtatni. Ehhez adjuk ki a következő parancsot:

munin-node-configure --suggest --shell --remove-also

Ekkor a kimenetében kiadja az elkészített link törlő parancsokat, amikkel eltávolíthatjuk a felesleges bővítményeket.

Munin - Automatikus plugin eltávolító parancsok

Ha még ezt a parancsot átirányítjuk egy shell-be, akkor még végre is hajtja nekünk:

munin-node-configure --suggest --shell --remove-also | sh
Itt jön jól, ha a szerver telepítésekor felraktuk a Bash programozható parancssori kiegészítését, mert ezek a Munin parancsok is jól működnek vele, amikor nyomkodjuk a tab billentyűt. Persze ezt utólag is feltelepíthetjük, amennyiben elmulasztottuk volna.

Végezetül indítsuk újra a node-ot is:

systemctl restart munin-node

 

Jelszavas védelem beállítása a webes felületre

Ha mindennel megvagyunk, már csak egy dolog maradt hátra, hogy jelszóval védjük a Munin webes felületét, hogy elzártan tarthassuk a külvilág elől.

Erről korábban már volt szó, hogyan használhatunk HTTP hitelesítésű jelszavakat, most is ezzel a módszerrel fogjuk levédeni a munin felületünket. Azonban ebben az esetben nem a .htaccess fájlban fogjuk elhelyezni a beállításokat, hanem a Munin Apache konfigurációjában. Ez azért lényeges, mert a Munin a webes tartalmát nem egy fix könyvtárban tárolja, hanem egy cache könyvtárban (/var/cache/munin/www), aminek a tartalma ciklikusan felülíródik, valamint bármikor ki is pucolódhat, így a .htaccess fájlunk sem lenne ott tartósan biztonságban.

Hozzuk létre a jelszót tároló fájt a /etc/munin könyvtárban (ahol biztonságban lesz):

htpasswd -c /etc/munin/munin_password admin

Ekkor bekéri a megadott admin felhasználóhoz a jelszót, majd ismétlést kér. Ezután létrejön a jelszó fájl. Nyissuk meg a Munin Apache konfigurációs fájlját:

nano /etc/munin/apache24.conf

És a korábban már módosított részeken most ismét változtassunk az alábbiaknak megfelelően:

[...]
<Directory /var/cache/munin/www>
    #Require local
    #Require all granted
    AuthUserFile /etc/munin/munin_password
    AuthName "Munin"
    AuthType Basic
    Require valid-user
    Options FollowSymLinks SymLinksIfOwnerMatch
    Options None
</Directory>

<Directory /usr/lib/munin/cgi>
    #Require local
    #Require all granted
    AuthUserFile /etc/munin/munin_password
    AuthName "Munin"
    AuthType Basic
    Require valid-user
    Options FollowSymLinks SymLinksIfOwnerMatch
    <IfModule mod_fcgid.c>
        SetHandler fcgid-script
    </IfModule>
    <IfModule !mod_fcgid.c>
        SetHandler cgi-script
    </IfModule>
</Directory>
[...]

Mindkét kódblokkban kommentezzük ki a "Require all granted" sorokat, valamint tegyük be az alattuk lévő 4-4 sort.

Végül indítsuk újra az Apache-ot:

systemctl restart apache2

Ellenőrzés

Ezután ha ráfrissítünk a Munin oldalára a böngészőben, akkor már a beléptető panel fogad:

Munin - HTTP hitelesítés ellenőrzése

 

 

Konklúzió

Mint láthatjuk, a Munin rendszer monitor program már nem mai darab, inkább a veterán kategóriába lehetne sorolni, viszont még ma is aktívan fejlesztik. És ha még a Debian csomagtárában is megtalálható, akkor biztosan sokan mások is hasznosnak tartják. Egy jó ideig nem volt hozzá frissítés, ezért nem is foglalkoztam a leírás készítésének gondolatával, de amikor megláttam a Debian 10 és a Debian 9 backports tárolóiban az újabb verziókat, gondoltam megér egy kis billentyűzet koptatást a dolog. Persze vannak ennél sokkal modernebb rendszerelemző szoftverek is, de én ezt már régóta használom, áttekinthetőnek és megbízhatónak tartom, így nyugodtan tudom ajánlani bárkinek.

 

 

Lapozó

Ez a leírás több oldalból áll: