Last Updated on 04/03/2025 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!
Věřím, že konfigurace Konfigurace Smokeping Ubuntu 22.04 pomohla.
Moje pozorování:
Pozn. Kdysi jsem používal jeden Smokeping server na „opingávání“ jak IP adres, tak doménových jmen. Přišel jsem totiž na to, že pokud mi spadne konektivita, tak se bez této konektivity nedostanu na smokeping server. Později jsem zjistil, že je to tím, že nefunguje DNS resolving příslušných doménových jmen na které pingám.
Takže jsem si udělal 2 Smokeping servery rozdělil jeden pro „opingávání“ pouze IP adres a druhý pro „opingávání“ na různá doménová jména, kde mám jistotu že se na první server, který opingává pouze IP adresy dostanu i při výpadku.