(Trilha LPIC): Parte 1 — Planejamento de Capacidade com Linux

DevOps from Zero!💻
8 min readDec 20, 2020

--

Novamente aqui, trazendo conteúdo bacana sobre Linux para a comunidade, gostaria de informar que pretendo trabalhar em alguns posts mais voltados para a certificação da LPI e quero mostrar de forma bem resumida, as opções, os comandos e os possíveis casos em que podemos usar ambos. Vamos nessa que tem conteúdo bom pela frente pessoal! 🚀

Nesse primeiro post, vamos falar sobre planejamento de capacidade em servidores Linux, eu vou ser bem simples na demonstração dos comandos e vou adicionar os prints diretamente da instancia EC2 da Amazon (ambiente que eu uso para estudos) e começarei mostrando as opções mais usadas e alguns comandos, como iostat, mpstat, vmstat, sar, w (que são comandos associados a análise de capacidade nos servidores, com esses comandos você pode mensurar e gerir toda a capacidade de recursos nos servidores).

Planejo escrever outras partes do mesmo assunto (planejamento de capacidade) e demonstrar o uso de outros comandos super importantes, como lsof, top, netstat. Então, se você gostar desse post, não deixe de acompanhar os próximos, prometo que vou caprichar. 😜

Se você tem interesse em estudar mais a fundo Linux e aprender seguindo um roadmap técnico e focado, sugiro você a navegar pelo site da LPIC-2 e olhar os objetivos das provas. Informo também que eu não estou fazendo marketing, ou tentando ganhar algo indicando o site da LPI, longe disso… apenas citei isso porque os objetivos da certificação é bem focado na carreira de mercado de um SysAdmin.

Spoiler DevOps: Ahhh, e se você quiser um post depois sobre meu setup de estudos, posso mostrar com detalhes, como eu usei Ansible, Terraform e AWS para executar e configurar minhas instancias na cloud.

E se você ficou curioso, já postei aqui no passado sobre Ansible, Terraform, Docker, AWS, bora ler? 🚀 ☁️ 💻

Vamos começar vendo o comando iostat, para isso temos que instalar o pacote sysstat no nosso sistema, esse comando não tem por padrão no Linux, e esse pacote inclui outros comandos que vamos usar durante esse post:

Ansible (ad-hoc command)

Eu já tinha esse pacote então o Ansible logo avisou, bora prosseguir!

iostat (relatório de uso de CPU, I/O dos dispositivos de armazenamento, tanto CPU, como dos dispositivos).

Se eu digitar o comando iostat sem parâmetros:

iostat Linux command

O que é importante sobre esse comando são as opções que aparecem na linha do avg-cpu, que são:

%user: (mostra os dados de aplicações a nível de usuário, porcentagem de uso da CPU).
%nice: (mostra os processos e a prioridade de cada processo).
%system: (mostra o uso de CPU pelo kernel).
%iowait: (quanto tempo a CPU ficou esperando algum procedimento de entrada e saída em disco, escrita e leitura em disco).
%steal: (usado em maquinas virtuais, tempo que a CPU da maquina virtual ficou esperando os recursos da CPU real).
%idle: (tempo que a CPU ficou em status idle, livre de CPU).

A instância é bem simples, possui apenas uma CPU, e um disco.
Agora vamos ver algumas opções interessantes e bem usadas para esse comando:

  • $ iostat -m (mostra os dados em megabytes):
iostat -m
  • $ iostat -h (mostra os dados de forma mais organizada):
iostat -h
  • $ iostat -ch (mostra apenas os dados de CPU do sistema):
iostat -ch
  • $ iostat -dh (mostra os dados dos dispositivos do sistema):
iostat -dh
  • $ iostat -p (mostra os dados de escrita, I/O de todas as partições):
iostat -ph

Agora, vamos ver um outro método de uso do comando iostat que podemos usar para verificar os dados em tempo real no Linux, veja:

  • $ iostat -c 2 (mostra o relatório de CPU a cada 2 segundos, sendo a primeira entrada a media geral do sistema, e as outras saídas em tempo real):
iostat -c 2

Podemos usar o comando watch também para mostrar esses dados em tempo real:

  • $ watch -n2 iostat (mostra os dados do comando a cada 2 segundos):
watch -n2 iostat

No comando abaixo vou forçar esse consumo de uso utilizando o seguinte comando:

  • $ dd if=/dev/zero of=elliot.iso (criar uma imagem sem especificar o tamanho real):
