Kako sam napisao svoj monitoring

Odluka da podijelim svoju priču. Možda će nekom biti korisno ovo proračunsko rješenje za poznati problem.

Kada sam bio mlad i pun energije, nisam znao kako da je iskoristim, pa sam odlučio malo raditi kao freelancer. Uspio sam brzo steći dobar rejting i našao nekoliko stalnih klijenata koji su me tražili da održavam njihove servere na kontinuiranoj osnovi.

Prvo što mi je palo na pamet bila je potreba za nadzorom. Odlučio sam učiniti kao pametni ljudi, ne izmišljati bicikl, već pogledati gotova rješenja, poput Munina ili Zabbixa. No odmah sam otkrio da web verzija zahtijeva dobro internet povezivanje, posebno kada se prvi put otvara s telefona. Ako ste na odmoru u prirodi, daleko od grada, teško je dobiti stabilnu vezu. Stoga je odabran konzolni oblik nadzora.

Za konzolni nadzor dobro mi je pomogao atop i program za čitanje logova atop-a — atopsar. Već su ih spominjali na habr-u, atop su čak analizirali,ali gotovo ništa nisu rekli o atopsaru.

Instalacija

Vrlo jednostavna instalacija, samo tri komande.

#Centos

yum install atop

#Debian/Ubuntu

apt-get install atop

Nakon toga možete prilagoditi rad nadzora prema sebi ili koristiti zadane postavke.

#Debian/Ubuntu/Centos

/etc/default/atop 

Zadana datoteka:

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

Dodajemo u automatsko pokretanje
#Debian/Ubuntu/Centos

systemctl enable atop 

Pokrećemo atop kao demon
#Debian/Ubuntu/Centos

systemctl start atop  

Za lijene sam sve skupio u jednu komandu
#Centos

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

#Debian/Ubuntu

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

Atopsar

Zajedno s atopom instalira se i atopsar, što je praktični konzolni analizator binarnih logova koje vodi demon atop. Naravno, logove možete čitati i sami atop-om, ali to nije tako praktično ako treba zabilježiti dugo vremensko razdoblje.

Mali vodič o radu atopsara.

Kada se atopsar pokrene bez opcija, otvara log za današnji dan i prikazuje opterećenje na svakom jezgru posebno i liniju idl za sva jezgra.

Opcije koje koristim:

-A = prikaži sve informacije iz loga
-c = prikaži informacije o opterećenju procesorskih jezgri, zadana opcija
-m = opterećenje RAM-a i swap-a
-d = diskovna aktivnost
-O = top-3 procesa opterećenja na CPU
-G = top-3 procesa opterećenja na RAM
-D = top-3 procesa opterećenja na disku
-N = top-3 procesa opterećenja na mreži
-r = odredite putanju do loga koji želite pročitati, ako trebate pogledati opterećenje za prethodne dane
-b = vrijeme od kojeg želite započeti izlaz
-e = vrijeme kada je potrebno završiti ispis
-M = stvara dodatnu kolonu na kraju u kojoj se označava kritičnost reda (+ postoji opterećenje, * — kritično opterećenje)

Zahvaljujući nadzoru moći ćemo razumjeti uzrok nepravilnog ponašanja servera u bilo kojem trenutku.

Obavijesti

Dakle, nadzor opterećenja postoji, ali i dalje ne pruža mogućnost brzo pronalaženja i rješavanja problema. Potrebna su nam obavještenja o nastalim problemima.

Samo ja pratim servere, stoga trebam obavijesti na mjesto gdje ću ih uvijek moći vidjeti i barem nekako reagirati.

Isprva su bile SMS poruke — brzo, pouzdano, besplatno. No potom su mobilni operatori ukinuli besplatno slanje SMS poruka preko svojih gateway-a.
E-pošta — sporo, mogu biti problemi s isporukom.
Messenger-i — treba ih instalirati na telefon, potrebno je kreirati botove.

Kao rezultat pretraživanja odabran je Telegram zbog jednostavnosti i praktične aplikacije na telefonu i desktopu.

Stvorio sam svog bota pomoću botfather.
Zatim sam na server stavio nekoliko skripti koje prate opterećenje servera (IDL, smartct i druge), prisutnost grešaka poput «oom killer», greške prilikom pravljenja sigurnosne kopije i druge operacije koje je potrebno kontrolirati.

Skripte su dosta jednostavne, napisane su na bash, na primjer, provjera LA i obavijest o prekoračenju Load Average’a broja jezgri 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 procesa `top -b -n 1 | grep -A 5 'PID USER' | tail -5`"
    fi

Jednostavnost sintakse pruža jako mnogo opcija korištenja (i napisati/dopisati može svatko tko barem malo poznaje programski jezik).

Jedina caka — ako se server nalazi u Rusiji (i nemate IPv6 na serveru), trebate koristiti proxy. Za to je potrebno na početku skripte navesti liniju za povezivanje na proxy:

export https_proxy=http://korisnik:lozinka@IP.adresa:port

To nije kraj

Hodaš mirno po planinama s ruksakom na leđima, odmaraš se od civilizacije, i odjednom, telefon, slučajno hvatajući signal, šalje obavijest o problemu koji se pojavio na tvom serveru. Što učiniti? Bezmalo mirna atmosfera nestaje. Telefonirati supruzi i diktirati naredbe? Haha!

Moralo se hitno smisliti način kako brzo riješiti nastale probleme bez dobrog interneta. Ovdje me opet spasio messenger (#telegramživ). Naučio sam svog bota da komunicira samo sa mnom, ignorirajući sve ostale. Sada, s obavijesti o problemu, dolazi mi malo više podataka prema kojima mogu razumjeti tko je izvor problema i pokušati ga riješiti udaljeno. Dovoljno je samo poslati poruku botu, podići telefon malo više kako bi poruka otišla i voilà — bot ide obaviti tvoj posao. Tako mogu, primjerice, ubiti neki nepoželjni proces, ponovo pokrenuti demon, blokirati IP i još mnogo toga.

Ovdje sam također prenio buduće potrebne zahtjeve od klijenata, primjerice, hitno resetiranje lozinki korisnicima (jer “Aaaaa, ne možemo ući na server, gubimo milione!”), pronalazak korisnika koji ima pristup u potrebnu mapu, uključivanje i isključivanje stranice i drugo. Naravno, neprestano poboljšavam funkcionalnost bota jer mašta klijenata povremeno donosi neočekivane i nepredviđene zahtjeve. No, glavni su zadovoljni.

Postoji i verzija za VK, ali nekako se nije dogodila.

Sada mirno putujem i istražujem ovaj svijet, ne bojeći se da će nešto tamo pregoreti, a da neću moći saznati ili popraviti to.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster