Jak jsem psal svůj monitoring

Rozhodl jsem se podělit o svůj příběh. Možná se někomu hodí podobné cenově dostupné řešení všeobecně známého problému.

Když jsem byl mladý a vášnivý a nevěděl, co se svou energií, rozhodl jsem se trochu freelance-ovat. Rychle se mi podařilo vybudovat si reputaci a našel jsem pár stálých klientů, kteří mě požádali o trvalou údržbu jejich serverů.

První, co mě napadlo, byla potřeba monitoringu. Rozhodl jsem se postupovat jako inteligentní lidé, nevymýšlet kolo, ale podívat se na hotové varianty, jako jsou Munin nebo Zabbix. Rychle se však ukázalo, že webová verze vyžaduje dobré internetové připojení, zejména pokud ji poprvé otevíráte z telefonu. Pokud odpočíváte v přírodě daleko od města, je těžké získat stabilní spojení. Takže byla zvolena konzolová verze monitoringu.

Jako konzolové monitorování mi výborně pomohl atop a program pro čtení logů atopu — atopsar. O těchto již bylo zmíněno na habr, atop dokonce rozebrali, ale o atopsaru se skoro vůbec nemluvilo.

Instalace

Velmi jednoduchá instalace, pouze tři příkazy.

#Centos

yum install atop

#Debian/Ubuntu

apt-get install atop

Dále si můžete nastavit monitoring podle sebe nebo použít výchozí nastavení.

#Debian/Ubuntu/Centos

/etc/default/atop 

Standardní soubor:

 #cat /etc/default/atop
INTERVAL=60                    #Время, через которое создаётся снимок нагрузки в секундах, по умолчанию каждые 10 минут
LOGPATH="/var/log/atop"        #Путь до папки хранения логов
OUTFILE="$LOGPATH/daily.log"   #Название файла логов за сегодняшний день

Přidáváme do automatického spuštění
#Debian/Ubuntu/Centos

systemctl enable atop 

Spouštíme atop jako démon
#Debian/Ubuntu/Centos

systemctl start atop  

Pro lenochy jsem to dal do jednoho příkazu
#Centos

yum install atop && systemctl enable atop && systemctl start atop

#Debian/Ubuntu

apt-get install atop && systemctl enable atop && systemctl start atop

Atopsar

Spolu s atopem se instaluje i atopsar, což je pohodlný konzolový analyzátor binárních logů, které vede démon atop. Samozřejmě je možné číst logy i samotným atopem, ale není to tak pohodlné, pokud je potřeba zachytit delší časový interval.

Malý návod na práci s atopsarem.

Pokud spustíte atopsar bez přepínačů, otevře se log za dnešní den a zobrazí se zatížení každého jádra jednotlivě a řádek idl pro všechna jádra.

Přepínače, které používám:

-A = zobrazit všechny informace z logu
-c = zobrazit informace o zatížení jader procesoru, výchozí přepínač
-m = zatížení operační paměti a swapu
-d = disková aktivita
-O = top-3 procesy zatížení CPU
-G = top-3 procesy zatížení RAM
-D = top-3 procesy zatížení disku
-N = top-3 procesy zatížení sítě
-r = uvést cestu k logu, který chcete číst, pokud potřebujete vidět zatížení za předchozí dny
-b = čas, od kterého začít zobrazovat výstup
-e = čas, kdy je třeba dokončit výstup
-M = vytváří další sloupec na konci, ve kterém je označena kritičnost řádku (+ je zátěž, * — kritická zátěž)

Díky monitorování budeme schopni pochopit příčinu nesprávného chování serveru kdykoliv.

Oznámení

Takže monitorování zátěže existuje, ale stále neumožňuje rychle nalézt a vyřešit problémy. Potřebujeme upozornění na vzniklé problémy.

Sleduji servery sám, proto je třeba mě upozorňovat tam, kde to vždy uvidím a mohu na to nějak reagovat.

