Ao longo destes poucos 15 anos que lido com TI e com Linux (este por um pouco menos de tempo) eu já me deparei com muitas situações repetitivas. Boas ou más estas situações sempre aconteciam mais de uma vez, como em um dejavu. E eu tinha que atendê-las pela segunda, terceira e até pela quarta vez. Embora isso seja normal, é de se ficar preocupado quando lembrar o que foi feito da primeira vez é mais difícil do que resolver o problema original. Para simplificar a repetição das tarefas então nada melhor do que seguir algumas regras.
Há algum tempo que eu percebi esta verdade e então diante de uma tarefa que estava realizando possivelmente pela vigésima vez ou mais eu me fiz a pergunta “Como repetir os mesmos passos, com o mínimo de esforço?” depois de pensar um pouco eu me lembrei de alguns conceitos simples que aprendi nos meus estudos e até mesmo durante a vivência prática da tarefa diária.
Outra coisa que aprendi também é que não existe um “Guia do administrador de sistemas para resolução de problemas”. É impossível fazer o tal guia mas se você for organizado poderá resolver os problemas repetitivos e com o tempo poderá resolver todos os problemas que aparecem no seu dia-a-dia.
Computadores são máquinas (fato aprendido na graduação), mas computadores também são temperamentais (isso você só aprende quando esgota os seus conhecimentos e o problema não foi solucionado ainda). Sabendo disso você precisa ter informações documentadas, protocolos bem fundamentados, anotados e a mão para os momentos de pânico, daí eu criei cinco regras que sigo quase religiosamente.
1 – Seja preguiçoso
Seja preguiçoso e tenha orgulho disso. Não perca tempo compilando a última versão do banco de dados MySQL se você pode instá-lo apenas usando um “apt-get install mysql-server” ou “rpm -i mysql-server-i386.rpm”.
Seja sincero. Você não precisa recompilar o Apache, o PostgreSQL ou o kernel do seu CentOS só porque você leu em algum lugar que isso o tornaria mais rápido. Muita gente tem tara por ficar compilando aplicativos e editando arquivos na mão etc. Isso de fato otimiza o sistema e é muito educativo mas fazer isso no seu servidor em produção usado por apenas 20 usuários é no mínimo desperdício de tempo e trabalho, além de um grande risco para quem está começando agora.
A ação mais sensata a ser tomada por alguém que lida com uma ciência dita exata e lógica é simplesmente instalar e usar o padrão que já está disponível em sua distribuição e talvez uma simples mudança no seu /etc poderia otimizar o seu sistema sem muito esforço se isso realmente for justificável.
2 – Tenha um sistema amigável
O conceito de amigabilidade é bastante subjetiva e pessoal. Para uns nada é mais amigável do que editar o arquivo dhcpd.conf para configurar o seu servidor DHCP, para outros é melhor usar uma ferramenta que rode em ambiente gráfico, outras ainda prefeririam uma ferramenta web etc. Não importa qual seja a sua concepção sobre sistema amigável. É você quem terá que lidar com o seu servidor quando ele acordar de mau humor na segunda-feira pós feriadão, então mantenha-o o mais amigável possível.
Considere ainda que se ele tiver uma Interface de gerenciamento Web você terá o benefício de resolver o problema até mesmo de casa o que lhe pouparia o trabalho de se deslocar num fim de semana. Por outro lado, isso poderia acabar o forçando a trabalhar além do que o seu contrato de trabalho exige.
3 – Tome nota
Dizem que um raio não cai no mesmo local duas vezes, mas em TI, um problema pode afetar o mesmo servidor várias vezes e, a hora que ele ocorre pela segunda vez, é esperado que você resolva rápido. A forma mais eficiente que existe para otimizar a solução do problema é agir com assertividade. E considerando que a situação está acontecendo pela segunda vez, deduz-se que você já saiba o que fazer certo?
Mantenha uma espécie de “diário de bordo”. Anote tudo o que você faz nos seus servidores. Instalou um pacote novo porque o log do Apache registrava a falta de um módulo para carregar corretamente o program XYZ? Pegue seu bloquinho e, ponha a data, o nome do servidor, o problema e a solução. Vai instalar uma nova ferramenta? bloquinho aberto, caneta próxima a mão faça um “manual de instalação personalizado para instalação da ferramenta”. Anote os comandos usados, guarde as referências que você leu para chegar a esta conclusão, tenha isso sempre a mão.
Particularmente como bloquinho, eu uso um editor de textos simples no meu computador (prefiro um pequeno script feito com Zenity para o texto inicial) e o LeafPad para novas edições. Com um clique em um atalho na área de trabalho eu abro o editor, anoto o que preciso e salvo com um nome auto explicativo em uma pasta com o sugestivo nome “Minhas Notas”e mantenho estas notas em uma pasta replicada (Dropbox) para que eu possa acessá-la de qualquer computador que esteja usando e pronto.
Se quiser usar aqueles sistemas de post-it ou notas como tomboy, Gnote etc vá em frente. Eu já testei e usei por algum tempo mas eles deixaram de ser eficientes pra mim, foi quando eu voltei a alegria da simplicidade com um editor de textos leve.
Só um alerta importante sobre a escolha da ferramenta: Nunca, mas nunca mesmo, cogite a hipótese de usar uma ferramenta armazenada em um servidor passível de problemas. Imagine por exemplo que você use um sistema baseado em PHP+MySQL e justamente este servidor deu um problema que o impede de carregar a página com as instruções para manutenção. Quanto mais simples for a ferramenta, melhor ela será.
4 – Mostre quem manda e quem faz o trabalho sujo
Todo mundo sabe que o objetivo do computador é automatizar tarefas, mas parece que nós, quem trabalhamos diretamente com eles, esquecemos disso. Não faça duas vezes a mesma coisa. Faça uma vez e deixe que o computador refaça-as novamente da segunda.
Lá no trabalho sempre que eu instalo um novo servidor, preciso instalar alguns pacotes e configurá-los sempre da mesma maneira, realizar algumas mudanças padrão etc. No começo eu fazia tentando lembrar o que fazer depois. Cansado de tentativas frustradas de lembrar o que fazer acabei anotando tudo em um arquivo de notas especialmente nomeado “Pós configuração de servidores.txt”, mas não levou muito tempo para que eu aperfeiçoasse esta tarefa criando um script chamado posinstall.sh que é exatamente a mesma coisa só que este último executa os comandos de maneira a exigir o mínimo possível da minha interação. Resultado? A pósconfiguração de um servidor que levava um dia inteiro acabou caindo para 1h ou menos em alguns casos.
Na Internet há milhares de tutoriais explicando como programar em shellscript. Se ainda não sabe, aprenda os conceitos básicos da programação e se imponha como propósito melhorar seus conhecimentos nisso. Faça o computador trabalhar por você. A programação é forma como o “O grande deus Sysadmin” (você) tem de expressar a sua soberana vontade para o seu escravo, o computador. Mas a garantia de que elas serão corretamente atendidas depende de sua divina capacidade em saber escrever suas ordens de forma estruturada.
No meu diretório $HOME eu tenho uma pasta “bin” que é onde eu guardo tudo quanto é script que faço para facilitar a minha vida. Lá eu encontro desde o script que conectava ao meu antigo provedor de internet via rádio (isso tem pra mais de 5 anos), e para gravar um pasta diretamente em uma mídia de CD virgem até scripts mais atuais para alterar o roteamento de pacotes quando estou com duas conexões de rede ativas, ou para ativar a câmera no skype, fazer backups etc.
Um coisa importante de se registrar para quem estiver lendo esta dica é: “Documente” . Não adianta eu ter um script fantástico chamado “caiu.sh” se daqui a três meses eu não conseguir identificar de forma rápida que este é o script que monitora minha conexão Internet e reconecta quando ela cair.
5 – Automatize
Acredito que não haja nada mais irritante do que fazer várias vezes a mesma coisa. Imagine que em um dado servidor vários arquivos estejam sendo copiados, por diversas pessoas ao mesmo tempo, e por isso você deseja acompanhar o uso do disco. Você sabe que deveria usar o comando “df -m” para isso, mas teria que digitar este comando várias vezes, certo?
Errado. É possível automatizar tarefas em qualquer sistema operacional. Nos ambientes POSIX existem várias formas de se fazer isso. Vejamos algumas.
Se a saída é pequena e cabe na sua tela (como é o caso deste comando que citei no exemplo), você pode usar o comando watch que executa um dado comando repetidamente até que você o interrompa. Da forma como mostro abaixo, o comando “df -m” será executado automaticamente a cada 2s e sua saída será exibida na tela. (o -d destaca as alterações ocorridas desde a última execução):
watch -d df -m
Outra forma seria usar um laço while juntamente com o comando sleep para temporizar o intervalo entre as atualizações. O exemplo abaixo faz a mesma coisa que o comando anterior, mas a saída é mostrada sequencialmente uma abaixo da outra:
while [ 1 ]; do
df -m
sleep 2s
done
Outra forma mais rebuscada de se repetir um dado comando é usar o agendador de tarefas do sistema (o Cron, no caso do Linux), mas neste caso temos algumas exigências a cumprir:
- os intervalos devem ser maiores que 1m
- a saída deve ser sempre redirecionada para um arquivo, visto que não há console para visualização da saída
- não devemos usar comandos interativos (que exijam a sua intervenção, ou o pergunte algo), pelo mesmo motivo dado acima
de forma grosseira o cron pode ser configurado digitando-se apenas:
crontab -e
Isso abrirá um editor de textos onde você poderá programar o seu comando a ser executado. A linha abaixo executaria o o comando df -m a cada 2 minutos guardando a saída no arquivo /tmp/usodisco.log
*/2 * * * * /bin/df -m >>/tmp/usodisco.log 2>&1
Ao salvar o arquivo e sair do editor a nova tarefa estará agendada e pronta para execução.
Conclusão
Estas cinco dicas não esgotam o assunto a que me propus a trazer. Administrar servidores requer cuidado, disciplina e zelo, todas estas juntas. Como eu disse não existe um manual do tipo “resolva todos os seus problemas” onde cada capítulo atende a uma das suas demandas específicas. Mas você pode e deve criá-lo paulatinamente de forma que com o passar o tempo você tenha subsídios para resolver seus problemas mais rapidamente.
E lembre-se a regra de ouro é: Simplifique as coisas.
Mais um grande artigo! Já tá no face 🙂