
Sou administrador de sistemas da FirstVDS e este é o texto da minha primeira aula introdutória do meu curso breve para ajudar novos colegas. Especialistas que recentemente iniciaram sua carreira em administração de sistemas enfrentam uma série de problemas comuns. Para oferecer soluções, decidi escrever este ciclo de palestras. Algumas coisas nele são específicas para o suporte técnico de hospedagem, mas, de modo geral, podem ser úteis, se não para todos, para muitos. Portanto, adaptei o texto da palestra para compartilhar aqui.
Não importa como você chama seu cargo — o importante é que, na prática, você está administrando. Então vamos começar pelo que um administrador de sistemas deve fazer. Sua principal tarefa é organizar, manter a ordem e se preparar para futuros aumentos na ordem. Sem um administrador de sistemas, o servidor vira uma bagunça. Os logs não são escritos, ou neles é registrado o que não deveria, os recursos são distribuídos de forma não otimizada, o disco se enche de lixo e o sistema começa a despencar sob tanta confusão. Calma! Os administradores de sistemas, como você, estão aqui para resolver problemas e colocar a casa em ordem!
Pilares da administração de sistemas
No entanto, antes de começar a resolver problemas, é importante conhecer os quatro pilares principais da administração:
- Documentação
- Templateização
- Otimização
- Automatização
Esses são os fundamentos. Se você não construir seu processo de trabalho sobre esses princípios, ele será ineficaz, improdutivo e, de fato, pouco se parecerá com uma verdadeira administração. Vamos analisar cada um em detalhes.
Documentação
Documentação significa não apenas a leitura da documentação (embora isso seja indispensável), mas também a sua manutenção.
Como manter a documentação:
- Enfrentou um novo problema que nunca viu antes? Registre os principais sintomas, métodos de diagnóstico e princípios de solução.
- Criou uma nova solução elegante para um problema comum? Anote-a para não ter que reinventá-la em um mês.
- Alguém ajudou você a entender uma questão da qual você não sabia nada? Anote os principais pontos e conceitos, desenhe um diagrama.
A ideia principal: não vale a pena confiar totalmente na própria memória ao aprender e aplicar algo novo.
O formato em que você fará isso depende apenas de você: pode ser um sistema de anotações, um blog pessoal, um arquivo de texto ou um caderno físico. O principal é que suas anotações atendam aos seguintes requisitos:
- Não sejam excessivamente longas. Destaque as principais ideias, métodos e meios. Se entender o problema exige mergulhar na mecânica de baixo nível do gerenciamento de memória no Linux, não reescreva o artigo de onde você aprendeu isso — forneça um link para ele.
- As anotações devem ser compreensíveis para você. Se a linha
race cond.lockupnão permite que você entenda imediatamente o que está descrevendo, explique. Em uma boa documentação, não deve ser necessário entender algo por meia hora. - A pesquisa é um recurso muito bom. Se você mantiver anotações em um blog, adicione tags; se for em um caderno físico — cole pequenos post-its com descrições. Não faz sentido ter uma documentação se você gasta o mesmo tempo procurando a resposta nela que gastaria resolvendo a questão do zero.

Assim pode ser a documentação: desde anotações primitivas em um caderno (imagem acima) até uma base de conhecimento multiusuário completa com tags, pesquisa e todas as conveniências possíveis (abaixo).

Você não só não terá que procurar as mesmas respostas duas vezes: documentar será uma grande ajuda no aprendizado de novos tópicos (são anotações!), aprimorará seu instinto de aranha (capacidade de diagnosticar um problema complexo com um único olhar superficial) e trará organização às suas ações. Se a documentação estiver acessível aos seus colegas, permitirá que eles compreendam o que você fez quando você não estiver presente.
Templateização
Templateização é a criação e uso de templates. Para resolver a maioria das questões comuns, vale a pena criar um determinado modelo de ação. Para diagnosticar a maioria dos problemas, deve-se usar uma sequência padrão de ações. Quando você consertar/instalar/otimizar algo, a funcionalidade desse algo deve ser verificada por meio de listas de verificação padronizadas.
A template is the best way to organize your workflow. By using standard procedures to address the most common issues, you gain a lot of benefits. For instance, using checklists allows you to diagnose all crucial functions for your work and disregard less important functionalities. Standardized procedures will minimize unnecessary back-and-forth and reduce the likelihood of errors.
The first important point is that procedures and checklists also need to be documented. Simply relying on memory can lead to missing some genuinely important checks or operations, which can cause everything to fall apart. The second crucial point is that all template practices can and should be modified if the situation demands it. There are no perfect and absolutely universal templates. If an issue exists but the template check didn’t reveal it, that doesn’t mean there’s no problem. However, before tackling any unlikely hypothetical issues, it’s always worth doing a quick template check first.
Otimização
Otimização speaks for itself. You need to optimize your workflow to minimize time and effort. There are countless options here: learn hotkeys, abbreviations, regular expressions, and available tools. Look for more practical ways to use these tools. If you call a command 100 times a day, bind it to a keyboard shortcut. If you need to regularly connect to the same servers, write an alias in a single word that will connect you there:

Familiarize yourself with different available tools — there might be a more convenient terminal client, DE, clipboard manager, browser, email client, or operating system. Find out what tools your colleagues and acquaintances use — perhaps they chose them for a reason. Once you select the tools, learn how to use them: memorize the keys, shortcuts, tips, and tricks.
Utilize os ferramentas padrão de forma otimizada - coreutils, vim, expressões regulares e bash. Para os últimos três, há uma enorme quantidade de manuais e documentação excelentes. Com eles, você pode rapidamente passar de "sinto-me como um macaco quebrando nozes com um laptop" para "sou um macaco que usa o laptop para encomendar um quebrador de nozes."
Automação
Automação transferirá operações pesadas de nossas mãos cansadas para as incansáveis mãos da automação. Se um procedimento padrão é executado em cinco comandos idênticos, por que não agrupar todos esses comandos em um arquivo e chamar um único comando que execute esse arquivo?
Na verdade, a automação consiste em 80% na escrita e otimização de suas próprias ferramentas (e 20% em tentativas de fazê-las funcionar como deveriam). Pode ser apenas um avançado one-liner ou uma enorme ferramenta poderosa com interface web e API. O principal critério aqui é que a criação da ferramenta não deve levar mais tempo e esforço do que o tempo e esforço que ela economiza. Se você passa cinco horas escrevendo um script que nunca mais será útil, para uma tarefa que levaria uma ou duas horas sem o script, isso é uma péssima otimização do fluxo de trabalho. Você pode gastar cinco horas criando uma ferramenta somente se a quantidade, tipo de tarefas e tempo permitir, o que não é comum.
Automação não implica necessariamente a escrita de scripts completos. Por exemplo, para criar uma quantidade de objetos idênticos a partir de uma lista, um astuto one-liner é suficiente para fazer automaticamente o que você faria manualmente, alternando entre janelas, com pilhas de copiar e colar.
De fato, se você construir o processo de administração sobre esses quatro pilares, poderá aumentar sua eficiência, produtividade e qualificação rapidamente. No entanto, essa lista precisa ser complementada com mais um ponto, sem o qual trabalhar em TI é praticamente impossível — autoeducação.
Autoeducação do administrador de sistemas
Para ser minimamente competente nesta área, é necessário estar em constante aprendizado e descoberta. Se você não tiver o menor desejo de enfrentar o desconhecido e compreender, rapidamente "desaparecerá". No TI, novas soluções, tecnologias e métodos surgem o tempo todo; e se você não os estuda nem que seja superficialmente — está a caminho da derrota. Muitas áreas da tecnologia da informação baseiam-se em fundamentos bastante complexos e abrangentes. Por exemplo, o funcionamento de redes. Redes e internet estão em toda parte; você se depara com elas diariamente, mas ao aprofundar-se nas tecnologias que as sustentam, encontrará uma disciplina enorme e muito complexa, cujo estudo definitivamente não é um passeio no parque.
Não incluí este ponto na lista, porque é fundamental para o TI de forma geral, e não apenas para a administração de sistemas. Naturalmente, você não conseguirá aprender tudo de uma vez — simplesmente não haverá tempo físico para isso. Portanto, ao se autoeducar, é necessário lembrar-se dos níveis de abstração necessários.
Você não precisa aprender imediatamente como funciona o gerenciamento interno de memória de cada utilitário individual e como isso interage com o gerenciamento de memória do Linux, mas é bom saber, de forma esquemática, o que é a memória RAM e sua utilidade. Não é necessário saber como as cabeçalhos do TCP e UDP diferem estruturalmente, mas seria bom entender as principais diferenças na operação dos protocolos. Você não precisa estudar o que é a atenuação de sinal em fibras ópticas, mas seria interessante saber por que as perdas reais sempre são herdadas nos nós. Não há nada de errado em conhecer como certos elementos funcionam em um nível de abstração específico e não é necessário dissecar todos os níveis quando não há abstração alguma (você simplesmente ficará maluco).
No entanto, discutir em sua área no nível de abstração de "bem, isso é uma coisa que mostra sites" — não é muito bom. As próximas palestras serão dedicadas à revisão das principais áreas com as quais o administrador de sistemas precisa lidar em níveis de abstração mais baixos. Vou tentar limitar a quantidade de conhecimentos revisados ao nível mínimo de abstração.
10 Mandamentos da Administração de Sistemas
Assim, aprendemos os quatro pilares principais e a base. Podemos começar a resolver problemas? Ainda não. Antes disso, é aconselhável se familiarizar com as chamadas "melhores práticas" e regras de boa conduta. Sem elas, há uma chance de causar mais danos do que benefícios. Então, vamos começar:
- Alguns dos meus colegas acreditam que a primeira regra é "não prejudicar". Mas eu não concordo. Quando você tenta não prejudicar, acaba não fazendo nada — muitas ações são potencialmente destrutivas. A regra mais importante é: "faça um backup". Mesmo que você cause um dano, sempre é possível reverter, e a situação já não será tão ruim.
Você deve sempre fazer backups quando houver tempo e espaço para isso. É necessário fazer backup do que você irá alterar e do que você arrisca perder durante uma ação potencialmente destrutiva. É aconselhável verificar a integridade do backup e a presença de todos os dados necessários. Não deve apagar o backup imediatamente após a verificação, a menos que precise liberar espaço em disco. Se necessário, faça o backup em seu servidor pessoal e delete-o uma semana depois.
- A segunda regra mais importante (que eu frequentemente infrinjo) é: "não esconda". Se você fez um backup, escreva onde, para que seus colegas não precisem procurar por ele. Se você executou alguma ação não óbvia ou complexa, anote: você irá para casa, mas o problema pode se repetir ou surgir para outra pessoa, e sua solução poderá ser encontrada através de palavras-chave. Mesmo que você esteja fazendo algo que conhece bem, seus colegas podem não saber disso.
- A terceira regra não precisa de explicação: "nunca faça algo cuja consequência você não conhece, não entende ou não compreende". Não copie comandos da internet se não souber o que eles fazem, consulte o manual e entenda primeiro. Não use soluções prontas se não puder entender o que elas fazem. Minimizar a execução de código ofuscado. Se você não tem tempo para entender, então você está fazendo algo errado e deve se familiarizar com o próximo ponto.
- "Teste". Novos scripts, ferramentas, comandos e instruções devem ser testados em um ambiente controlado, e não na máquina do cliente, se houver qualquer potencial mínimo para ações destrutivas. Mesmo que você tenha feito backup de tudo (e você fez), o tempo de inatividade não é legal. Configure um servidor/virtualização/chroot separado para isso e teste lá. Nada quebrou? Então você pode rodar em produção.

- «Controle». Minimize todas as operações que você não controla. Uma dependência problemática em um pacote pode puxar meio sistema para baixo, e a flag -y definida para yum remove lhe dá a chance de treinar suas habilidades de recuperação do sistema do zero. Se a ação não tem alternativas incontroláveis — vá para o próximo ponto e tenha um backup pronto.
- «Verifique». Verifique as consequências de suas ações e se é necessário voltar para o backup. Verifique se o problema realmente foi resolvido. Verifique se o erro se reproduz e sob quais condições. Verifique o que você pode quebrar com suas ações. Confiar no nosso trabalho é desnecessário, mas verificar — nunca.
- «Comunique-se». Se você não consegue resolver o problema, pergunte aos colegas se eles já passaram por isso. Quer aplicar uma solução controversa — busque a opinião dos colegas. Eles podem sugerir uma solução melhor. Não está seguro de suas ações — discuta-as com os colegas. Mesmo que seja sua área de especialização, um olhar fresco sobre a situação pode esclarecer muito. Não tenha vergonha de sua própria ignorância. Melhor fazer uma pergunta boba, parecer tolo e obter uma resposta do que não perguntar, não obter a resposta e continuar sem saber.
- «Não recuse ajudar sem justificativa». Este ponto é o reverso do anterior. Se alguém fez uma pergunta boba — esclareça e explique. Se pedirem algo impossível — explique que é impossível e por quê, proponha alternativas. Se não há tempo (realmente não há tempo, e não falta de vontade) — diga que você tem uma questão urgente uma grande carga de trabalho, mas que você resolverá depois. Se os colegas não tiverem tarefas urgentes, sugira que eles ajudem e delegue a questão.
- «Dê feedback». Alguém entre os colegas começou a aplicar uma nova metodologia ou um novo script, e você está enfrentando consequências negativas dessa decisão? Informe-nos. Pode ser que o problema se resolva com três linhas de código ou cinco minutos de ajustes na metodologia. Encontrou um bug no software? Informe sobre o bug. Se ele pode ser reproduzido ou não é necessário reproduzi-lo, provavelmente será corrigido. Expresse desejos, sugestões e críticas construtivas, e traga questões à discussão, se parecer que são relevantes.
- «Peça feedback». Todos nós somos imperfeitos, assim como nossas decisões, e a melhor maneira de verificar a validade da sua decisão é levá-la à discussão. Otimizou algo para um cliente — peça para acompanhar o funcionamento, pode ser que o ‘gargalo’ do sistema não esteja onde você procurou. Escreveu um script útil — mostre aos colegas, pode ser que eles encontrem uma maneira de melhorá-lo.
Se você aplicar essas práticas continuamente no trabalho, a maior parte dos problemas deixa de ser problema: você não apenas reduzirá ao mínimo seus próprios erros e falhas, mas também terá oportunidades de corrigir erros (por meio de backups e colegas que aconselharão a fazer o backup). Depois, são apenas detalhes técnicos, nos quais, como se sabe, reside o diabo.
As principais ferramentas com as quais você terá que trabalhar mais de 50% do tempo são grep e vim. O que pode ser mais simples? Pesquisa de texto e edição de texto. No entanto, tanto o grep quanto o vim são poderosas ferramentas multifuncionais que permitem buscar e editar texto de forma eficaz. Se algum notepad do Windows permitir que você apenas escreva/remova uma linha, no vim você pode fazer quase qualquer coisa com o texto. Não acredita? Chame o comando vimtutor no terminal e comece a aprender. Quanto ao grep, seu principal poder está nas expressões regulares. Sim, a própria ferramenta permite definir condições de busca e dados a serem exibidos de maneira bastante flexível, mas sem RegExp isso não faz muito sentido. E você precisa conhecer expressões regulares! Pelo menos em um nível básico. Para começar, eu recomendaria que você assistisse a isso. , ele aborda os fundamentos das expressões regulares e suas aplicações junto com o grep. Ah sim, ao combiná-las com o vim, você obtém o poder supremo de fazer com o texto coisas que merecem etiquetas 18+.
Dos 50% restantes, 40% se referem ao pacote de ferramentas coreutils. Para a lista de coreutils, você pode verificar em , e o manual para toda a lista está no site . O que não é coberto por esse conjunto, está nas utilitários . Não é necessário memorizar tudo com todas as opções de cabeça, mas é bom saber, pelo menos aproximadamente, o que as principais ferramentas podem fazer — útil. Você não precisará reinventar a roda com gambiarras. Uma vez eu precisei substituir quebras de linha por espaços na saída de uma utilidade, e minha mente criativa gerou a seguinte construção sed ':a;N;$!ba;s/n/ /g', um colega que se aproximou me afastou da consola com uma vassoura e então resolveu a tarefa escrevendo tr 'n' ' '.

Eu recomendaria lembrar o que cada ferramenta individual executa e os comandos mais comuns, para tudo o mais, existe o man. Não hesite em chamar o man se você tiver alguma dúvida. E definitivamente leia o man sobre o próprio man — ele contém informações importantes sobre o que você encontrará.
Conhecendo essas ferramentas, você poderá resolver de forma eficaz boa parte das tarefas que encontrará na prática. Nas próximas aulas, veremos quando aplicar essas ferramentas e as estruturas dos principais serviços e aplicações às quais elas se aplicam.
Este foi o administrador de sistemas da FirstVDS, Kirill Tsvetkov.
Fonte: habr.com