Na začátku byly SMS — rychlé, spolehlivé, zdarma. Ale pak mobilní operátoři zrušili bezplatné SMS rozesílání přes své brány.
Email — pomalý, mohou nastat problémy s doručením.
Messengery — je třeba je nainstalovat na telefon, je nutné vytvářet boty.

Nakonec se po hledání vybral messenger Telegram pro svou jednoduchost a pohodlnou aplikaci na telefonu a desktopu.

Vytvořil jsem svého bota s pomocí botfather.
Poté jsem na server umístil několik skriptů, které sledují zátěž serveru (IDL, smartct atd.), přítomnost chyb typu „oom killer“, chyby při vytváření záložek a další operace, které je třeba kontrolovat.

Skripty jsou poměrně jednoduché, napsané v bash, například kontrola LA a oznámení o překročení Load Average počtu jader na serveru.

if [ ${LA[0]} -gt 2000 ] || [ ${LA[1]} -gt 3000 ] || [ ${LA[2]} -gt 4000 ]
    then
        wget -O \/dev\/null "https:\/\/api.telegram.org\/$bot_id:$bot_key\/sendMessage?chat_id=$chat_id&text=Na serveru $ip LA $LAd"
        wget -O \/dev\/null "https:\/\/api.telegram.org\/$bot_id:$bot_key\/sendMessage?chat_id=$chat_id&text=`top -b -n 1 | grep Cpu`"
        wget -O \/dev\/null "https:\/\/api.telegram.org\/$bot_id:$bot_key\/sendMessage?chat_id=$chat_id&text=Top 5 procesů `top -b -n 1 | grep -A 5 'PID USER' | tail -5`"
    fi

Jednoduchost syntaxy nabízí mnoho možností využití (a napsat/dopsat může kdokoliv, kdo trochu ovládá programovací jazyk).

Jediný háček — pokud je server v Rusku (a nemáte na serveru IPv6), je nutné používat proxy. K tomu je třeba na začátku skriptu zapsat řádek pro připojení k proxy:

export https_proxy=http:\/\/uživatel:heslo@IP.adresa:port

To není konec

Jdeš si klidně po horách s batohem na zádech, odpočíváš od civilizace, a najednou telefon, který náhodou zachytil signál, posílá upozornění na problém, který vznikl na tvém serveru. Co dělat? Poklidná nálada jako by náhle zmizela. Mám zavolat ženě a nadiktovat příkazy? Haha!

Musel jsem rychle vymyslet nějaký způsob, jak vyřešit vzniklé problémy rychle a bez dobrého internetu. Tady mi opět pomohl messenger (#telegramlive). Naučil jsem svého bota komunikovat pouze se mnou a ignorovat všechny ostatní. Nyní spolu s upozorněním na problém dostávám trochu více informací, podle kterých rozumím, kdo je zdrojem problému, a mohu se pokusit ho vyřešit na dálku. Stačí napsat zprávu botovi, zvednout telefon výš, aby zpráva odešla, a voilà - bot šel dělat tvou práci. Takto mohu například zabít nějaký nežádoucí proces, restartovat démon, zablokovat IP a další.

Také jsem sem přesunul budoucí potřebné požadavky od klientů, jako je urgentní resetování hesel uživatelům (protože "Aaaah, nemůžeme se dostat na server, ztrácíme miliony!"), hledání uživatele, který má přístup do potřebné složky, zapnutí a vypnutí webu a další. Samozřejmě neustále vylepšuji funkčnost bota, protože fantazie klientů někdy přichází s nečekanými a mnou nepredikovanými požadavky. Ale většina je spokojená.

Existuje i verze pro VK, ale ta se nějak neuchytila.

Teď mohu v klidu cestovat a poznávat tento svět, aniž bych měl strach, že něco se pokazí a já nebudu moci o tom zjistit nebo to opravit.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster