
Ja sam sistemski administrator FirstVDS, i ovo je tekst prvog uvodnog predavanja iz mog kratkog kursa pomoći novim kolegama. Stručnjaci koji su nedavno počeli raditi u sistemskom administriranju suočavaju se s nizom istih problema. Kako bih ponudio rešenja, odlučio sam napisati ovaj ciklus predavanja. Neke stvari su specifične za tehničku podršku hostinga, ali u suštini, mogu biti korisne ako ne za sve, onda za mnoge. Zato sam adaptirao tekst predavanja kako bih ga podelio ovde.
Nije važno kako se zove vaša pozicija — važno je da se zapravo bavite administriranjem. Zato ćemo početi s onim što bi sistemski administrator trebao raditi. Njegova osnovna zadaća je uvođenje reda, održavanje reda i priprema za buduće poraste reda. Bez sistemskog administratora na serveru nastaje nered. Logovi se ne pišu ili se u njima piše nebitno, resursi se raspoređuju neoptimalno, disk se puni raznim otpadom i sistem počinje polako propadati zbog te količine haosa. Smirite se! Sistemskim administratorima poput Vas kreće rešavanje problema i uklanjanje nereda!
Stubovi sistemskog administriranja
Međutim, pre nego što krenemo u rešavanje problema, valja se upoznati s četiri osnovna stuba administriranja:
- Dokumentacijom
- Šablonizacijom
- Optimizacijom
- Automatizacijom
To su temelji. Ako ne gradite svoj radni proces na tim principima, on će biti neučinkovit, neproduktivni i uopšte malo će ličiti na pravo administriranje. Hajde da se pozabavimo svakim pojedinačno.
Dokumentacija
Dokumentacija podrazumeva ne samo čitanje dokumentacije (iako bez toga nema), već i vođenje.
Kako voditi dokumentaciju:
- Suočili ste se s novim problemom koji nikada ranije niste videli? Zabeležite osnovne simptome, metode dijagnostike i principe rešavanja.
- Smislili ste novo elegantno rešenje za tipičan problem? Zabeležite to kako ne biste morali ponovo izmišljati kroz mesec dana.
- Neko vam je pomogao da razjasnite pitanje u kojem niste ništa razumeli? Zabeležite osnovne teze i koncepte, nacrtajte sebi šemu.
Osnovna ideja: ne treba potpuno vjerovati vlastitoj memoriji prilikom usvajanja i primjene novog.
U kojem formatu ćete to raditi ovisi samo o vama: to može biti sustav bilješki, osobni blog, tekstualna datoteka, fizički blok. Važno je da vaši zapisi odgovaraju sljedećim zahtjevima:
- Ne budu predugi. Izdvajajte glavne ideje, metode i sredstva. Ako razumijevanje problema zahtijeva da zaronite u nisko razinu mehanike rada memorije u Linuxu, nemojte prepisivati članak iz kojeg ste to saznali — jednostavno mu dodajte vezu.
- Zapisi moraju biti jasni za vas. Ako redak
race cond.lockupne omogućuje vam trenutno razumijevanje onoga što ste tim retkom opisali — objasnite. U dobroj dokumentaciji nije potrebno kopati dva puta. - Pretraživanje je vrlo dobra opcija. Ako vodite bilješke u blogu, dodajte oznake; ako u fizičkom blok-noteru — zalijepite male post-it poruke s opisima. Nema posebno smisla u dokumentaciji ako na pronalaženje odgovora u njoj trošite jednako vremena koliko biste potrošili rješavajući pitanje od nule.

Ovako može izgledati dokumentacija: od jednostavnih zapisa u blok-noteru (slika iznad), do potpune višekorisničke baze znanja s oznakama, pretraživanjem i svim mogućim pogodnostima (ispod).

