Last Updated on 09/07/2023 by administrator
Konfigurace Smokeping Ubuntu 22.04 pro monitoring sítě
Konfigurace Smokeping Ubuntu 22.04
Popis:
SmokePing je software pro monitorování síťové odezvy (latency), ztrátovosti (packetloss) a rozptylu zpoždění. Nabízí mnoho sond a pluginů pro monitorování nejrůznějších protokolů jako je SSH, Telnet, DNS, IPv6, LDAP, .. Tyto údaje zaznamenává vizuálně do grafů a umí varovat při výpadku služby. Konfigurace Smokeping není nějak náročná.
Demo s živými ukázkovými grafy lze nalézt zde: https://smokeping.oetiker.ch/?target=Customers.OP
OS:
Implementace byla prováděna na Ubuntu 22.04 LTS
Implementace:
Instalace a konfigurace Smokeping Ubuntu 22.04:
Aktualizace seznamu balíčků z repozitářů:
sudo apt update
Instalace služby Smokeping. Automaticky se nainstalují i další závislosti na tomto balíčku (např: Apache2):
sudo apt install smokeping
Zjistit IP adresu na které běží smokeping pomocí příkazu:
ip a
Do internetového prohlížeče zadat link níže, kde <IP> je IP adresa je adresou stanice/serveru na které běží Smokeping:
http://<IP>/cgi-bin/smokeping.cgi
Objeví se hlavní okno Smokeping webu:
Pozn. Grafické okno Smokeping se může lišit.
Všechna síťová zařízení se definují v souboru Targets ve složce /etc/smokeping/config.d/:
sudo vim /etc/smokeping/config.d/Targets
Ukázka původní konfigurace s popisem:
+ Local # definice sekce "Local" menu = Local # sekce se jménem "Local" title = Local Network # nadpis sekce "Local" ++ LocalMachine # definice podsekce "LocalMachine" menu = Local Machine # popis sledovaného zařízení "LocalMachine" title = This host # popis grafu host = localhost # testování sebe samého (t.j. na IP 127.0.0.1)
Lépe je to ukázáno níže na obrázku, kde je graficky znázorněná sekce (+ Local) a podsekce (++ LocalMachine):
Jak lze vidět v podsekcích označené „++“ definujeme síťová zařízení. Sekce označená „+“ je zase nadmnožinou síťových zařízení.
a) Sonda pro testování ICMP (ping):
Budou přidány první dva testy na ICMP (ping) pro síťová zařízení např. router, který běží na IP adrese 192.168.0.1 a WiFi router běžící na 192.168.0.254. Tyto podsekce budou přidány do souboru Targets.
sudo vim /etc/smokeping/config.d/Targets
Pod celý config níže vložit:
++ Router menu = Router title = Router host = 192.168.0.1 #alerts = someloss ++ WiFirouter menu = WifiRouter title = WifiRouter host = 192.168.0.254 #alerts = someloss
Podobně lze přidávat další síťová zařízení.
Změna configu vyžaduje restart služby smokeping:
sudo service smokeping restart
Ověření služby Smokeping:
service smokeping status
Výpis příkazu service smokeping status:
● smokeping.service - LSB: Start or stop the smokeping latency logging system daemon Loaded: loaded (/etc/init.d/smokeping; generated) Active: active (running) since Wed 2019-06-19 17:15:03 CEST; 12min ago Docs: man:systemd-sysv-generator(8) Process: 694 ExecStart=/etc/init.d/smokeping start (code=exited, status=0/SUCCESS) Tasks: 4 (limit: 4662) CGroup: /system.slice/smokeping.service ├─888 /usr/bin/perl /usr/sbin/smokeping --config=/etc/smokeping/config ├─889 /usr/sbin/smokeping [FPing] ├─890 /usr/sbin/smokeping [EchoPingDNS] └─891 /usr/sbin/smokeping [EchoPingHttp]
Nyní se na localhost, router a wifi router zasílá co 5 min žádost protokolem ICMP. To je následně vykresleno v grafu níže. Na vykreslení první hodnoty v grafu je nutné si počkat minimálně 5 min:
Pozn. Jak bylo již zmíněno výše, vykreslení grafu není okamžité. Defaulně se posílá 20 „pingů“ každých 5 min. Případné změny lze nastavit v souboru Database v /etc/smokeping/config.d/.
b) Sonda pro testování HTTP:
Pro měření obousměrného zpoždění (RTT) na aplikační službu HTTP se využívá sonda (probe) EchoPingHttp. Tuto sondu je nutné definovat v souboru /etc/smokeping/config.d/Probes
sudo vim /etc/smokeping/config.d/Probes
Příklad konfigurace v souboru Probes:
+EchoPingHttp binary = /usr/bin/echoping ipversion = 4 port = 80 accept_redirects = yes
Legenda:
binary – typ sondy (probe) s definicí její absolutní cesty v linuxu
port – HTTP obvykle beží na portu 80
ipversion – verze IP protokolu, zde pro IPv4 protokol
accept_redirects – akceptuje stavové HTTP kódy 3xx přesměrování (redirections) jako obyčejné odpovědi
Bude přidána nová sekce WEBtest (+) pod kterou budou přidány dvě podsekce (++), kde bude sledována dostupnost na webové stránky google.com a seznam.cz protokolem HTTP. To bude zapsáno do souboru Targets:
Všechna síťová zařízení se definují v souboru Targets ve složce /etc/smokeping/config.d/:
sudo vim /etc/smokeping/config.d/Targets
A vložit nakonec souboru:
+ WEBtest menu = WEB Test title = WEB Testing ++ Google-com probe = EchoPingHttp menu = google.com title = HTTP ping to google.com host = google.com #alerts = someloss ++ Seznam-cz probe = EchoPingHttp menu = seznam.cz title = HTTP ping to seznam.cz host = seznam.cz #alerts = someloss
Restartovat službu smokeping:
sudo service smokeping restart
Pozn. Při zobrazení chyby níže:
Jul 09 17:27:04 smokeping smokeping[10905]: ERROR: /etc/smokeping/config.d/Probes, line 17: ERROR: binary '/usr/bin/echoping' is not executable Jul 09 17:27:04 smokeping systemd[1]: smokeping.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
je potřeba stáhnout soubor echoping, ten rozbalit, vložit do složky /usr/bin/, přidat práva pro spuštění a provést restart služby smokeping znovu, podle postupu níže:
cd /opt wget https://martinuvzivot.cz/wp-content/uploads/2020/08/echoping.zip unzip echoping.zip mv echoping /usr/bin/ chmod o+x /usr/bin/echoping sudo service smokeping restart
Nyní se na oba webové servery google.com a seznam.cz zasílá co 5 min žádost na portu 80. To je následně vykresleno v grafu níže. Na vykreslení první hodnoty v grafu je nutné si opět počkat minimálně 5 min:
Pozn. podle potřeby lze parametry port, ipversion, accept_redirects přepsat u každé podsekce zvlášt v /etc/smokeping/config.d/Targets.
Další info a možnostech nastavení sondy zde: https://oss.oetiker.ch/smokeping/probe/EchoPingHttp.en.html
c) Sonda pro testování HTTPS:
Pro měření obousměrného zpoždění (RTT) na aplikační službu HTTPS se využívá sonda (probe) EchoPingHttps. Tuto sondu je nutné definovat v souboru /etc/smokeping/config.d/Probes
sudo vim /etc/smokeping/config.d/Probes
Příklad konfigurace v souboru Probes:
+EchoPingHttps binary = /usr/bin/echoping forks = 5 accept_redirects = yes ipversion = 4 pings = 5 port = 443 url = /
Legenda:
forks – maximální počet souběžných procesů
Bude použita stejná sekce WEBtest (+) kde budou upravanz dvě podsekce (++), kde bude sledována dostupnost na webové stránky google.com a seznam.cz protokolem HTTPS.
Všechna síťová zařízení se definují v souboru Targets ve složce /etc/smokeping/config.d/:
sudo vim /etc/smokeping/config.d/Targets
Boldem označené řádky, které byly změněny:
+ WEBtest menu = WEB Test title = WEB Testing ++ Google-com probe = EchoPingHttps menu = google.com title = HTTPs ping to google.com host = google.com #alerts = someloss ++ Seznam-cz probe = EchoPingHttps menu = seznam.cz title = HTTPs ping to seznam.cz host = seznam.cz #alerts = someloss
Restartovat službu smokeping:
sudo service smokeping restart
Nyní se na oba webové servery google.com a seznam.cz zasílá co 5 min žádost na portu 443. To je následně vykresleno v grafu níže. Na vykreslení první hodnoty v grafu je nutné si opět počkat minimálně 5 min:
Pozn. opět podle potřeby lze parametry port, ipversion, accept_redirects přepsat u každé podsekce zvlášt v/etc/smokeping/config.d/Targets.
Další info a možnostech nastavení sondy zde: https://oss.oetiker.ch/smokeping/probe/EchoPingHttps.en.html
d) Sonda pro testování DNS:
Pro test rychlosti překladu s obousměrným zpožděním na DNS servery je možné použít program dig jako sondu. Jako doménové jméno pro tento test rychlosti překladu bude zvoleno seznam.cz. Toto se definuje v opět v /etc/smokeping/config.d/Probes
sudo vim /etc/smokeping/config.d/Probes
Příklad konfigurace v souboru Probes:
+ DNS binary = /usr/bin/dig lookup = seznam.cz
Legenda:
binary – typ sondy (probe) s definicí její absolutní cesty v linuxu
lookup – definice doménového jména (to které se má DNS servery „resolvovat“)
Bude přidána opět nová sekce DNStest (+) pod kterou budou přidány dvě podsekce (++) na veřejné Google DNS servery 8.8.8.8 a 8.8.4.4. To bude zapsáno do souboru Targets:
sudo vim /etc/smokeping/config.d/Targets
A vložit nakonec souboru:
+ DNStest menu = DNS Test title = DNS Testing ++ Public-Google1 probe = DNS menu = 8.8.8.8 title = Google DNS Public 1 - 8.8.8.8 host = 8.8.8.8 #alerts = someloss ++ Public-Google2 probe = DNS menu = 8.8.4.4 title = Google DNS Public 2 - 8.8.4.4 host = 8.8.4.4 #alerts = someloss
Nyní se na oba veřejné Google DNS servery 8.8.8.8 a 8.8.4.4 zasílá co 5 min žádost o překlad doménového jména seznam.cz. To je následně vykresleno v grafu níže. Na vykreslení první hodnoty v grafu je nutné si opět počkat minimálně 5 min:
Pozn. podle potřeby lze parametr lookup přepsat u každé podsekce zvlášť v/etc/smokeping/config.d/Targets.
Další info a možnostech nastavení sondy zde: https://oss.oetiker.ch/smokeping/probe/DNS.en.html
Mnoho dalších sond lze najít zde: https://oss.oetiker.ch/smokeping/probe/index.en.html
Notifikace přes Email:
Při výpadku síťového zařízení či služby je možné nastavit oznámení zasílání emailem. K tomu je potřebný balíček sendmail:
apt-get install sendmail
Ověřit zda služba sendmail běží:
service sendmail status
Konfigurační soubor sendmail je umístěný v /etc/mail/sendmail.conf, nicméně nemusí se upravovat.
V souboru Targets odkomentovat alerts = someloss
sudo vim /etc/smokeping/config.d/Targets
++ WiFirouter menu = WifiRouter title = WifiRouter host = 192.168.0.254 alerts = someloss
Nastavení zasílání emailů se provede v souboru Alerts.
sudo vim /etc/smokeping/config.d/Alerts
Doporučuji vymazat původní konfiguraci a konfiguraci níže překopírovat a upravit podle sebe. Přepsat parametr „to“ na skutečnou emailovou adrese příjemce a parametr „from“ na původce zprávy:
*** Alerts *** to = jmeno@seznam.cz, jmeno@centrum.cz from = smokeping@martinuvzivot.cz +someloss type = loss # in percent pattern = >5% edgetrigger = yes comment = Packet loss for 5 mins
someloss – označení alertu (to je ten „alert“, který byl odkomentován v souboru Targets)
type – existují základní dva typy – loss (pro packetloss) a rtt (pro síťovou odezvu)
pattern = >5% – Pokud vznikne packetloss více než 5-ti procentní, odešle se email
edgetrigger – pokud bude nastaven na „yes“, email se zašle při výpadku a při znovunačtení/obnovení výpadku
Dále v souboru General přepsat some.url na řádku cgiurl = http://some.url/smokeping.cgi, což definuje doménové jméno nebo IP adresu na které běží Smokeping. Příklad konfigurace, kde smokeping běží na IP adrese 192.168.88.15:
vim /etc/smokeping/config.d/General
Částečný výpis souboru General:
cgiurl = http://192.168.88.15/cgi-bin/smokeping.cgi
Restartovat službu smokeping:
sudo service smokeping restart
Konfigurace Smokepingje hotova!
TIP – Jak zkrátit URL:
Jelikož URL název „192.168.88.15/cgi-bin/smokeping.cgi“ je příliš dlouhý, je tady tip jak přesměrovat 192.168.88.15 na 192.168.88.15/cgi-bin/smokeping.cgi aby se nemusela zadávat do prohlížeče tato celá URL adresa:
Otevřít soubor .htaccess ve složce /var/www/html/:
sudo vi /var/www/html/.htaccess
Vložit kód níže:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !^/cgi-bin/smokeping.cgi RewriteRule ^$ /cgi-bin/smokeping.cgi [L]
Otevřít soubor 000-default.conf ve složce /etc/apache2/sites-available/:
vi /etc/apache2/sites-available/000-default.conf
Přidat pod <VirtualHost *:80> vložit tučně vyznačený kód níže. Ve výsledku to bude vypadat takto:
<VirtualHost *:80> ... <Directory /var/www/html> AllowOverride All </Directory> ... </VirtualHost>
Povolit modul mod_rewrite pro Apache2. Modul mod_rewrite je zodpovědný za přesměrování URL a řízení přepisování URL v Apache:
sudo a2enmod rewrite
Provést restart Apache2:
service apache2 restart
Hotovo!