Jak monitorovat stav linuxového serveru? | Buchtič blog o IT a PC Buchtič blog

... je jedním z nejnavštěvovanějších tuzemských blogů zabývajících se IT a češtinami do programů a her. Pokud máte problém nejen
s počítačem pravděpodobně u mě naleznete řešení, případně si o něj napište. Zajímám se rovněž o herní průmysl a internet věcí - každý produkt pořádně prověřím. Přiblížíme si tvorbu webových prezentací a budeme cestovat po světě skrz Google Earth. »

 

Jak monitorovat stav linuxového serveru?

3 Lis 2019

Provozujete vlastní webový server, případně jste dostali na starost správu linuxového serveru a hledáte způsob, jak monitorovat jeho stav? Dnes si ukážeme, že není nutné rovnou vytahovat kanon na vrabce neboli Zabbix a ani si psát vlastní skript.

Monit je bezplatný nástroj určený pro dohled Unixových systémů, který dokáže automaticky provést potřebné kroky pro vyřešení chybového stavu – typicky opětovné spuštění služby. Zároveň disponuje vestavěným webovým serverem, proto se na aktuální stav svého serveru můžete podívat i na dovolené. Pokud si předem vše nastavíte, pro vyřešení krizové situace se následně nebudete muset k serveru připojovat prostřednictvím SSH, a vše zvládnete klidně ze svého telefonu. Pojďme si Monit nainstalovat na CentOS a podívat se na jeho základní konfiguraci.

Instalaci proveďte příkazem: yum install monit

Automatické spuštění po startu systému zajistíte příkazem: systemctl enable monit

Konfigurace

V základu je webové rozhraní dostupné prostřednictvím protokolu HTTP na portu 2812 a výchozí přihlašovací údaje jsou admin/monit. To se nám samozřejmě nelíbí, neboť heslo nechceme přenášet nešifrovaně. Pro provedení změn si otevřete soubor /etc/monitrc.

  • Najděte řádek set httpd port a změňte si port na vámi požadovaný. Nezapomeňte, že v případě CentOSu musí být port vyšší než 1024.
  • Na řádku allow admin:monit změňte přihlašovací údaje pro administrátorský účet.

Pokud nechcete mít webové rozhraní dostupné z celého internetu, odkomentujte řádek use address localhost, a doplňte jej o IP adresu, z níž se budete k serveru připojovat.

Vytvoření read-only uživatele

Pro prosté zjištění stavu se není nutné hlásit administrátorským účtem. K zobrazení doby běhu služeb a dalších informací o serveru si můžete vytvořit pouze audit účet, který nemá oprávnění pro provádění akcí (například restart služby). Nejprve si definujeme skupinu uživatelů s oprávněním pouze pro čtení: allow @users read-only

Následně vytvoříme uživatele dohled a přidáme jej do skupiny:
allow dohled:lekarna read-only

Instalace SSL certifikátu

V konfiguračním souboru odkomentujte podsekci with ssl a definujte cestu k souboru s certifikátem, který musí obsahovat celý řetězec včetně privátního klíče.
pemfile: /etc/letsencrypt/archive/mujserver.cz/fullchain-monit.pem

Jak sledovat služby a zajistit jejich restart?

Když nyní máme zajištěn bezpečný přístup do webového rozhraní, můžeme se vrhnout na definování služeb, které chceme monitorovat. V principu jde o to, že si zjistíte umístění pidfile daného procesu, a příkazy pro jeho spuštění. Ukážeme si to na příkladu databázového serveru MySQL.
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/bin/systemctl start mysqld"
stop program = "/bin/systemctl start mysqld"

A ještě jeden příklad s definováním automatického restartu při nedostupnosti služby na definovaném portu.
check process apache with pidfile /var/run/httpd.pid
start program = "/etc/init.d/httpd start" with timeout 60 seconds
stop program = "/etc/init.d/httpd stop"
if failed port 80 for 2 cycles then restart
if failed port 443 for 2 cycles then restart

Zasílání notifikací

Pokud chcete mít přehled o tom, co na serveru děje, aktivujte si zasílání oznámení na e-mail. Stačí jen do konfiguračního souboru přidat následující řádky:
set mailserver localhost
set alert administrator@mojedomena.cz

Pokud lokálně nemáte žádný poštovní server, externí SMTP definujte následovně:
set mailserver smtp.mojedomena.cz port 587
username "uzivatel" password "tajneheslo"
using tls

Volitelně si můžete definovat formát zasílané zprávy. Příklad:
set mail-format {
from: monit@mujserver.cz
reply-to: noreply@mujserver.cz
subject: Monit: $EVENT
message: Monit v $DATE provedl $ACTION nad službou $SERVICE.
Detailní informace: $DESCRIPTION.
Strážce tvého serveru
}

Tím bychom za sebou měli ukázku základní konfigurace, díky které si automatizujete odstraňování problémů k jejichž vyřešení stačí provést restart služby. Definovat dále můžete například automatický restart služeb po několika dnech, monitorovat vytížení sítě či ověřovat platnost certifikátů. Možnosti použití jsou detailně popsány v dokumentaci a další praktické tipy a příklady naleznete ve wiki.

Stejný postup můžete použít na monitorování stavu virtuální appliance ESET Security Management Center. Stačí si balíček monit doinstalovat z repozitáře a nakonfigurovat dle svých potřeb (typicky sledovat službu mysqld, tomcat, eraserver a eraagent). Samozřejmě si nezapomeňte povolit port ve firewallu.

Martin Buchta | Kategorie: Internet, IT
Tagy: ,

← Líbil se vám článek? Podělte se o něj s přáteli!