Neće vam biti potrebno tražiti iste odgovore dvaput: dokumentiranje će biti izvrsna pomoć u učenju novih tema (bilješke, zar ne!), razviti će vašu sposobnost dijagnosticiranja složenih problema na prvi pogled, dodati organiziranost vašim aktivnostima. Ako će dokumentacija biti dostupna vašim kolegama, omogućit će im da shvate što i kako ste to napravili kada vas ne bude.
Šablonizacija
Šablonizacija je stvaranje i korištenje obrazaca. Za rješavanje većine tipičnih pitanja vrijedi stvoriti određeni obrazac postupaka. Za dijagnosticiranje većine problema treba koristiti standardizirani slijed radnji. Kada nešto popravite/instalirate/optiimizirate, funkcionalnost tog nečega trebate provjeriti prema standardiziranim kontrolnim listama.
Templatizacija je najbolji način organizacije radnog procesa. Korištenjem standardiziranih procedura za rješavanje najčešćih problema, dobivate mnogo korisnih stvari. Na primjer, korištenje kontrolnih lista omogućit će vam dijagnosticiranje svih važnih funkcija za rad i odbacivanje dijagnostike manje važnih funkcionalnosti. A standardizirane procedure smanjit će nepotrebne lutanje i smanjiti vjerojatnost greške.
Prva važna točka je da se procedure i kontrolne liste također trebaju dokumentirati. Ako se oslanjate samo na pamćenje, možete propustiti neku stvarno važnu provjeru ili operaciju i sve se raspasti. Druga važna stvar — sve standardne prakse moguće je i nužno modificirati ako situacija to zahtijeva. Ne postoje savršeni i potpuno univerzalni obrasci. Ako postoji problem, a standardna provjera ga nije otkrila — to ne znači da problema nema. Međutim, prije nego što se upustite u provjeru nekih malo vjerojatnih hipotetskih problema, uvijek prvo vrijedi napraviti brzu standardnu provjeru.
Optimizacija
Optimizacija govori sama za sebe. Radni proces treba maksimalno optimizirati u smislu troškova vremena i rada. Tu ima bezbroj opcija: naučite prečace na tipkovnici, skraćenice, regularne izraze, dostupne alate. Tražite načine praktičnijeg korištenja tih alata. Ako stotinu puta dnevno pozivate komandu, povežite je s tipkovničkom skraćenicom. Ako se često trebate povezivati na iste poslužitelje, zapišite alias u jedno slovo koji će vas dovesti tamo:

Pregledajte razne opcije dostupnih alata — možda postoji praktičniji terminalni klijent, DE, upravitelj međuspremnika, preglednik, klijent za e-poštu, operativni sustav. Saznajte koje alate koriste vaši kolege i poznanici — možda ih ne biraju bez razloga. Nakon što odaberete alate, naučite ih koristit: savladajte tipke, skraćenice, savjete i trikove.
Optimalno koristite standardne alate — coreutils, vim, regularne izraze, bash. Za posljednja tri postoji ogroman broj izvrsnih vodiča i dokumentacije. Uz njihovu pomoć, možete brzo preći iz stanja "osjećam se kao majmun koji lomi orahe laptopom" u "ja sam majmun koji koristi laptop za naručivanje ljuštača oraha".
Automatizacija
Automatizacija prenijet će teške operacije iz naših umornih ruku u neumorne ruke automatizacije. Ako se neka standardna procedura izvodi kroz pet istih komandi, zašto ne zamotati sve te komande u jedan datoteku i ne pozvati jednu komandu koja preuzima i izvršava tu datoteku?
U suštini, automatizacija se sastoji od 80% pisanja i optimizacije vlastitih alata (i još 20% od pokušaja da ih natjerate da rade kako treba). To može biti jednostavan napredni jednolinijski zapis ili ogromni, svemoćni alat s web sučeljem i API-jem. Glavni kriterij ovdje je da izrada alata ne bi trebala oduzimati više vremena i truda nego što će vam taj alat uštedjeti. Ako pišete skriptu pet sati koja vam nikada više neće zatrebati za zadatak koji bi vam bez skripte oduzeo sat ili dva, to je vrlo loša optimizacija radnog procesa. Možete potrošiti pet sati na izradu alata samo ako količina, tip zadataka i vrijeme to dopuštaju, što se rijetko događa.
Automatizacija ne mora nužno podrazumijevati pisanje cjelovitih skripti. Na primjer, da biste stvorili hrpu sličnih objekata iz popisa, dovoljan je spretni jednolinijski zapis koji automatski radi ono što biste radili ručno, prebacujući se između prozora uz hrpe kopiranja i lijepljenja.
U suštini, ako izgradite proces administracije na ova četiri stuba, možete prilično brzo povećati svoju učinkovitost, produktivnost i kvalifikaciju. Međutim, ovom popisu treba dodati još jednu stavku, bez koje je rad u IT-u praktički nemoguć — samostalno učenje.
Samostalno učenje sistemskog administratora
Kako biste barem malo bili kompetentni u ovom području, morate se stalno obrazovati i saznavati novo. Ako nemate ni najmanje želje suočiti se s nepoznatim i razumjeti ga, vrlo brzo ćete »pasti«. U IT-u se neprekidno pojavljuju razna nova rješenja, tehnologije i metode, a ako ih ne proučavate barem površno — na putu ste do gubitka. Mnoge oblasti informacijske tehnologije temelje se na vrlo složenoj i opsežnoj osnovi. Na primjer, rad mreže. Mreže i internet su posvuda, susrećete ih svaki dan, no kada zaronite u tehnologije koje ih podržavaju, otkrit ćete ogromnu i vrlo složenu disciplinu, čije je proučavanje daleko od šetnje parkom.
Nisam uključio ovu stavku u popis, jer je ključna za IT općenito, a ne samo za sustavno administriranje. Naravno, nećete moći naučiti apsolutno sve i odmah — jednostavno nemate dovoljno vremena. Stoga, prilikom samostalnog obrazovanja, treba imati na umu potrebne razine apstrakcije.
Nije potrebno odmah učiti kako funkcionira unutarnje upravljanje memorijom svake pojedine uslužne aplikacije i kako se ono povezuje s upravljanjem memorijom Linuxa, ali je dobro znati što operativna memorija predstavlja shematski i zašto je potrebna. Nije potrebno znati kako se strukturalno razlikuju zaglavlja kod TCP-a i UDP-a, ali bilo bi dobro razumjeti osnovne razlike u radu protokola. Nije potrebno proučavati što predstavljaju gubici signala u optici, ali bilo bi dobro znati zašto stvarni gubici uvijek nasljeđuju po čvorovima. Nema ništa loše u tome da znate kako određeni elementi rade na određenoj razini apstrakcije i nije nužno analizirati apsolutno sve razine kada apstrakcije uopće nema (jednostavno ćete se slomiti).
Međutim, u svojoj oblasti raspravljati na razini apstrakcije „pa to je takva stvar koja omogućuje prikazivanje sajtova“ — nije baš dobro. Sljedeće lekcije bit će posvećene pregledu osnovnih područja s kojima se sistemski administrator suočava na nižim razinama apstrakcije. Pokušaću ograničiti broj obrađenih znanja na minimalnu razinu apstrakcije.
10 zapovijedi sistemskog administriranja
Dakle, proučili smo četiri osnovna stupa i temelje. Možemo li početi rješavati probleme? Još ne. Prije toga, poželjno je upoznati se s takozvanim „najboljim praksama“ i pravilima dobrog ponašanja. Bez njih postoji mogućnost da ćete donijeti više štete nego koristi. Pa, krenimo:
- Neki moji kolege smatraju da je prvo pravilo „ne škodi“. No, ne slažem se s tim. Kada pokušavate ne naštetiti, ne možete ništa učiniti - previše je radnji koje su potencijalno destruktivne. Smatram da je najvažnije pravilo - „napravi backup“. Čak i ako nanesete štetu, uvijek se možete vratiti, i neće biti tako loše.
Backup treba raditi uvijek kada vrijeme i prostor to dopuštaju. Backupirati treba ono što ćete mijenjati i ono što riskirate izgubiti prilikom potencijalno destruktivne akcije. Backup je poželjno provjeriti na cjelovitost i prisutnost svih potrebnih podataka. Backup ne treba odmah brisati nakon što ste sve provjerili, osim ako nije potrebno osloboditi prostor na disku. Ako prostor zahtijeva - napravite backup na vaš osobni server i obrišite ga nakon tjedan dana.
- Drugo po važnosti pravilo (koje i sam često kršim) - „ne skrivaj“. Ako ste napravili backup, navedite gdje, kako bi vašim kolegama ne bi bilo potrebno da ga traže. Ako ste napravili neka nejasna ili složena djelovanja, zabilježite to: otići ćete kući, a problem se može ponoviti ili se može pojaviti kod nekoga drugoga, a vaše rješenje će naći po ključnim riječima. Čak i ako radite nešto što dobro znate, to možda ne znaju vaši kolege.
- Treće pravilo ne treba objašnjavati: „nikada ne radite to, čije posljedice ne znate, ne možete zamisliti ili ne razumijete“. Ne kopirajte naredbe s interneta ako ne znate što rade, pozovite man i prvo ih analizirajte. Ne primjenjujte gotova rješenja ako ne možete razumjeti što rade. Svedite na apsolutni minimum izvođenje obfuskanog koda. Ako nemate vremena za razjašnjavanje - radite nešto pogrešno i trebali biste se upoznati s sljedećom točkom.
- „Testiraj“. Nove skripte, alate, jednosatne komande i timove treba ispitivati u kontroliranom okruženju, a ne na klijentskom računalu, ako postoji barem minimalni potencijal za destruktivne radnje. Čak i ako ste sve napravili sigurnosne kopije (a jeste), vrijeme zastoja nije najbolja stvar. Postavite za tu svrhu poseban server/virtualku/chroot i testirajte tamo. Ništa nije pokvareno? Onda možete pokrenuti na 'produkciji'.

- „Kontroliraj“. Svedite na minimum sve operacije koje ne kontrolirate. Jedna loša ovisnost paketa može povući pola sustava, a postavljeni signal -y za yum remove vam daje priliku da vježbate svoje vještine obnoviti sustav iz nule. Ako radnja nema nekontrolirane alternative — sljedeća točka i gotova sigurnosna kopija.
- „Provjeri“. Provjerite posljedice svojih akcija i treba li se vratiti na sigurnosnu kopiju. Provjerite je li problem stvarno riješen. Provjerite ponavlja li se greška i pod kojim uvjetima. Provjerite što možete razbiti svojim djelovanjima. Vjerovanje u našem poslu je suvišno, ali provjeravanje — nikada.
- „Komuniciraj“. Ako ne možete riješiti problem, pitajte kolege jesu li se susreli s tim. Želite primijeniti sporno rješenje — saznajte mišljenje kolega. Možda će predložiti bolje rješenje. Nema li sigurnosti u svojim radnjama — raspravite ih s kolegama. Čak i ako je to vaša stručna oblast, svjež pogled na situaciju može mnogo razjasniti. Ne stidite se vlastitog neznanja. Bolje je postaviti glupo pitanje, izgledati kao budala i dobiti odgovor, nego ne postaviti pitanje, ne dobiti odgovor i ostati budala.
- „Ne odbijaj pomoć bez osnova“. Ova točka je obrnuta strana prethodne. Ako vam je postavljeno glupo pitanje — razjasnite i objasnite. Ako traže nemoguće — objasnite zašto je to nemoguće i ponudite alternative. Ako nemate vremena (stvarno nemate vremena, a ne želje) — recite da imate hitno pitanje ili veliki obujam posla, ali ćete to riješiti kasnije. Ako kolege nemaju hitne zadatke, predložite da se obrate njima i delegirajte pitanje.
- „Daj povratne informacije“. Netko od kolega počeo je koristiti novu metodu ili novi skript, a vi se suočavate s negativnim posljedicama te odluke? Obavijestite o tome. Možda se problem može riješiti u tri retka koda ili pet minuta dorade metode. Pronašli ste bug u softveru? Javite o bugu. Ako se može reproducirati ili ga nije potrebno reproducirati, vjerojatno će biti ispravljen. Iznesite svoje želje, prijedloge i konstruktivnu kritiku, postavite pitanja na raspravu ako mislite da su relevantna.
- «Zatraži povratne informacije». Svi smo mi neidealni, poput naših odluka, a najbolji način da provjerite ispravnost svoje odluke jest iznijeti je na raspravu. Optimizirali ste nešto za klijenta — zamolite da prate rad, možda «uskog grla» sustava nije tamo gdje ste tražili. Napisali ste pomoćni skript — pokažite ga kolegama, možda će pronaći način za njegovo poboljšanje.
Ako stalno primjenjujete ove prakse u radu, većina problema prestaje biti problemima: ne samo da ćete smanjiti broj svojih vlastitih grešaka i promašaja na minimum, već ćete imati i mogućnosti ispraviti greške (u obliku sigurnosnih kopija i kolega koji će vam savjetovati da napravite sigurnosnu kopiju). A dalje — samo tehnički detalji, u kojima, kao što je poznato, i leži đavao.
Glavni alati s kojima ćete raditi više od 50% vremena — grep i vim. Što može biti jednostavnije? Pretraživanje po tekstu i uređivanje teksta. Međutim, i grep i vim su moćni višefunkcionalni alati koji vam omogućuju učinkovito pretraživanje i uređivanje teksta. Dok neki Windows notepad omogućuje jednostavno pisanje/brisanje retka, u vim-u možete raditi gotovo sve s tekstom. Ne vjerujete — pozovite iz terminala naredbu vimtutor i počnite učiti. Što se tiče grepa — njegova glavna snaga leži u regularnim izrazima. Da, sam alat omogućuje prilično fleksibilno postavljanje uvjeta pretraživanja i prikaza podataka, ali bez RegExp to nema puno smisla. I regularne izraze treba znati! Bar na osnovnoj razini. Za početak bih vam savjetovao da pogledate ovo , u njemu se razrađuju osnove regularnih izraza i njihova primjena u kombinaciji s grep. Ah da, kada ih spojite s vim, dobivate ULTIMATIVNU MOĆ da radite s tekstom stvari za koje vam trebaju oznake 18+.
Od preostalih 50%, 40% otpada na paket alata coreutils. Za coreutils, popis možete vidjeti u , a priručnik za cijeli popis — na stranici . Ono što nije pokriveno ovim setom, nalazi se u alatima . Nije potrebno svladati sve s tipkama napamet, ali je korisno otprilike znati što osnovni alati mogu — neće vam trebati izmišljati kotač od dasaka. Jednom sam trebao zamijeniti prijelome redaka s razmacima u izlazu neke od utiliteta, i bolna glava je došla do konstrukcije poput sed ':a;N;$!ba;s\n/ /g', kolega koji je prišao me odgurnuo metlom od konzole, a zatim je riješio zadatak, napisavši tr 'n' ' '.

Preporučio bih vam da zapamtite što približno svaka pojedinačna alatka i tipke za najčešće korištene komande rade, za sve ostalo postoji man. Ne ustručavajte se pozvati man ako s nečim sumnjate. I svakako pročitajte man o samom man — on sadrži važne informacije o tome što ćete pronaći.
Poznajući ove alate, moći ćete učinkovito riješiti znatan broj zadataka s kojima se susrećete u praksi. U sljedećim predavanjima ćemo razmotriti kada primijeniti ove alate i strukture osnovnih usluga i aplikacija kojima se primjenjuju.
S vama je bio sistemski administrator FirstVDS Kirill Cvjetkov.
Izvor: habr.com

