Cum am scris monitorizarea mea

Am decis să îmi împărtășesc povestea. Poate că o soluție bugetară similară va fi utilă cuiva.

Când eram tânăr și plin de energie, fără să știu ce să fac cu ea, am decis să fac puțin freelancing. Am reușit să îmi construiesc rapid un rating și am găsit câțiva clienți permanenți care m-au rugat să le mențin serverele constant.

Primul lucru la care m-am gândit a fost necesitatea monitorizării. Am decis să procedez ca oamenii deștepți, să nu reinventez roata, ci să caut soluții deja existente, cum ar fi Munin sau Zabbix. Dar am descoperit imediat că versiunea web necesită o conexiune bună la internet, mai ales dacă este deschisă pentru prima dată de pe telefon. Dacă ești în mijlocul naturii, departe de oraș, este greu să obții o conexiune stabilă. Prin urmare, am ales varianta de monitorizare din consolă.

Ca monitorizare din consolă, m-a ajutat mult atop și programul pentru citirea logurilor atop - atopsar. Acestea au fost deja menționate pe habr, atop a fost chiar analizat,, dar aproape nimeni nu a vorbit despre atopsar.

Instalare

Instalare foarte simplă, doar trei comenzi.

#Centos

yum install atop

#Debian/Ubuntu

apt-get install atop

Apoi, poți configura monitorizarea după preferințele tale sau poți utiliza setările implicite.

#Debian/Ubuntu/Centos

/etc/default/atop 

Fișierul standard:

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

Adaugă la autostart
#Debian/Ubuntu/Centos

systemctl enable atop 

Pornește atop ca demon
#Debian/Ubuntu/Centos

systemctl start atop  

Pentru cei lenți, am adunat într-o singură comandă
#Centos

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

#Debian/Ubuntu

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

Atopsar

Împreună cu atop se instalează și atopsar, un analizator de loguri binare convenabil, pe care îl generează demonul atop. Desigur, poți citi logurile și cu atop, dar nu este la fel de convenabil dacă trebuie să capturezi un interval mare de timp.

O mică lecție despre funcționarea atopsar.

Când deschizi atopsar fără opțiuni, se deschide logul pentru ziua de astăzi și apare sarcina pe fiecare nucleu în parte, precum și linia idl pentru toate nucleele.

Opțiunile pe care le folosesc:

-A = afișează toate informațiile din log
-s = afișează informațiile despre sarcina pe nucleele procesorului, opțiunea implicită
-m = sarcina pe memoria RAM și swap
-d = activitatea pe disc
-O = top 3 procese cu sarcină pe CPU
-G = top 3 procese cu sarcină pe RAM
-D = top 3 procese cu sarcină pe disc
-N = top 3 procese cu sarcină pe rețea
-r = specifică calea către logul pe care vrei să-l citești, dacă vrei să vezi sarcina din zilele anterioare
-b = ora de la care să înceapă afișarea
-e = timpul la care trebuie să terminăm ieșirea
-M = creează o coloană suplimentară la sfârșit, în care este marcată criticitatea liniei (+ există o sarcină, * — sarcină critică)

Datorită monitorizării, putem înțelege motivul comportamentului incorect al serverului în orice moment.

Notificări

Așadar, monitorizarea sarcinii este activă, dar tot nu oferă posibilitatea de a găsi rapid și a rezolva problemele. Avem nevoie de notificări în caz de probleme.

Eu singur mă ocup de servere, așa că trebuie să fiu notificat acolo unde pot vedea întotdeauna și să reacționez cumva.

La început erau SMS-urile — rapide, fiabile, gratuite. Dar apoi operatorii de telefonie mobilă au închis trimiterea gratuită de SMS-uri prin intermediul porților lor.
Emailul — lent, pot apărea probleme cu livrarea.
Mesageri — trebuie instalate pe telefon, este necesar să creezi boți.

Ca urmare a căutărilor, am ales mesagerul Telegram pentru simplitatea și aplicația convenabilă pe telefon și desktop.

Am creat propriul meu bot cu ajutorul botfather.
Apoi am pus pe server câteva scripturi care monitorizează sarcina serverului (IDL, smartct și altele), prezența erorilor de tip „oom killer”, erori la crearea backup-ului și alte operațiuni care trebuie controlate.

Scripturile sunt destul de simple, scrise în bash, de exemplu, verificarea LA și notificarea în caz de depășire a mediei sarcinilor pe nucleele de 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=Pe serverul $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 procese `top -b -n 1 | grep -A 5 'PID USER' | tail -5`"
    fi

Simplitatea sintaxei oferă foarte multe opțiuni de utilizare (și oricine, care stăpânește puțin limbajul de programare, poate scrie/aduge).

Singurul aspect este — dacă serverul este în Rusia (și nu aveți IPv6 pe server), atunci trebuie să folosiți un proxy. Pentru aceasta, la începutul scriptului trebuie să specificați linia de conexiune la proxy:

export https_proxy=http://login:parola@IP.adres:port

Aceasta nu e sfârșitul

Mergi liniștit pe munți cu rucsacul în spate, te odihnești de civilizație și, dintr-o dată, telefonul, printr-o conexiune accidentală, îți trimite o notificare despre o problemă apărută pe serverul tău. Ce trebuie să faci? Starea de liniște s-a dus ca un vânt. Să sun soția și să-i dictez comenzi? Ha-ha!

A trebuit să găsesc rapid o soluție pentru a rezolva problemele apărute repede și fără o conexiune bună la internet. Aici m-a salvat din nou mesageria (#telegramlive). Am învățat botul meu să comunice doar cu mine, ignorând pe toți ceilalți. Acum, împreună cu notificarea despre problemă, primesc puțin mai multe informații prin care îmi dau seama de sursa problemei și pot încerca să o rezolv de la distanță. E suficient să scriu un mesaj botului, să ridic telefonul mai sus pentru a trimite mesajul și voila — botul începe să facă treaba ta. Astfel, pot, de exemplu, să opresc un proces nedorit, să repornesc un daemon, să blochez un IP și altele.

Am mutat aici și solicitările viitoare necesare de la clienți, cum ar fi resetarea urgentă a parolelor utilizatorilor (pentru că „Aaa, nu putem accesa serverul, pierdem milioane!”), găsirea unui utilizator cu acces într-un folder necesar, activarea și dezactivarea site-ului și altele. Desigur, îmi îmbunătățesc constant funcționalitatea botului, deoarece imaginația clienților adesea generează cereri neașteptate și nereglementate de mine. Dar cei principali sunt mulțumiți.

Există și o versiune pentru VK, dar nu a prins bine.

Acum călătoresc liniștit și explorez această lume, fără a-mi face griji că ceva s-ar putea strica și că nu voi putea afla sau remedia problema.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster