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, ali gotovo ništa nisu rekli o atopsaru.
Instalacija
Vrlo jednostavna instalacija, samo tri komande.
#Centos
yum install atop#Debian/Ubuntu
apt-get install atopNakon 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 atopAtopsar
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 .
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`"
fiJednostavnost 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:portTo 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
