Per il neofita sistemista: come fare ordine dal caos

Per il neofita sistemista: come fare ordine dal caos

Sono un amministratore di sistema di FirstVDS e questo è il testo della prima lezione introduttiva del mio breve corso per assistere i colleghi principianti. I professionisti che hanno recentemente iniziato a lavorare nella gestione dei sistemi si trovano ad affrontare una serie di problemi comuni. Per offrire delle soluzioni, ho deciso di scrivere questo ciclo di lezioni. Alcuni aspetti sono specifici per il supporto tecnico dell'hosting, ma in generale possono risultare utili non solo per tutti, ma per molti. Per questo motivo, ho adattato il testo della lezione da condividere qui.

Non importa come si chiama il vostro ruolo — ciò che conta è che in pratica vi occupate di amministrazione. Pertanto, iniziamo con quali sono i compiti di un amministratore di sistema. Il suo compito principale è quello di sistemare, mantenere l'ordine e prepararsi per i futuri aumenti della complessità. Senza un amministratore di sistema, sui server inizia il caos. I log non vengono registrati, o contengono informazioni errate, le risorse non vengono ottimizzate, il disco si riempie di spazzatura e il sistema inizia lentamente a crollare a causa di tutto questo disordine. Tranquilli! Gli amministratori di sistema sono qui per risolvere i problemi e ripulire il disordine!

Pilastri della gestione dei sistemi

Tuttavia, prima di affrontare i problemi, è importante familiarizzare con quattro pilastri fondamentali dell'amministrazione:

  1. Documentazione
  2. Modellazione
  3. Ottimizzazione
  4. Automazione

Questa è la base fondamentale. Se non costruite il vostro flusso di lavoro su questi principi, sarà inefficace, improduttivo e poco simile a una vera amministrazione. Analizziamo ciascuno di essi separatamente.

Documentazione

Documentazione Implicano non solo la lettura della documentazione (anche se senza di essa non si può andare lontano), ma anche la sua gestione.

Come gestire la documentazione:

  • Ti sei trovato di fronte a un nuovo problema che non avevi mai visto prima? Annota i sintomi principali, i metodi di diagnosi e i principi per la risoluzione.
  • Hai trovato una soluzione elegante a un problema comune? Annota tutto, così non dovrai riscoprirla tra un mese.
  • Qualcuno ti ha aiutato a capire una questione in cui eri completamente perso? Annota i punti principali e i concetti, disegna uno schema per te stesso.

L'idea principale: non dovresti affidarti completamente alla tua memoria quando impari e applichi qualcosa di nuovo.

Il formato in cui lo farai dipende solo da te: può essere un sistema di note, un blog personale, un file di testo, un quaderno cartaceo. L'importante è che le tue annotazioni soddisfino i seguenti requisiti:

  1. Non essere eccessivamente lunghe. Sottolinea le idee principali, i metodi e gli strumenti. Se la comprensione del problema richiede di immergersi nella meccanica a basso livello della gestione della memoria in Linux, non riscrivere l'articolo da cui lo hai appreso — forniscine il link.
  2. Le annotazioni devono essere comprensibili per te. Se la riga race cond.lockup non ti consente di capire immediatamente cosa hai descritto con essa — spiega. In una buona documentazione non bisogna passare ore a capire.
  3. La ricerca è una funzionalità molto utile. Se stai tenendo un blog, aggiungi tag; se stai usando un quaderno cartaceo, attacca piccoli post-it con delle descrizioni. Non ha molto senso avere della documentazione se ci metti tanto tempo a cercare una risposta quanto ne impiegheresti per risolvere il problema da zero.

Per il neofita sistemista: come fare ordine dal caos

Ecco come potrebbe apparire la documentazione: da semplici annotazioni in un quaderno (immagine sopra), a una completa base di conoscenze multiuente con tag, ricerca e tutte le comodità possibili (sotto).

Per il neofita sistemista: come fare ordine dal caos

Non solo non dovrai cercare le stesse risposte due volte: la documentazione sarà un ottimo aiuto nell'apprendimento di nuovi argomenti (sappiamo, appunti!), migliorerà il tuo intuito (la capacità di diagnosticare un problema complesso con uno sguardo superficiale), e aggiungerà organizzazione alle tue azioni. Se la documentazione è accessibile ai tuoi colleghi, li aiuterà a capire cosa e come hai combinato quando non sei presente.

La templatura

La templatura è la creazione e l'utilizzo di modelli. Per risolvere la maggior parte delle questioni standard, vale la pena creare un determinato modello di azione. Per diagnosticare la maggior parte dei problemi, dovresti usare una sequenza di azioni standardizzate. Quando ripari/installi/ottimizzi qualcosa, la funzionalità di quel qualcosa dovrebbe essere verificata secondo liste di controllo standardizzate.

La templazione è il miglior modo per organizzare il flusso di lavoro. Utilizzando procedure standard per affrontare i problemi più comuni, otterrete molto di buono. Ad esempio, l'uso delle checklist vi permetterà di diagnosticare tutte le funzioni importanti per il lavoro e di trascurare quelle di minore rilevanza. Inoltre, le procedure standardizzate ridurranno al minimo le indecisioni e abbatteranno la probabilità di errore.

Un primo punto importante è che anche le procedure e le checklist devono essere documentate. Se ci si affida semplicemente alla memoria, si potrebbe saltare qualche controllo o operazione realmente importante, causando disastri. Un secondo punto cruciale è che tutte le pratiche standard possono e devono essere modificate, se la situazione lo richiede. Non esistono template perfetti e completamente universali. Se esiste un problema e il controllo standard non lo ha rivelato, ciò non significa che il problema non esista. Tuttavia, prima di occuparsi di problemi ipotetici poco probabili, è sempre bene effettuare prima un rapido controllo standard.

Ottimizzazione

Ottimizzazione parla da sola. Il flusso di lavoro deve essere ottimizzato il più possibile in termini di tempo e risorse. Le possibilità sono innumerevoli: imparate le scorciatoie da tastiera, le abbreviazioni, le espressioni regolari e gli strumenti disponibili. Cercate modi di utilizzo più pratico di questi strumenti. Se chiamate lo stesso comando 100 volte al giorno, assegnatelo a una scorciatoia da tastiera. Se dovete connettervi regolarmente agli stessi server, registrate un alias in una sola parola che vi collegherà a quel server:

Per il neofita sistemista: come fare ordine dal caos

Esplorate le varie opzioni disponibili di strumenti: potrebbe esserci un client terminale, un DE, un gestore degli appunti, un browser, un client email o un sistema operativo più comodo. Scoprite quali strumenti utilizzano i vostri colleghi e conoscenti: forse hanno fatto delle scelte per un motivo. Una volta scelti gli strumenti, imparate ad utilizzarli: imparate le combinazioni di tasti, le abbreviazioni, e i suggerimenti e trucchi.

Utilizza in modo ottimale gli strumenti standard: coreutils, vim, espressioni regolari, bash. Per gli ultimi tre ci sono numerosi ottimi manuali e documentazione. Con il loro aiuto, puoi passare rapidamente dallo stato di "mi sento come una scimmia che rompe noci con un laptop" a "sono una scimmia che utilizza un laptop per ordinare un rompino per noci."

Automazione

Automazione trasferirà operazioni pesanti dalle nostre mani affaticate alle inarrestabili mani dell'automazione. Se una qualche procedura standard viene eseguita in cinque comandi simili, perché non racchiudere tutti questi comandi in un unico file e invocare un solo comando per scaricare ed eseguire quel file?

L'automazione, infatti, consiste per l'80% nella scrittura e ottimizzazione dei propri strumenti (e per il restante 20% negli sforzi per farli funzionare come dovrebbero). Può trattarsi semplicemente di una riga avanzata o di un'enorme strumento onnipotente con interfaccia web e API. Il criterio principale qui è che la creazione dello strumento non deve richiedere più tempo e sforzi di quanto tempo e sforzi ti risparmi questo strumento. Se trascorri cinque ore a scrivere uno script che non ti servirà mai più, per un compito che, senza lo script, ti richiederebbe un'ora o due, questa è una pessima ottimizzazione del flusso di lavoro. Puoi impegnarti per cinque ore nella creazione di uno strumento solo se il numero, il tipo di compiti e il tempo lo permettono, il che succede raramente.

L'automazione non implica necessariamente la scrittura di script completi. Ad esempio, per creare un sacco di oggetti simili da un elenco, è sufficiente una riga astuta che realizzi automaticamente ciò che faresti manualmente, passando da una finestra all'altra con montagne di copia e incolla.

Infatti, se costruisci il processo di amministrazione su questi quattro pilastri, puoi aumentare rapidamente la tua efficienza, produttività e competenza. Tuttavia, questa lista deve essere completata con un ulteriore punto, senza il quale lavorare nell'IT è praticamente impossibile: l'autoapprendimento.

Autoapprendimento del sistemista

Per essere almeno un po' competenti in questo campo, è necessario continuare ad apprendere e a scoprire cose nuove. Se non hai la minima voglia di affrontare l'ignoto e di capire, ti troverai rapidamente in difficoltà. Nell'IT compaiono continuamente nuove soluzioni, tecnologie e metodi, e se non ne studi almeno superficialmente qualcuno, sei sulla strada della sconfitta. Molti settori delle tecnologie dell'informazione si basano su fondamenta piuttosto complesse e articolate. Ad esempio, il lavoro delle reti. Reti e internet sono ovunque, li incontri ogni giorno, ma se inizi a scavare nelle tecnologie che le supportano, scoprirai una disciplina vasta e molto complessa, il cui studio non è affatto una passeggiata nel parco.

Non ho incluso questo punto nella lista, perché è fondamentale per l'IT in generale, non solo per l'amministrazione di sistema. Naturalmente, non si può apprendere tutto e subito — semplicemente non hai tempo fisicamente a disposizione. Quindi, nell'autoformazione, dovresti tenere a mente i necessari livelli di astrazione.

Non è necessario sapere immediatamente come funziona la gestione interna della memoria di ciascun singolo strumento e come interagisce con la gestione della memoria di Linux, ma è bene sapere che cos'è schematicamente la memoria RAM e a cosa serve. Non hai bisogno di sapere come differiscono strutturalmente le intestazioni di TCP e UDP, ma sarebbe utile comprendere le principali differenze tra i protocolli nel loro funzionamento. Non devi studiare cosa rappresentano le attenuazioni del segnale nella fibra ottica, ma sarebbe utile sapere perché le vere perdite si propagano sempre attraverso i nodi. Non c'è nulla di sbagliato nel conoscere il funzionamento di determinati elementi a un certo livello di astrazione e non è necessario esaminare tutti i livelli quando non c'è affatto astrazione (diventerebbe troppo complicato).

Tuttavia, nella propria area, discutere a un livello di astrazione come "è solo una cosa che consente di mostrare dei siti" non è molto appropriato. Le prossime lezioni saranno dedicate a una panoramica delle principali aree con cui un amministratore di sistema deve confrontarsi a livelli di astrazione più bassi. Cercherò di limitare la quantità di conoscenze esaminate al livello minimo di astrazione.

I 10 comandamenti dell'amministrazione di sistema

Quindi, abbiamo appreso quattro pilastri fondamentali. Possiamo iniziare a risolvere i problemi? Non ancora. Prima di tutto, è consigliabile familiarizzare con quelle che vengono chiamate «best practices» e le regole di buona educazione. Senza di esse, c'è il rischio di causare più danno che beneficio. Iniziamo:

  1. Alcuni dei miei colleghi credono che la prima regola sia «non nuocere». Ma io sono inclinato a non essere d'accordo. Quando cerchi di non nuocere, non puoi nemmeno agire — troppe azioni sono potenzialmente distruttive. La regola più importante, secondo me, è «fai un backup». Anche se fai danno, puoi sempre tornare indietro e la situazione non sarà così grave.

    È necessario fare backup ogni volta che il tempo e lo spazio lo permettono. È importante fare backup di ciò che si intende modificare e di ciò che si rischia di perdere in caso di azioni potenzialmente distruttive. È consigliabile verificare l'integrità e la presenza di tutti i dati necessari nel backup. Non vale la pena eliminare il backup subito dopo aver controllato tutto, a meno che non sia necessario liberare spazio su disco. Se è necessario spazio, fai il backup sul tuo server personale e cancellalo dopo una settimana.

  2. La seconda regola più importante (che io stesso infrango spesso) è «non nascondere». Se hai fatto un backup, scrivi dove, così i tuoi colleghi non dovranno cercarlo. Se hai fatto delle azioni non ovvie o complesse, annotale: andrà a casa e il problema potrebbe ripresentarsi o sorgere per qualcun altro, e la tua soluzione sarà trovata attraverso parole chiave. Anche se stai facendo qualcosa che conosci bene, i tuoi colleghi potrebbero non saperlo.
  3. La terza regola non ha bisogno di spiegazioni: «non fare mai qualcosa di cui non conosci, non hai idea o non comprendi le conseguenze». Non copiare comandi da internet se non sai cosa fanno, consulta man e analizza prima. Non applicare soluzioni preconfezionate se non riesci a capire cosa fanno. Riduci al minimo l'esecuzione di codice offuscato. Se non hai tempo per approfondire, stai facendo qualcosa di sbagliato e dovresti familiarizzare con il punto successivo.
  4. «Testa». I nuovi script, strumenti, comandi e one-liner devono essere testati in un ambiente controllato, non sulla macchina del cliente, se c'è anche solo una minima possibilità di azioni distruttive. Anche se hai fatto un backup (e lo hai fatto), il downtime non è affatto piacevole. Crea un server/virtual machine/chroot separato per questa operazione e testalo lì. Niente si è rotto? Allora puoi eseguire in produzione.

    Per il neofita sistemista: come fare ordine dal caos

  5. «Controlla». Riduci al minimo tutte le operazioni che non controlli. Una dipendenza problematica di un pacchetto può tirare giù metà del sistema, e l'opzione -y per yum remove ti dà la possibilità di esercitarti nel ripristino del sistema da zero. Se l'azione non ha alternative incontrollabili, passa al punto successivo e fai un backup pronto.
  6. «Controlla». Verifica le conseguenze delle tue azioni e se è necessario tornare a un backup. Controlla se il problema è veramente risolto. Controlla se l'errore si riproduce e in quali condizioni. Controlla cosa puoi rompere con le tue azioni. Affidarsi nella nostra professione è superfluo, ma controllare non lo è mai.
  7. «Comunica». Se non riesci a risolvere un problema, chiedi ai colleghi se hanno mai affrontato qualcosa di simile. Vuoi applicare una soluzione controversa? Chiedi il parere dei tuoi colleghi. Potrebbero proporre una soluzione migliore. Non sei sicuro delle tue azioni? Discutile con i colleghi. Anche se è il tuo campo di esperti, un punto di vista fresco sulla situazione può chiarire molte cose. Non avere paura di non sapere. È meglio fare una domanda stupida, sembrare sciocco e ottenere una risposta, piuttosto che non fare quella domanda, non ricevere risposta e rimanere in imbarazzo.
  8. «Non rifiutare aiuto senza motivo». Questo punto è il contraltare del precedente. Se ti viene posta una domanda stupida, chiarisci e spiega. Se ti chiedono l'impossibile, spiega perché non è realizzabile e proponi alternative. Se non hai tempo (realmente non hai tempo, non solo voglia), dì che hai una questione urgente/completi di lavoro, ma ti occuperai del resto in seguito. Se i colleghi non hanno compiti urgenti, suggerisci di rivolgersi a loro e delega la questione.
  9. «Dai feedback». Uno dei colleghi ha iniziato ad applicare una nuova metodologia o uno nuovo script, e ti trovi a dover affrontare le conseguenze negative di questa decisione? Segnalalo. Potrebbe essere che il problema venga risolto con tre righe di codice o cinque minuti di revisione della metodologia. Hai trovato un bug nel software? Segnala il bug. Se è riproducibile o non è necessario riprodurlo, verrà probabilmente sistemato. Esprimi desideri, suggerimenti e critiche costruttive, porta domande in discussione se pensi che siano rilevanti.
  10. «Richiedi feedback». Siamo tutti imperfetti, così come le nostre decisioni, e il modo migliore per verificare la correttezza di una decisione è discuterla. Hai ottimizzato qualcosa per un cliente? Chiedi di monitorare il funzionamento, magari il «collo di bottiglia» del sistema non è dove pensavi. Hai scritto uno script utile? Mostralo ai tuoi colleghi, potrebbero trovare un modo per migliorarlo.

Se applichi costantemente queste pratiche nel lavoro, gran parte dei problemi smetterà di essere tale: non solo ridurrai al minimo il numero dei tuoi errori e fallimenti, ma avrai anche la possibilità di correggere gli errori (grazie ai backup e ai colleghi che ti consigliano di fare un backup). Da qui in poi, ci sono solo dettagli tecnici, nei quali, come si sa, si nasconde il diavolo.

Gli strumenti principali con cui dovrai lavorare più del 50% del tempo sono grep e vim. Cosa può essere più semplice? Ricerca nel testo e modifica del testo. Tuttavia, sia grep che vim sono potenti multitool multifunzionali che consentono di cercare e modificare il testo in modo efficace. Se un qualsiasi notepad per Windows ti permette semplicemente di scrivere/rimuovere una riga, in vim puoi fare quasi qualsiasi cosa con il testo. Non ci credi? Chiama dal terminale il comando vimtutor e inizia a imparare. Quanto a grep, la sua principale forza sono le espressioni regolari. Sì, lo strumento permette di impostare in modo piuttosto flessibile le condizioni di ricerca e i dati restituiti, ma senza RegExp non ha molto senso. E conoscere le espressioni regolari è fondamentale! Almeno a livello base. Per iniziare, ti consiglio di dare un’occhiata a questo. video, si analizzano i fondamenti delle espressioni regolari e del loro utilizzo insieme a grep. Ah, sì, combinandoli con vim, ottieni il POTERE ULTIMO di fare con il testo cose talmente incredibili da meritare un'etichetta 18+.

Dei restanti 50%, il 40% riguarda il pacchetto di strumenti coreutils. Puoi consultare l'elenco per coreutils in Wikipedia, e il manuale per l'intero elenco sul sito GNU. Ciò che non è coperto da questo pacchetto si trova negli strumenti POSIX. Non è necessario memorizzare tutto questo con tutte le opzioni a memoria, ma è utile sapere in linea generale cosa fanno gli strumenti principali. Non sarà necessario reinventare la ruota con soluzioni improvvisate. Un giorno dovevo sostituire i ritorni a capo con spazi nell'output di qualche strumento, e la mia mente malata partorì una costruzione del tipo sed ':a;N;$!ba;s/n/ /g', un collega venne e mi scacciò dalla console con una scopa, poi risolse il problema scrivendo tr 'n' ' '.

Per il neofita sistemista: come fare ordine dal caos

Ti consiglio di ricordare approssimativamente cosa fa ciascun singolo strumento e i comandi più frequentemente usati, per tutto il resto c'è man. Non esitare a chiamare man se hai dei dubbi. E leggi assolutamente man su man stesso — contiene informazioni importanti su cosa troverai.

Conoscendo questi strumenti, potrai affrontare efficacemente gran parte delle sfide che incontrerai nella pratica. Nelle prossime lezioni vedremo quando applicare questi strumenti e le strutture dei principali servizi e applicazioni a cui si applicano.

Con voi c'era l'amministratore di sistema di FirstVDS, Kirill Tsvetkov.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster