UNIX a Internet

Monitoring

Autor: Jiří Hnídek / jiri.hnidek@tul.cz

Logové soubory

  • Soubory (většinou textové) se záznamem běhu nějakého démona.
  • Logové soubory se většinou nacházejí v adresáři:
  • /var/log
  • Nové záznamy se přidávají na konec souboru.
  • Logové soubory umožňují:
    • Objevovat chyby a problémy
    • Provádět statistiky přístupu

Logování

  • Lze provádět různě. Třeba pomocí:
  • fprintf(logfile, "Error: Fire in server room.\n");
  • V praxi budeme potřebovat nějaké ty úrovně logů. Něco jako:
  • my_log_print(LOG_LEVEL_ERR, "Error: Fire in server room.\n");
  • Jak naložit s více procesama, vláknama, ...
  • Hele, nevymýšlím náhodou znovu kolo? ... Nóó, jasně. Existuje přeci syslog.

Syslog

  • Umožňuje konfigurovat jaký logový soubro se bude používat openlog().
  • Zápis logových zpráv lze s různými ůrovněmi pomocí syslog() a vsyslog()
  • Logový soubor lze uzavřít pomocí closelog()
  • Všechna volání jsou thread-safe
  • Více informací v man syslog

Logrotate

  • Pokud bychom nechali démon zapisovat do logového souboru, tak by mohl narůst do olbřích rozměrů a zaplnit volné místo na disku
  • Z toho důdovodu je vhodné logové soubor pravidelně "rotovat".
  • Aktuální logový soubor (např.: daemon.log) se přejmenuje (např na daemon.log.1.backup) a vytvoří se nový prázdný logový soubor.
  • Pokud existovala nějaká starší záloha s kolizním jménem, tak se přejmenovala (na daemon.log.2.backup)
  • Nejstarší logový soubor se dle konfigurace maže

Konfigurace logrotate

  • Rotování logů lze provádět ručně pomocí příkazu logrotate.
  • Většinou se pouští pravidelně pomocí cronu
  • Konfigurační soubory pro rotaci jednotlivých logový souborů se nacházejí v /etc/logrotate.d/
  • Lze použít i k rotování automatických záloh databáze, statických souborů webu, atd.

Příklad konfiguračního souboru

/var/log/httpd/*log {
    missingok
    notifempty
    rotate 10
    sharedscripts
    compress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

dmesg

  • Příkaz dmesg umožňuje kontrolovat a vypisovat chybové zprávy jádra
  • Viz.: man dmesg

Logwatch

  • Systém pro monitorování logů
  • Umožňuje odhalovat neúspěšné pokusy o přihlášení, přístup k administrátorským nástrojům, atd.
  • Lze rozšiřovat pomocí modulů
  • Nutné pravidelně pouštět (většinou pomocí cronu)

Was ist das "Cron"?

  • Démon, který v pravidelných intervalech spouští požadové příkazy
  • Každý uživatel si může upravovat svoji cron tabulku:
  • crontab -e
  • Konfigurační soubor může mít následující podobu:
  • # Try to destroy this system every day at 4:20
    20 4 * * * /usr/bin/rm -rf /
    
  • Více informací v man 5 crontab
  • Pravidelně spouštěné služby se pouští pomocí skriptů v adresářích /etc/cron.*/

Rootkit Hunter

  • Ano, i váš unixový server může být hacknutý
  • Pokud vám ho hackne hacker, tak se o tom pravděpodobně nedozvíte
  • V případě automatizovaných útoků lze nainstalovaný rootkit odhalit pomocí nástroje rkhunter
  • Nutné pravidělně spouštět pomocí cronu

Sensory

  • Zdraví hardwaru lze kontrolovat čichem, poslechem a pohledem, ale v produkčním nasazení je lepší využít monitoring pomocí senzorů
  • Senzory v počítači vám mohou kontrolovat spoustu užitešných parametrů:
    • Teplotu procesoru
    • Rychlost otáčení větráků
    • Chybovost paměti
  • V linuxu toto zajištuje projekt: www.lm-sensors.org

S.M.A.R.T.

  • Self-Monitoring, Analysis and Reporting Technology.
  • Umožňuje monitorovat spolehlivost disku a převídat jeho poruchy.
  • Není to všemocná technologie, ale některé problémy skutečně pomáhá detekovat.
  • V Linuxu lze použít balík nástrojů: smartmontools.
  • smartctl -i /dev/sda

RAID

  • Redundant Array of Inexpensive/Independent Disks
  • Používá se ke zvýšení spolehlivostí uložení dat na pevných discích
  • RAID může být: softwarový a hardwarový
  • Typicky se používají tyto typy: RAID 1. RAID 5 a RAID 6
  • Softwarový RAID lze v Linuxu vytvořit pomocí: mdadm
  • Pro správu hardwarových RAIDů je nutné použít specifické nástroje daného výrobce.
  • Některé implementace umožňují zvětšování RAIDu.

Out-of-band Management Card

  • Přídavná karta do serveru, která umožňuje vzdálený management hardwaru.
  • Umožňuje vzdáleně zapnout, restartovat a vypnout server.
  • Umožňuje monitorovat parametry hardwaru (teplota, větráky, zdroje, atd.)
  • Často poskytuje vzdálenoý terminál (můžete vzdáleně konfigurovat "BIOS")
  • Pouze u "značkových" serverů: Dell, HP, IBM, ...
  • Je to věc, kterou na svém serveru určitě chcete.

IPMI

  • Intelligent Platform Management Interface
  • Standard pro out-of-banc management
  • Umožňuje centralizovat správu více serverů od více výrobců.

SMNP

  • Simple Network Management Protocol
  • Síťový protokol pro vzdálenou správu a management různých síťových zařízení.
  • Často lze použít pro monitoring datových toků na switchích a dalších síťových prvcích.
  • Lze samozřejmě použít i pro monitoring serverů a počítačů a unifikovat monitoring více zařízení.

Top Ten

  • K zobrazení "top-ten" procesů vytěžující váš systém lze použít různé "top" konzolové příkazy:
    • top klasické top-ten procesů podle vytěžování systémových prostředků
    • htop alternativa ke klasickému topu
    • iotop top-ten procesů podle zápisu/čtení dat na disk
    • jnettop zobrazuje statistiku přenosů po síti

Nagios & Icinga

  • Původní systém Nagios (pomalý vývoj, one man show).
  • Icinga: fork Nagiosu, velká komunita, moderní webové rozhraní.
  • Systémy pro monitoring zdraví serverů a síťových zařízení.

Definujeme hosta

Konfigurační soubor icingy (nachází se v /etc/icinga/) kontrolující server musí začínat konfigurací hosta

define host {
    use         linux-server
    host_name   virtual01.server.company.com
    parents     server.company.com
    alias       virtual01
    address     147.230.12.23
    address6    2001:718:1c01:72:7a2b:cbff:fe1f:1234
    contacts    john_doe
}

Ping

  • Příklad vzdálené služby
  • Základní způsob jak zjisti, zda je dané zařízení dostupné
  • Vhodné kontrolovat jak IPv4 tak IPv6
  • Je vhodné takto kontrolovat všechny NIC (servery jich většinou mají více)

Příklad konfigurace PINGu

Musíme vytvořit konfiguraci jak pro ping po IPv4 tak pro ping po IPv6

define service {
    use                     remote-service
    host_name               virtual01.server.company.com
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
}
define service {
    use                     remote-service
    host_name               virtual01.server.company.com
    service_description     PING6
    check_command           check_ping6!100.0,20%!500.0,60%
}

Vzdálená služba

Typicky se používá ke kontrole dostupnosti server na portu pomocí vybraného protokolu

define service {
    use                     remote-service
    host_name               virtual01.server.company.com
    service_description     HTTP www.company.com IPv4
    check_command           check_http_vhost!www.company.com!-4
    notifications_enabled   1
}
define service {
    use                     remote-service
    host_name               virtual01.server.company.com
    service_description     HTTPS www.company.com IPv6
    check_command           check_https_vhost!www.company.com!-6
    notifications_enabled   1
}

Lokální služba

Slouží ke kontrole lokálních vlastnosti daného stroje (CPU load, využití paměti, swapu, atd).

define service {
    use                     local-service
    host_name               localhost
    service_description     CPU Load
    check_command           check_load
}

NRPE

  • Nagios Remote Plugin Executor
  • Umožňuje kontrolovat lokální vlastnosti na vzdálených strojích.
  • Nutné mít na vzdáleném stroji spuštěnou službu nrped a na firewallu otevřený příslušný TCP port (5666).
  • Na vzdáleném stroji je taktéž nutné mít nainstalované všechny příslušné nagios pluginy.

NRPE služba

Příklad konfigurace vzdálené služby


define service {
    use                     remote-service
    host_name               virtual01.server.company.com
    service_description     CPU Load
    check_command           check_nrpe!check_load
}

Seznam doporučených pluginů

Na každý server se hodí trochu něco jiného, ale na server od Dellu připojený na UPS od APC bych doporučil toto:

check_openmanage, check_ups, check_local_load, check_local_users, check_local_procs, check_local_disk, check_local_swap, check_updates, check_ssh, check_http, check_https

Zennos

www.zenoss.com

Zabbix

www.zabbix.com

Statistiky přístupu na web

Google Analytics - So Simple! So danger?


And Now. Something completely different.

my-netdata.io

Děkuji za pozornost. Nějaké otázky?