Konfigurace Smokeping pro monitoring v Linuxu (Smokeping configuration)

By | 04/08/2020

Jak nakonfigurovat Smokeping pro síťový monitoring v Linuxu (Smokeping configuration)

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.

Demo s živými ukázkovými grafy lze nalézt zde: https://oss.oetiker.ch/smokeping-demo/

OS:

Implementace byla prováděna na Ubuntu 18.04 LTS, postup může být aplikovatelný na Ubuntu 17.10 a nižší.

Implementace:

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:

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 5min žá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í 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

Hotovo.

Napsat komentář

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