Konfigurace Smokeping pro monitoring v Linuxu (Smokeping configuration)

By | 04/08/2020

Last Updated on 09/07/2023 by administrator

Konfigurace Smokeping pro monitoring v Linuxu (Smokeping configuration)

Konfigurace Smokeping pro monitoring v Linuxu (Smokeping configuration)

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 18.04 LTS a Ubuntu 20.04 LTS, postup může být aplikovatelný na Ubuntu 17.10 a nižší.

Impementaci je možné provést u na Ubuntu 22.04 – nicméně je potřeba se řídit instrukcemi v závěru článku.

Implementace:

Instalace a konfigurace Smokeping:

Aktualizace seznamu balíčků z repozitářů:

sudo apt-get update

Instalace služby Smokeping. Automaticky se nainstalují i další závislosti na tomto balíčku (např: apache2, fping, echoping, ..):

sudo apt-get install smokeping

Potvrdíme „Internet Site“, díky kterému je možné použít protokol SMTP pro odesílání emailu při výpadku služby. To bude později ukázáno.

Smokeping configuration postfix

Dopsat doménové jméno. Např. pokud používám email uzivatel@example.org, mé doménové jméno bude example.org.

Smokeping configuration postfix

Smokeping vyžaduje instalaci webového serveru. V tomto případě bude nainstalován Apache web server:

apt-get install apache2

Po instalaci webového serveru apache povolit CGI modul. CGI (Common Gateway Interface) umožňuje spouštění externích programů (v případě SmokePing je to skript smokeping.cgi) na straně serveru. SmokePing využívá skript smokeping.cgi jako rozhraní mezi serverem a uživatelským rozhraním webového prohlížeče. Skript smokeping.cgi zpracovává požadavky na zobrazení grafů, tabulek a konfiguraci SmokePing.

a2enmod cgid

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:

smokeping cgi-bin

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):

Smokeping configuration

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:

Smokeping configuration - local network

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

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:

WEB test

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:

smokeping https

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:

DNS test

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!

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *