Per un amministratore di sistema alle prime armi: come creare ordine dal caos

Per un amministratore di sistema alle prime armi: come creare ordine dal caos

Sono un amministratore di sistema FirstVDS e questo è il testo della prima lezione introduttiva del mio breve corso sull'aiuto ai colleghi alle prime armi. Gli specialisti che hanno recentemente iniziato a impegnarsi nell'amministrazione del sistema devono affrontare una serie degli stessi problemi. Per offrire soluzioni, mi sono impegnato a scrivere questa serie di conferenze. Alcune cose in esso sono specifiche per l'hosting del supporto tecnico, ma in generale possono essere utili, se non per tutti, almeno per molti. Quindi ho adattato il testo della conferenza per condividerlo qui.

Non importa come si chiama la tua posizione: ciò che conta è che in realtà sei coinvolto nell'amministrazione. Cominciamo quindi con cosa dovrebbe fare un amministratore di sistema. Il suo compito principale è mettere le cose in ordine, mantenere l'ordine e prepararsi per futuri aumenti. Senza un amministratore di sistema, il server diventa un disastro. I log non vengono scritti, oppure vi vengono scritte cose sbagliate, le risorse non sono distribuite in modo ottimale, il disco è pieno di ogni tipo di spazzatura e il sistema inizia lentamente a morire a causa di tanto caos. Con calma! Gli amministratori di sistema nella tua persona iniziano a risolvere i problemi ed eliminare il caos!

Pilastri dell'amministrazione del sistema

Tuttavia, prima di iniziare a risolvere i problemi, vale la pena familiarizzare con i quattro pilastri principali dell’amministrazione:

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

Queste sono le basi. Se non costruisci il tuo flusso di lavoro su questi principi, sarà inefficace, improduttivo e generalmente avrà poca somiglianza con la vera amministrazione. Diamo un'occhiata a ciascuno separatamente.

Documentazione

Documentazione non significa leggere la documentazione (anche se non se ne può fare a meno), ma anche mantenerla.

Come conservare la documentazione:

  • Hai riscontrato un nuovo problema che non hai mai visto prima? Annotare i principali sintomi, i metodi di diagnosi e i principi di eliminazione.
  • Hai trovato una soluzione nuova ed elegante a un problema comune? Scrivilo in modo da non doverlo reinventare tra un mese.
  • Ti hanno aiutato a capire una domanda che non capivi? Annota i punti e i concetti principali, disegna un diagramma per te stesso.

L'idea principale: non dovresti fidarti completamente della tua memoria quando impari e applichi cose nuove.

Dipende da te in quale formato lo farai: potrebbe essere un sistema con note, un blog personale, un file di testo, un blocco note fisico. La cosa principale è che i tuoi record soddisfino i seguenti requisiti:

  1. Non essere troppo lungo. Evidenziare le idee, i metodi e gli strumenti principali. Se per comprendere un problema è necessario immergersi nei meccanismi di basso livello dell'allocazione della memoria in Linux, non riscrivere l'articolo da cui l'hai imparato: fornisci un collegamento ad esso.
  2. Le voci dovrebbero esserti chiare. Se la linea race cond.lockup non ti permette di capire immediatamente cosa hai descritto con questa riga - spiega. Una buona documentazione non richiede mezz’ora per essere compresa.
  3. La ricerca è un'ottima funzionalità. Se scrivi post sul blog, aggiungi tag; se in un taccuino fisico, attacca piccoli post-it con le descrizioni. Non ha molto senso documentarsi se si dedica alla ricerca di una risposta tanto tempo quanto lo si spenderebbe risolvendo la domanda da zero.

Per un amministratore di sistema alle prime armi: come creare ordine dal caos

Ecco come può apparire la documentazione: dalle note primitive in un blocco note (immagine sopra), a una base di conoscenza multiutente completa con tag, ricerca e tutte le comodità possibili (sotto).

Per un amministratore di sistema alle prime armi: come creare ordine dal caos

Non solo non dovrai cercare le stesse risposte due volte, ma documentarti sarà di grande aiuto nell'apprendimento di nuovi argomenti (note!), migliorerà il tuo senso del ragno (la capacità di diagnosticare un problema complesso con uno sguardo superficiale), e aggiungerà organizzazione alle tue azioni. Se la documentazione è a disposizione dei tuoi colleghi, consentirà loro di capire cosa e come hai accumulato lì quando non ci sei.

Modelli

Modelli è la creazione e l'utilizzo di modelli. Per risolvere i problemi più tipici, vale la pena creare un modello di azione specifico. Per diagnosticare la maggior parte dei problemi è necessario utilizzare una sequenza standardizzata di passaggi. Dopo aver riparato/installato/ottimizzato qualcosa, le prestazioni di questo qualcosa dovrebbero essere verificate utilizzando liste di controllo standardizzate.

Il template è il modo migliore per organizzare il tuo flusso di lavoro. Utilizzando procedure standard per risolvere i problemi più comuni, ottieni molte cose interessanti. Ad esempio, l'utilizzo delle liste di controllo ti consentirà di diagnosticare tutte le funzioni importanti per il tuo lavoro e di scartare la diagnosi di funzionalità non importanti. E le procedure standardizzate ridurranno al minimo i lanci non necessari e la probabilità di errore.

Il primo punto importante è che anche le procedure e le liste di controllo devono essere documentate. Se ti affidi solo alla memoria, potresti perdere qualche controllo o operazione davvero importante e rovinare tutto. Il secondo punto importante è che tutte le pratiche modello possono e devono essere modificate se la situazione lo richiede. Non esistono modelli ideali e assolutamente universali. Se c'è un problema, ma un controllo del modello non lo ha rilevato, ciò non significa che non ci sia alcun problema. Tuttavia, prima di iniziare a testare alcuni improbabili problemi ipotetici, vale sempre la pena eseguire prima un rapido test del modello.

Ottimizzazione

Ottimizzazione parla da solo. Il processo lavorativo deve essere ottimizzato il più possibile in termini di tempi e costi di manodopera. Ci sono innumerevoli opzioni: impara le scorciatoie da tastiera, le abbreviazioni, le espressioni regolari, gli strumenti disponibili. Cerca usi più pratici di questi strumenti. Se chiami un comando 100 volte al giorno, assegnalo a una scorciatoia da tastiera. Se hai bisogno di connetterti regolarmente agli stessi server, scrivi un alias in una parola che ti collegherà lì:

Per un amministratore di sistema alle prime armi: come creare ordine dal caos

Acquisisci familiarità con le diverse opzioni disponibili per gli strumenti: forse esiste un client terminale più conveniente, DE, un gestore di appunti, un browser, un client di posta elettronica, un sistema operativo. Scopri quali strumenti utilizzano i tuoi colleghi e amici: forse li scelgono per un motivo. Una volta che hai gli strumenti, impara come usarli: impara le chiavi, le abbreviazioni, i suggerimenti e i trucchi.

Fai un uso ottimale degli strumenti standard: coreutils, vim, espressioni regolari, bash. Per gli ultimi tre c'è un numero enorme di meravigliosi manuali e documentazione. Con il loro aiuto, puoi passare rapidamente dallo stato di “mi sento come una scimmia che rompe le noci con un laptop” a “sono una scimmia che usa un laptop per ordinarsi uno schiaccianoci”.

Automazione

Automazione trasferirà operazioni difficili dalle nostre mani stanche a quelle instancabili dell’automazione. Se una procedura standard viene eseguita in cinque comandi dello stesso tipo, perché non racchiudere tutti questi comandi in un unico file e chiamare un comando che scarichi ed esegua questo file?

L'automazione stessa consiste per l'80% nella scrittura e nell'ottimizzazione dei propri strumenti (e per un altro 20% nel tentativo di farli funzionare come dovrebbero). Potrebbe essere solo un one-liner avanzato o un enorme strumento onnipotente con un'interfaccia web e API. Il criterio principale qui è che la creazione di uno strumento non dovrebbe richiedere più tempo e impegno della quantità di tempo e impegno che lo strumento ti farà risparmiare. Se passi cinque ore a scrivere uno script di cui non avrai mai più bisogno, per un'attività che avresti impiegato un'ora o due per risolvere senza lo script, si tratta di un'ottimizzazione del flusso di lavoro molto scarsa. Puoi dedicare cinque ore alla creazione di uno strumento solo se il numero, il tipo di attività e il tempo lo consentono, il che non accade spesso.

Automazione non significa necessariamente scrivere script completi. Ad esempio, per creare un gruppo di oggetti dello stesso tipo da un elenco, tutto ciò di cui hai bisogno è una riga intelligente che farà automaticamente quello che faresti manualmente, passando da una finestra all'altra, con un sacco di copia e incolla.

In realtà, se costruisci il processo amministrativo su questi quattro pilastri, puoi aumentare rapidamente la tua efficienza, produttività e qualificazione. Tuttavia, questo elenco deve essere integrato con un altro elemento, senza il quale è quasi impossibile lavorare nell'IT: l'autoeducazione.

Autoformazione dell'amministratore di sistema

Per essere anche solo un po' competenti in questo settore, è necessario studiare e imparare costantemente cose nuove. Se non hai il minimo desiderio di affrontare l'ignoto e di capirlo, rimarrai bloccato molto rapidamente. Tutti i tipi di nuove soluzioni, tecnologie e metodi compaiono costantemente nell'IT e se non li studi almeno superficialmente, sei sulla strada del fallimento. Molte aree della tecnologia dell'informazione poggiano su una base molto complessa e voluminosa. Ad esempio, il funzionamento della rete. Le reti e Internet sono ovunque, le incontri ogni giorno, ma una volta che scavi nella tecnologia che sta dietro di esse, scoprirai una disciplina enorme e molto complessa, il cui studio non è mai una passeggiata nel parco.

Non ho incluso questo elemento nell'elenco perché è fondamentale per l'IT in generale e non solo per l'amministrazione del sistema. Naturalmente non sarai in grado di imparare assolutamente tutto subito, semplicemente non hai abbastanza tempo fisico. Pertanto, quando ti istruisci, dovresti ricordare i necessari livelli di astrazione.

Non è necessario imparare subito come funziona la gestione della memoria interna di ogni singola utility e come interagisce con la gestione della memoria di Linux, ma è bene sapere schematicamente cos'è la RAM e perché è necessaria. Non è necessario sapere in che modo le intestazioni TCP e UDP sono strutturalmente diverse, ma sarebbe una buona idea comprendere le differenze di base nel funzionamento dei protocolli. Non è necessario imparare cos'è l'attenuazione del segnale nell'ottica, ma sarebbe bello sapere perché le perdite reali vengono sempre ereditate tra i nodi. Non c'è niente di sbagliato nel sapere come funzionano determinati elementi a un certo livello di astrazione e non necessariamente comprendere assolutamente tutti i livelli quando non c'è alcuna astrazione (impazzirai).

Tuttavia, nel tuo campo, pensare a livello di astrazione “beh, questa è una cosa che ti permette di visualizzare siti web” non è molto positivo. Le lezioni successive saranno dedicate ad una panoramica delle principali aree che un amministratore di sistema deve affrontare quando lavora a livelli di astrazione più bassi. Cercherò di limitare la quantità di conoscenza esaminata a un livello minimo di astrazione.

10 comandamenti dell'amministrazione di sistema

Quindi, abbiamo imparato i quattro pilastri principali e le fondamenta. Possiamo iniziare a risolvere i problemi? Non ancora. Prima di fare ciò, è consigliabile familiarizzare con le cosiddette “buone pratiche” e regole di buona educazione. Senza di loro, è probabile che tu faccia più male che bene. Allora, cominciamo:

  1. Alcuni dei miei colleghi credono che la prima regola sia “non nuocere”. Ma sono propenso a non essere d'accordo. Quando cerchi di non nuocere, non puoi fare nulla: troppe azioni sono potenzialmente distruttive. Penso che la regola più importante sia: “fai un backup”. Anche se fai qualche danno, puoi sempre tornare indietro e tutto non andrà così male.

    Dovresti sempre eseguire il backup quando il tempo e il luogo lo consentono. È necessario fare il backup di ciò che cambierai e di ciò che rischi di perdere a causa di un'azione potenzialmente distruttiva. Si consiglia di verificare l'integrità del backup e la presenza di tutti i dati necessari. Il backup non deve essere eliminato subito dopo aver controllato tutto, a meno che non sia necessario liberare spazio su disco. Se la posizione lo richiede, esegui il backup sul tuo server personale ed eliminalo dopo una settimana.

  2. La seconda regola più importante (che io stesso spesso infrango) è "non nasconderti". Se hai fatto un backup, scrivi dove, in modo che i tuoi colleghi non debbano cercarlo. Se hai compiuto azioni non ovvie o complesse, scrivilo: tornerai a casa, e il problema potrebbe ripetersi o presentarsi per qualcun altro, e la tua soluzione verrà trovata utilizzando parole chiave. Anche se fai qualcosa che conosci bene, i tuoi colleghi potrebbero non farlo.
  3. La terza regola non ha bisogno di essere spiegata: “Non fare mai qualcosa di cui non conosci, immagini o capisci le conseguenze”. Non copiare comandi da Internet se non sai cosa fanno, chiama man e analizzali prima. Non utilizzare soluzioni già pronte se non riesci a capire cosa fanno. Mantenere l'esecuzione del codice offuscato al minimo assoluto. Se non hai tempo per capirlo, allora stai facendo qualcosa di sbagliato e dovresti leggere il punto successivo.
  4. "Test". Nuovi script, strumenti, one-liner e comandi dovrebbero essere testati in un ambiente controllato, non sul computer client, se esiste anche il minimo rischio di azioni distruttive. Anche se hai eseguito il backup di tutto (e lo hai fatto), i tempi di inattività non sono la cosa più interessante. Crea un server/virtuale/chroot separato per questo ed esegui il test lì. C'è qualcosa di rotto? Quindi puoi lanciarlo in "combattimento".

    Per un amministratore di sistema alle prime armi: come creare ordine dal caos

  5. "Controllo". Riduci al minimo tutte le operazioni che non controlli. Una curva di dipendenza del pacchetto può trascinare verso il basso metà del sistema e il flag -y impostato per yumremove ti dà l'opportunità di esercitare le tue capacità di ripristino del sistema da zero. Se l'azione non ha alternative incontrollate, il punto successivo è un backup già pronto.
  6. "Controllo". Controlla le conseguenze delle tue azioni e se è necessario ripristinare un backup. Controlla se il problema è stato davvero risolto. Controllare se l'errore viene riprodotto e in quali condizioni. Controlla cosa puoi rompere con le tue azioni. Non è necessario fidarsi del nostro operato, ma mai verificare.
  7. "Comunicare". Se non riesci a risolvere il problema, chiedi ai tuoi colleghi se hanno riscontrato questo problema. Se vuoi applicare una decisione controversa, scopri l'opinione dei tuoi colleghi. Forse offriranno una soluzione migliore. Se non sei sicuro delle tue azioni, discutile con i tuoi colleghi. Anche se questa è la tua area di competenza, uno sguardo nuovo alla situazione può chiarire molto. Non vergognarti della tua ignoranza. È meglio fare una domanda stupida, sembrare uno stupido e ottenere una risposta, piuttosto che non fare la domanda, non ottenere una risposta e finire per essere uno stupido.
  8. “Non rifiutare aiuto irragionevolmente”. Questo punto è il contrario del precedente. Se ti viene posta una domanda stupida, chiarisci e spiega. Chiedono l'impossibile: spiegano che è impossibile e perché, offrono alternative. Se non hai tempo (non hai davvero tempo, non voglia), dì che hai una domanda urgente, molto lavoro, ma lo risolverai più tardi. Se i colleghi non hanno compiti urgenti, offriti di contattarli e delegare la questione.
  9. "Dare un feedback". Uno dei tuoi colleghi ha iniziato a utilizzare una nuova tecnica o un nuovo script e stai riscontrando conseguenze negative di questa decisione? Segnalalo. Forse il problema può essere risolto in tre righe di codice o cinque minuti di perfezionamento della tecnica. Hai riscontrato un bug nel tuo software? Segnalare un bug. Se è riproducibile o non è necessario riprodurlo, molto probabilmente verrà corretto. Esprimi i tuoi desideri, suggerimenti e critiche costruttive e solleva domande per la discussione se sembrano rilevanti.
  10. "Chiedi feedback". Siamo tutti imperfetti, proprio come le nostre decisioni, e il modo migliore per verificare la correttezza della tua decisione è metterla in discussione. Se hai ottimizzato qualcosa per un cliente, chiedigli di monitorare il lavoro; forse il collo di bottiglia nel sistema non è quello che stavi cercando. Hai scritto uno script di aiuto: mostralo ai tuoi colleghi, forse troveranno un modo per migliorarlo.

Se applichi costantemente queste pratiche nel tuo lavoro, la maggior parte dei problemi cesserà di essere tale: non solo ridurrai al minimo il numero dei tuoi errori e delle tue falsità, ma avrai anche la possibilità di correggere gli errori (nel forma di backup e colleghi che ti consiglieranno di eseguire il backup). Inoltre - solo dettagli tecnici, in cui, come sappiamo, sta il diavolo.

Gli strumenti principali con cui dovrai lavorare più del 50% delle volte sono grep e vim. Cosa potrebbe essere più semplice? Ricerca e modifica del testo. Tuttavia, sia grep che vim sono potenti strumenti multipli che ti consentono di cercare e modificare il testo in modo efficiente. Se alcuni blocchi note di Windows ti consentono semplicemente di scrivere/eliminare una riga, in Vim puoi fare quasi qualsiasi cosa con il testo. Se non mi credi, chiama il comando vimtutor dal terminale e inizia ad imparare. Per quanto riguarda grep, il suo punto di forza risiede nelle espressioni regolari. Sì, lo strumento stesso ti consente di impostare le condizioni di ricerca e i dati di output in modo abbastanza flessibile, ma senza RegExp questo non ha molto senso. E devi conoscere le espressioni regolari! Almeno a livello base. Per cominciare, ti consiglierei di guardare questo video, copre le basi delle espressioni regolari e il loro utilizzo insieme a grep. Oh sì, quando li combini con Vim, ottieni l'abilità ULTIMATE POWER di fare cose con il testo che devi etichettare con più di 18 icone.

Del restante 50%, il 40% proviene dal toolkit coreutils. Per coreutils puoi consultare l'elenco su wikipediae il manuale per l'intero elenco è sul sito web GNU. Ciò che non è coperto in questo set è nelle utilità POSIX. Non è necessario imparare tutte le chiavi a memoria, ma è utile sapere almeno approssimativamente cosa possono fare gli strumenti di base. Non devi reinventare la ruota con le stampelle. In qualche modo avevo bisogno di sostituire le interruzioni di riga con spazi nell'output di qualche utilità, e il mio cervello malato ha dato vita a una costruzione simile sed ':a;N;$!ba;s/n/ /g', un collega si è avvicinato e mi ha allontanato dalla console con una scopa, per poi risolvere il problema scrivendo tr 'n' ' '.

Per un amministratore di sistema alle prime armi: come creare ordine dal caos

Io ti consiglierei di ricordare cosa fa ogni singolo strumento e i tasti dei comandi più utilizzati; per tutto il resto c'è l'uomo. Sentiti libero di chiamare l'uomo se hai dei dubbi. E assicurati di leggere l'uomo stesso: contiene informazioni importanti su ciò che troverai.

Conoscendo questi strumenti, sarai in grado di risolvere efficacemente una parte significativa dei problemi che incontrerai nella pratica. Nelle lezioni seguenti esamineremo quando utilizzare questi strumenti e i framework per i servizi e le applicazioni sottostanti a cui si applicano.

L'amministratore di sistema FirstVDS Kirill Tsvetkov era con te.

Fonte: habr.com

Aggiungi un commento