Am decis să-mi împărtășesc povestea. Poate chiar cineva va avea nevoie de o astfel de soluție bugetară pentru o problemă binecunoscută.
Când eram tânăr și fierbinte și nu știam ce să fac cu energia mea, m-am hotărât să fac un pic de liber profesionist. Am reușit să obțin rapid un rating și am găsit câțiva clienți obișnuiți care mi-au cerut să le susțin serverele în mod continuu.
Primul lucru la care m-am gândit a fost nevoia de monitorizare. Am decis să fac ca oamenii deștepți, să nu reinventez roata, ci să mă uit la opțiuni gata făcute, precum Munin sau Zabbix. Dar am descoperit imediat că versiunea Web necesită o conexiune bună la Internet, mai ales dacă o deschideți pentru prima dată de pe telefon. Dacă vă relaxați în natură departe de oraș, este dificil să obțineți o conexiune stabilă. Prin urmare, a fost aleasă opțiunea de monitorizare consolă.
Atop și programul pentru citirea jurnalelor de deasupra - atopsar - m-a ajutat bine la monitorizarea consolei. Au fost deja menționate pe habr, , dar nu s-a spus aproape nimic despre atopsar.
Instalare
Instalare foarte simplă, doar trei comenzi.
#Centos
yum install atop#Debian/Ubuntu
apt-get install atopApoi, puteți personaliza operația de monitorizare pentru dvs. sau puteți utiliza setările implicite.
#Debian/Ubuntu/Centos
/etc/default/atop Fișier standard:
#cat /etc/default/atop
INTERVAL=60 #Время, через которое создаётся снимок нагрузки в секундах, по умолчанию каждые 10 минут
LOGPATH="/var/log/atop" #Путь до папки хранения логов
OUTFILE="$LOGPATH/daily.log" #Название файла логов за сегодняшний день
Adăugați la rulare automată
#Debian/Ubuntu/Centos
systemctl enable atop Alergă deasupra ca un demon
#Debian/Ubuntu/Centos
systemctl start atop Pentru leneși, m-am adunat într-o singură echipă
#Centos
yum install atop && systemctl enable atop && systemctl start atop#Debian/Ubuntu
apt-get install atop && systemctl enable atop && systemctl start atopAtopsar
Împreună cu atop, este instalat și atopsar; este un analizor de consolă convenabil al jurnalelor binare menținute de demonul atop. Desigur, puteți citi jurnalele folosind deasupra, dar acest lucru nu este atât de convenabil dacă trebuie să capturați o perioadă mare de timp.
Un mic program educațional despre munca lui atopsar.
Când porniți atopsar fără chei, se deschide jurnalul pentru astăzi și se afișează sarcina de pe fiecare nucleu separat și linia idl pentru toate nucleele.
Cheile pe care le folosesc:
-A = afișați toate informațiile din jurnal
-Cu = afișați informații despre încărcarea nucleelor procesorului, cheie implicită
-m = încărcați pe RAM și schimbați
-d = activitatea discului
-O = primele 3 procese de încărcare CPU
-G = primele 3 procese se încarcă pe RAM
-D = primele 3 procese de încărcare a discului
-N = primele 3 procese de încărcare a rețelei
-r = indicați calea către jurnalul pe care doriți să-l citiți dacă trebuie să vedeți încărcarea din ultimele zile
-b = timpul de la care începe retragerea
-e = ora la care ieșirea ar trebui să fie finalizată
-M = creează o coloană suplimentară la sfârșit, care marchează criticitatea liniei (+ este sarcina, * este sarcina critică)
Datorită monitorizării, vom putea înțelege în orice moment motivul comportamentului incorect al serverului.
Notificări
Deci, există monitorizare a sarcinii, dar încă nu face posibilă găsirea și rezolvarea rapidă a problemelor. Avem nevoie de notificări despre problemă.
Sunt singurul care monitorizează serverele, așa că trebuie să notific într-un loc unde să-l văd mereu și măcar să reacționez la el.
La început au existat SMS-uri - rapid, de încredere, gratuit. Dar apoi operatorii de telefonie mobilă au încetat să trimită mesaje SMS gratuite prin gateway-urile lor.
Poșta durează mult timp, pot apărea probleme cu livrarea.
Mesageri - trebuie să le instalați pe telefon, trebuie să creați boți.
În urma căutării, messengerul Telegram a fost ales pentru simplitatea și aplicarea sa convenabilă pe telefon și desktop.
Ți-ai creat botul folosind .
Apoi am pus pe server mai multe scripturi care monitorizează încărcarea pe server (IDL, smartct etc.), prezența unor erori precum „oom killer”, erori la crearea unui backup și alte operațiuni care trebuie monitorizate.
Scripturile sunt destul de simple, scrise în bash, de exemplu, verifică LA și notifică despre depășirea numărului de nuclee de încărcare (Load Average) pe... Server.
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=На сервере $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=Топ 5 процессов `top -b -n 1 | grep -A 5 'PID USER' | tail -5`"
fiSimplitatea sintaxei oferă o mulțime de opțiuni de utilizare (și poate fi scris/adăugat de oricine are măcar puține cunoștințe despre un limbaj de programare).
Singura avertizare este că, dacă serverul este situat în Rusia (și nu aveți IPv6 pe server), atunci trebuie să utilizați un proxy. Pentru a face acest lucru, la începutul scriptului trebuie să scrieți șirul de conexiune la proxy:
export https_proxy=http://логин:пароль@IP.адрес:портAcesta nu este sfarsitul
Mergi calm prin munți cu un rucsac în spate, luând o pauză de la civilizație, iar apoi telefonul tău, ridicând din greșeală o conexiune, trimite o notificare despre o problemă care a apărut pe serverul tău. Ce să fac? Starea de spirit senină a fost înlăturată de vânt. Sună-ți soția și dictează comenzi? Ha ha!
Era urgent să găsim o modalitate de a rezolva problemele care au apărut rapid și fără o conexiune bună la internet. Aici messengerul m-a salvat din nou (#telegramlive). Mi-am învățat botul să comunice doar cu mine, ignorând pe toți ceilalți. Acum, odată cu notificarea despre problemă, primesc puțin mai multe date, din care înțeleg cine este sursa problemei și pot încerca să o rezolv de la distanță. Trebuie doar să-i scrii un mesaj botului, să-ți arunci telefonul mai sus, astfel încât mesajul să dispară și voila - botul merge să-ți facă treaba. În acest fel, pot, de exemplu, să opresc un proces nedorit, să repornesc demonul, să blochez un IP etc.
Aici am transferat și cereri viitoare necesare de la clienți, de exemplu, resetarea urgentă a parolelor pentru utilizatori (pentru că „Ahhh, nu putem ajunge la server, pierdem milioane!”), căutarea unui utilizator care are acces la folderul dorit, pornirea și oprirea site-ului și altele. Desigur, îmbunătățesc în mod constant funcționalitatea botului, deoarece imaginația clienților ridică uneori solicitări neașteptate care nu au fost prevăzute de mine. Dar cele principale sunt mulțumite.
Există și o versiune pentru VK, dar cumva nu a prins.
Acum călătoresc cu calm și explorez această lume, fără teamă că ceva se va sparge acolo și nu voi putea să o aflu sau să o repar.
Sursa: www.habr.com
