Vytvořte si automatické e-mailové statistiky o stavu serveru

Upraveno 6 prosince, 2023 00:18

Pokud spravujete linuxový server, v mém případě konkrétně Ubuntu, může se Vám občas hodit alespoň elementární přehled o stavu serveru. Díky jednoduchému bash skriptu, pár nástrojů a ssmtp si můžete vytvořit automaticky zasílané statistiky o stavu serveru. Pokud Vás tedy stav serveru zajímá, vytvořte si automatické e-mailové statistiky o stavu serveru také. Koneckonců, není to opravdu nic těžkého.

Vytvořte si automatické e-mailové statistiky o stavu serveru

Pro fungování následujícího příkladu byste měli mít na serveru zprovozněný ssmtp a komponentu systat. Princip je jednoduchý. Nejprve si vytvoříte bash skript, který pomocí určitých příkazů složí dohromady statistiky o provozu serveru. Následně využije ssmtp, aby tyto statistiky odeslal na Váš mail. Aby byla tato akce pravidelná využijeme CRON, kam napíšeme pravidlo, aby se skript automaticky spouštěl jednou denně např. ve 20 hodin.

Nejprve si tedy nainstalujte a zprovozněte ssmtp. Kompletní návod najdete zde: Jak nainstalujete a zprovozníte ssmtp na Linuxovém serveru

Vytvořte si bash skript

Kam si uložíte skript, nechám na Vás. Pro tento příklad použijeme například složku skripty.

				
					mkdir /skripty
				
			

Nyní si ve složce skripty vytvořte bash skript, který pro účely tohoto příkladu pojmenujeme vypis.sh.

				
					sudo nano /skripty/vypis.sh
				
			

Vložte do něj následující kód:

				
					#!/bin/bash

# Adresa příjemce
recipient="vase@emailova-adresa.com"

# Získání aktuálního datumu a času před 24 hodinami
current_date=$(date +"%Y-%m-%d %H:%M:%S")
past_date=$(date -d "24 hours ago" +"%Y-%m-%d %H:%M:%S")

# Získání informací o disku
disk_usage=$(df -h / | awk 'NR==2{print $5}')

# Získání průměrného využití RAM za posledních 24 hodin
average_ram_usage=$(free -t -s 86400 | awk '/^Average/{print $3/$2 * 100}')

# Získání průměrného využití CPU za posledních 24 hodin
average_cpu_usage=$(top -bn1 -d 86400 | awk 'NR>7{s+=$9}END{print s/NR}')

# Získání nejvíce používaných procesů za posledních 24 hodin
top_processes=$(ps aux --sort=-%cpu | awk 'NR<=6{print $2, $3, $4, $11}' | sed 's/ /\t/g')

# Získání posledních 15 řádků chybového logu Apache
error_log=$(tail -n 15 /var/log/apache2/error.log)

# Sestavení obsahu emailu
email_subject="Status serveru jmeno.vaseho.serveru za posledních 24 hodin"
email_body="Obsazenost disku: $disk_usage
Průměrné využití RAM: $average_ram_usage%
Průměrné využití CPU: $average_cpu_usage%
Nejvíce používané procesy:
$top_processes

Posledních 15 řádků chybového logu Apache:
$error_log"

# Odeslání emailu pomocí ssmtp
echo -e "Subject:$email_subject\nFrom: vase@emailova-adresa.com\nTo: $recipient\n\n$email_body" | ssmtp -t
				
			

Vytvořte si automatické e-mailové statistiky o stavu serveru

Co skript odesílá?

Skript uložte. Jakmile nyní kdykoliv spustíte tento skript, vytvoří následující statistiky a odešle je na Vás e-mail:

  • Obsazenost disku: Informace o obsazenosti disku na serveru / (kořenový adresář).
  • Průměrné využití RAM: Prostřednictvím příkazu free získáte průměrné využití operační paměti za posledních 24 hodin.
  • Průměrné využití CPU: Prostřednictvím příkazu top získáte průměrné využití procesoru za posledních 24 hodin.
  • Nejvíce používané procesy: Seznam nejvíce používaných procesů na serveru za posledních 24 hodin, získaný prostřednictvím příkazu ps.
  • Posledních 15 řádků chybového logu Apache: Posledních 15 řádků chybového logu serveru Apache, získaných prostřednictvím příkazu tail.

Celý obsah bude sestaven do e-mailové zprávy, která bude odeslána na uvedenou adresu. E-mail bude mít jako předmět “Status serveru jmeno.vaseho.serveru za posledních 24 hodin” a odesílatelem bude adresa “vase@emailova-adresa.com“.

Nastavte cyklické spouštění skriptu na 20 hodinu

Nyní potřebujete zařídit, aby se skript spouštěl denně ve 20 hodin, abyste měli každý den statistiky o svém serveru. Postupujte následovně:

  • Spusťte příkaz crontab -e pro úpravu cron tabulky pro aktuálního uživatele.
  • Pokud se poprvé otevírá cron tabulka, budete požádáni o výběr výchozího textového editoru. Zvolte preferovaný editor (např. nano, vim, emacs) a pokračujte.
  • V otevřeném editoru přidejte následující řádek na konec souboru (cestu ke skriptu si upravte podle svého)
				
					0 20 * * * /skripty/vypis.sh
				
			

Ujistěte se, že skript vypis.sh je spustitelný (pomocí příkazu chmod +x vypis.sh) a že cesta k němu je správná. Cron spustí skript ve specifikovaném čase a výstup odešle na příslušnou e-mailovou adresu uživatele.

Vytvořte si automatické e-mailové statistiky o stavu serveru

Závěr

A jsme u konce. Skript máte vytvořený, uložený a CRON Vám jej bude pravidelně zapínat každý den přesně v osm hodin večer. Co si do skriptu přidáte záleží prakticky na Vás. Můžete jej zmenšit nebo naopak v mnohém rozšířit a dostávat tak každý den pravidelný souhrn informací, podle kterého můžete sledovat nejen zaplnění disků, ale i mnohé další aktivity.

Napadá mě například, že se dá stejně udělat skript na kontrolu disků s podmínkou. Pokud obsazenost disků vzroste nad 85 % například, skript odešle varování na e-mail. Cronem pak můžete tento skript spouštět každou hodinu. Pod 85 % se nestane nic, nad 85 % se odešle varovná notifikace, že Vám dochází místo.

Web je vytvářen s pečlivostí k obsaženým informacím. Snažím se poskytovat kvalitní a užitečný obsah, který ostatním pomáhá, nebo je inspiruje. Pokud jste spokojeni s mou prací a chtěli byste mě podpořit, můžete to udělat prostřednictvím jednoduchých možností.

Byl pro Vás tento článek užitečný?

Klikni na počet hvězd pro hlasování.

Průměrné hodnocení. 0 / 5. Počet hlasování: 0

Zatím nehodnoceno! Buďte první

Jak užitečný vidíte tento článek.

Sledujte mě na sociálních médiích.

Je mi líto, že pro Vás nebyl článek užitečný.

Jak mohu vylepšit článek?

Řekněte mi, jak jej mohu zlepšit.

newsletter

Odebírejte Newsletter

Buďte v obraze! Připojte se k odběru newsletteru a buďte první, kdo získá nejnovější informace přímo do vaší e-mailové schránky. Sledujte aktuality, exkluzivní události a inspirativní obsah, přímo na Vašem e-mailu.  

Odebírat
Upozornit na
guest
0 Komentáře/ů
Vložené zpětné vazby.
Zobrazit všechny komentáře.

Pokud mi chcete napsat rychlou zprávu, využije, prosím, níže uvedený
kontaktní formulář. Děkuji.

Další Kontaktní údaje