dd command

Pode notar que ele está em execução:

ps command

Veja como o comando dd muda os valores da saída do comando iostat -c:

iostat command

O comando iostat também pode mostrar os dados de CPU, I/O por intervalos:

  • $ iostat -c 2 5 (mostra o relatório a cada 2 segundos por 5 vezes)
iostat -c 2 5

vmstat: (mostra um relatório, é uma alternativa ao comando iostat, que contém dados de memória, paginação, processos, buffer, blocos de I/O).

Vamos verificar a saída desse comando sem parâmetros:

vmstat command

As duas primeiras colunas são relevantes, veja mais abaixo:

- Procs (r): fila de processamento, esta sendo executado, esta em ready.
- Procs (b): estado de bloqueio, esperando um processo de I/O.

  • $ vmstat -d (mostra um reporte das estatísticas de disco do sistema):
vmstat -d
  • $ vmstat -p /dev/xvda1 (mostra um reporte da partição desse disco):
vmstat -p /dev/xvda1

O comando vmstat também mostra os dados em tempo real com intervalos:

vmstat 2 5

mpstat (mostra informações detalhadas sobre CPU).

mpstat

Pode ver de acordo com o resultado do comando que o mpstat mostra mais detalhes sobre a CPU, contém mais campos do que o comando iostat.

Para mais opções detalhadas desse comando utilize a manpage do mpstat.

sar (mostra o histórico de recursos de hardware do sistema, ele faz parte do pacote sysstat).

Veja abaixo a saída do comando sar:

sar command

Mais abaixo eu explico porque ele coleta tantos dados a cada 10 minutos.

Existe o serviço sysstat:

  • $ systemctl status sysstat:

Outro ponto bacana de saber é que esse comando possui um coletor que roda na cron, ele coleta os dados/histórico dos serviços do sistema.

Temos dois comandos importantes sobre o sar:

whatis command

No arquivo /etc/cron.d/sysstat ele tem configurado por padrão a coleta dos dados a cada 10 minutos, por isso que no comando sar ele mostra a saída a cada 10 minutos:

Ele registra esses logs dentro dos seguintes arquivos de acordo com o sistema:

No padrão Debian ele salva em (/var/log/sysstat).
No padrão Red Hat ele salva em (/var/log/sa).

Agora vamos as opções mais usadas do comando sar:

  • $ sar -f sa 20 (mostra os dados do dia 20/12, histórico do que aconteceu):
sar -f sa 20
  • $ sar -r (mostra os dados/histórico de memoria do sistema):
sar -r

Vale dizer que essa saída do sar -r é basicamente a mesma saída do comando free -m (que mostra dados de memoria/SWAP do sistema).

  • $ sar -S (mostra dados referente a SWAP do sistema):
sar -S
  • $ sar -n DEV (mostra dados das interfaces de rede do sistema):
sar -n DEV

Podemos usar o sar também como os comandos iostat, vmstat e mpstat, mostrando os intervalos a cada tantos segundos:

$ sar -u 2 (mostra dados de CPU a cada 2 segundos):

sar -u 2

Esse comando é bem utilizado para análise de performance, verificação de disco, de memória, de SWAP do sistema.

w: (esse comando mostra alguns dados de quem esta logado no sistema).

Veja abaixo a saída do comando w:

w command
  • Podemos ver que existe um usuário conectado, que é o ec2-user.
  • Esse usuário esta conectado no terminal TTY (terminal local) e PTS (terminal remoto).
  • se usarmos o comando fuser podemos desconectar um usuário que esta conectado sem fazer nada, em IDLE.
  • $ fuser -k /dev/pts (desconecta o usuário da sessão):
fuser command

Bom pessoal, por hoje é apenas isso mesmo, se eu estender mais aqui o artigo ficará imenso… Agradeço a sua leitura/prática aqui com os comandos e não deixe de usar esses comandos em seu ambiente para gerenciamento de capacidade nos sistemas Linux, vai ajudar DEMAIS! 🐧
Agradeço imensamente aos professores de Linux Ricardo Prudenciato e @Bruno Odon. Fica ligado nos próximos posts pessoal!

#VAIIII

--

--

DevOps from Zero!💻

SRE/DevOps Engineer| Lifelong learner | Medium Creator | AWS/Azure certified☁️ | Hashicorp Ambassador | Containers | Tech | Community | Coffee