Odločil sem se deliti svojo zgodbo. Morda bo celo nekdo potreboval takšno proračunsko rešitev za znano težavo.
Ko sem bil mlad in vroč in nisem vedel, kaj bi s svojo energijo, sem se odločil, da bom malo svoboden. Uspelo mi je hitro pridobiti oceno in našel sem nekaj stalnih strank, ki so me prosile za stalno podporo njihovim strežnikom.
Prva stvar, na katero sem pomislil, je bila potreba po spremljanju. Odločil sem se, da bom ravnal kot pametni ljudje, da ne bom znova odkrival kolesa, ampak da bom pogledal že pripravljene možnosti, kot sta Munin ali Zabbix. Sem pa takoj ugotovil, da spletna različica zahteva dobro internetno povezavo, še posebej, če jo prvič odprete iz telefona. Če se sprostite v naravi daleč od mesta, je težko dobiti stabilno povezavo. Zato je bila izbrana možnost spremljanja konzole.
Kot spremljanje konzole sta mi dobro pomagala Atop in program za branje atop logov - atopsar. Na habru so že bili omenjeni, , o atopsarju pa skoraj nič.
Namestitev
Zelo preprosta namestitev, samo trije ukazi.
#Centos
yum install atop#Debian/Ubuntu
apt-get install atopNato lahko prilagodite operacijo spremljanja zase ali uporabite privzete nastavitve.
#Debian/Ubuntu/Centos
/etc/default/atop Standardna datoteka:
#cat /etc/default/atop
INTERVAL=60 #Время, через которое создаётся снимок нагрузки в секундах, по умолчанию каждые 10 минут
LOGPATH="/var/log/atop" #Путь до папки хранения логов
OUTFILE="$LOGPATH/daily.log" #Название файла логов за сегодняшний день
Dodaj v samodejni zagon
#Debian/Ubuntu/Centos
systemctl enable atop Teči na vrhu kot demon
#Debian/Ubuntu/Centos
systemctl start atop Za lene sem se zbral v eno ekipo
#Centos
yum install atop && systemctl enable atop && systemctl start atop#Debian/Ubuntu
apt-get install atop && systemctl enable atop && systemctl start atopAtopsar
Skupaj z atopom je nameščen tudi atopsar, ki je priročen konzolni analizator binarnih dnevnikov, ki jih vodi demon atop. Seveda lahko dnevnike berete s samim vrhom, vendar to ni tako priročno, če morate zajeti veliko časovno obdobje.
Majhen izobraževalni program o delu atopsarja.
Ko zaženeš atopsar brez ključev, se odpre dnevnik za danes in izpiše obremenitev vsakega jedra posebej in idl vrstica za vsa jedra.
Tipke, ki jih uporabljam:
-A = prikaz vseh informacij iz dnevnika
-od = prikaz podatkov o obremenitvi procesorskih jeder, privzeti ključ
-m = naloži RAM in zamenjaj
-d = aktivnost diska
-O = 3 najvišji procesi obremenitve procesorja
-G = prvi 3 procesi nalagajo RAM
-D = prvi 3 procesi nalaganja diska
-N = trije najpogostejši procesi obremenitve omrežja
-r = navedite pot do dnevnika, ki ga želite prebrati, če želite videti obremenitev v zadnjih dneh
-b = čas za začetek dviga
-e = čas, ko naj bo izhod dokončan
-M = ustvari dodaten stolpec na koncu, ki označuje kritičnost vrstice (+ je obremenitev, * je kritična obremenitev)
Zahvaljujoč spremljanju bomo lahko kadarkoli razumeli razlog za nepravilno delovanje strežnika.
Obvestila
Torej obstaja spremljanje obremenitve, vendar še vedno ne omogoča hitrega iskanja in reševanja težav. Potrebujemo obvestila o težavi.
Samo jaz spremljam strežnike, zato moram obvestiti na mesto, kjer ga lahko vedno vidim in vsaj nekako reagiram na to.
Na začetku so bili SMS-i - hitri, zanesljivi, brezplačni. Potem pa so mobilni operaterji prenehali pošiljati brezplačna sporočila SMS prek svojih prehodov.
Pošta traja dolgo, lahko pride do težav z dostavo.
Messengerji - morate jih namestiti v telefon, morate ustvariti robote.
Kot rezultat iskanja je bil Messenger Telegram izbran zaradi njegove preprostosti in priročne uporabe na telefonu in namizju.
Ustvaril svojega bota z uporabo .
Nato sem na strežnik postavil več skriptov, ki spremljajo obremenitev strežnika (IDL, smartct itd.), prisotnost napak, kot je "oom killer", napake pri ustvarjanju varnostne kopije in druge operacije, ki jih je treba spremljati.
Skripti so precej preprosti, napisani v bashu, na primer preverjajo LA in obveščajo o tem, da povprečna obremenitev presega število jeder na strežnika.
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`"
fiEnostavnost sintakse daje veliko možnosti za uporabo (napiše/doda jo lahko vsakdo, ki vsaj malo pozna programski jezik).
Edino opozorilo je, da če se strežnik nahaja v Rusiji (in na strežniku nimate IPv6), potem morate uporabiti proxy. Če želite to narediti, morate na začetku skripta napisati povezovalni niz v proxy:
export https_proxy=http://логин:пароль@IP.адрес:портTo še ni konec
Z nahrbtnikom na hrbtu se mirno sprehajate po gorah, si odpočijete od civilizacije, nato pa vaš telefon, ki pomotoma prevzame povezavo, pošlje obvestilo o težavi, ki se je pojavila na vašem strežniku. Kaj storiti? Vedro razpoloženje je odpihnil veter. Klicati svojo ženo in narekovati ukaze? ha ha!
Nujno je bilo treba najti način za rešitev težav, ki so nastale na hitro in brez dobre internetne povezave. Tukaj me je messenger spet rešil (#telegramlive). Svojega bota sem naučil, da komunicira samo z menoj, ignorira vse ostale. Zdaj skupaj z obvestilom o problemu dobim malo več podatkov, iz katerih razberem, kdo je izvor problema in ga lahko poskusim rešiti na daljavo. Samo napisati morate sporočilo botu, dvigniti telefon višje, da sporočilo izgine, in voila – bot gre opraviti vaše delo. Tako lahko na primer ubijem kak nezaželen proces, znova zaženem demona, blokiram IP itd.
Sem sem prenesel tudi prihodnje nujne zahteve odjemalcev, na primer nujno ponastavitev gesel za uporabnike (ker “Ahhh, ne moremo priti do strežnika, izgubljamo milijone!”), iskanje uporabnika, ki ima dostop do želeno mapo, vklop in izklop strani in drugo. Seveda nenehno izboljšujem funkcionalnost bota, saj domišljija strank včasih vrže nepričakovane zahteve, ki jih nisem predvidel. Toda glavni so zadovoljni.
Obstaja tudi različica za VK, vendar se nekako ni prijela.
Sedaj mirno potujem in raziskujem ta svet, brez strahu, da se bo tam kaj zalomilo in tega ne bom mogel ugotoviti ali popraviti.
Vir: www.habr.com
