(Trilha LPIC): Parte 2— Planejamento de Capacidade com Linux
De volta aqui pessoal, trazendo a parte 2 do nosso post sobre planejamento de capacidade. 😉Sendo bem breve nesse post, vamos direto aos comandos que ainda estão dentro do planejamento de capacidade mas que gerenciam mais a parte do lado das interfaces de rede e dos processos do sistema, tais como, netstat, ss, pstree, iptraf, top, htop.
Apenas recordando no post anterior, falamos sobre gerenciamento de capacidade com comandos voltados mais para a parte de uso de CPU, disco, memoria e SWAP. Utilizamos os comandos iostat, vmstat, mpstat, sar e w.
Preparou sua VM? Pronto!? Bora então… 🚀🐧
Antes de iniciar, quem não chegou a ler e praticar a parte 1, vou deixar o link aqui para que você leia e faça os testes do seu lado, assim você pode se habituar com os comandos e as opções. 👇
Vamos começar analisando os comandos que são usados para fazer a monitoração das conexões de rede, tabelas de roteamento e as estatísticas de rede. Para isso vamos iniciar com o netstat.
$ netstat (mostra muitos dados sobre conexões de rede, como estatísticas, tabelas de roteamento, interfaces de rede).
Apenas uma observação aqui, nesse ponto de estudo sobre os comandos de Linux, sempre que precisar consultar o que determinado comando faz, ou uma breve descrição dele, use sempre a manpage, whatis e o help. Isso salva, sério mesmo!
Veja a saída usando da opção help, olha a gama enorme de opções que se pode usar sem consultar isso no Google, use o — -help
dos comandos… 😍
Voltando ao netstat… 😄
Se executarmos o comando netstat sem argumentos e opções, temos:
$ netstat (mostra muitas informações sobre estatísticas de interfaces de redes):
$ netstat -i (mostra todas as interfaces de rede do sistema e as estatísticas das interfaces):
Basicamente são os mesmos dados que aparecem quando executamos o comando ifconfig, veja abaixo:
Podemos ver as interfaces, o MTU das interfaces, pacotes recebidos com status ok, transmitidos ok, com erros…
$ netstat -s (mostra as estatísticas por protocolo, as informações de trafego de cada protocolo). Ideal para você analisar como esta o histórico em torno dos protocolos e gerar um relatório caso esteja analisando sua rede ou efetuando algum troubleshooting:
$ netstat -a (mostra todos os sockets, um processo, um arquivo que esta execução no sistema).
$ ss (comando similar ao netstat, seria um novo netstat, reformulado, ele vem como padrão nas distribuições).
Basicamente a diferença entre eles, os dois comandos, netstat e ss são:
$ netstat (pega as informações do kernel, dos arquivos do /proc, o /proc é um reflexo do kernel).
$ ss (pega as informações diretamente da memória do kernel, seria mais preciso, mais confiável).
$ ss -s (mostra um resumo, mostra as estatísticas dos pacotes, mostra o que houve de trafego nas conexões).
$ ss -l (mostra as conexões em estado listening):
$ ss -t (mostra as conexões TCP estabelecidas, mostra os sockets TCP):
$ ss -tnl (mostra as conexões em estado de listening, aguardando conexão):
$ iptraf (esse comando faz o monitoramento da LAN do ambiente em tempo real).
Esse comando não tem instalado por padrão no CentOS, para isso prossiga com a instalação dele conforme abaixo:
$ ansible elliot01 -b -m yum -a 'name=iptraf state=latest' -i inventory.yml
Ahhh, apenas um lembrete, você usa alguma ferramenta de gerenciamento de configuração na sua infraestrutura? Ainda não? Então comece aqui com esse artigo que postei sobre o Ansible… Pô, usa sim, você só tem a ganhar…
Postei mais alguns artigos sobre Ansible no passado… se preferir você pode usar a busca do próprio perfil do Medium, digitando apenas a tecnologia que você quer aprender. Veja como é simples de tudo…
Feito isso, vamos avançar… 😅
Abaixo uma screen da saída do comando iptraf executado diretamente da linha de comando. Como podemos ver ele possui muitas opções para que seja possível monitorar todo o trafego da rede no ambiente…
Nessa outra tela abaixo podemos algumas entradas do protoloco UDP:
Nessa outra tela abaixo podemos ver um resumo da interface de rede (eth0) de forma mais detalhada, isso tudo em tempo real:
Podemos criar filtros com o iptraf, esse recurso é bem útil para casos onde você precisa pesquisar por uma porta especifica ou por um IP especifico da rede, primeiro temos que ir em Filters conforme abaixo:
Depois em Define new filter:
Insira uma breve descrição sobre o filtro que pretende usar:
Agora a parte que você insere o que pretende filtrar com iptraf:
Uma ponto legal do iptraf é que ele é totalmente super fácil de trabalhar, suas telas são bem explicativas, todos os comandos estão na parte inferior da tela, alguns cliques e você esta capturando muitas informações. Não precisa se conectar numa interface X para usar o iptraf, remotamente você faz todo o gerenciamento da LAN.
Destaco também as configurações que você pode fazer:
Basicamente seria isso, não pretendo entrar em muitos detalhes sobre esse comando, mas em outros posts podemos entender melhor e fazer um teste na pratica com o iptraf.
Agora vamos ver alguns comandos que ajudam na verificação do lado dos processos em Linux, ainda muito utilizados para o planejamento de capacidade.
Um comando muito bom para analisar os processos do sistema é o comando pstree:
$ pstree (mostra os processos em forma de árvore)
Esse comando mostra muitas informações sobre todos os processos que estão em execução no sistema.
$ pstree -p (mostra toda a arvore de processos juntamente com os PIDs):
Através de comando eu posso acompanhar todo o histórico do processo pai ate o ultimo que esta em execução, bem útil para analise de aplicações, sockets.
$ lsof (mostra o arquivo relacionado a cada processo):
Vamos fazer um exemplo onde mostrarei que arquivos um determinado processo esta abrindo.
Primeiro temos que criar um arquivo com o editor VIM como teste:
$ vim test_lsof.txt
Vamos listar o processo com o comando ps:
Agora vamos verificar que arquivos esse processo esta gerando:
Veja acima que executei o comando e peguei o PID dele, e logo depois executei um lsof para verificar que arquivos esse processo estava consumindo, podemos ver que abrem muitos arquivos quando executamos um simples editor VIM.
$ top (mostra os processos do sistema em tempo real, os processos que estão consumido mais recursos, você pode ordenar os processos, e mais informações).
Abaixo uma saída curta do comando top:
Resumo básico das informações no topo:
- Mostra quanto tempo o sistema está up.
- Número de usuários conectados
- Load average: média dos últimos 1, 5 e 15 minutos.
- Número de tasks
- A 3 linha é bem útil pois é um modelo do comando iostat, que estudamos no último post:
Sendo:
- 0.0 us (%user)
- 0.3 sy (%system)
- 0.0 ni (%nice)
- 99.7 id (%idle)
Podemos verificar que processos estão consumindo mais CPU apenas usando o comando top. Veja, nesse momento a lista dos top processos que estão consumindo mais CPU:
Bacana de saber também que podemos usar o comando top para listar alguns campos que queremos verificar. Basta executar o comando top e com ele em execução, digitar Shift + F (field de campo).
Abaixo você terá a seguinte saída:
Veja que podemos ordenar também por campos e nesse momento esta ordenado por %CPU:
Agora vamos usar o comando dd para que possamos ver realmente o valor da CPU se alterar, eu deixei ordenado por CPU para que possamos testar:
$ dd if=/dev/zero of=test.iso
Veja a saída do comando top mostrando o dd em execução, consumindo quase 28% (apenas o processo do dd), para saber o total, temos que verificar a linha abaixo, %user apenas com 7,8% de CPU em uso a nível de aplicações de usuário:
$ htop (comando semelhante ao top mas com mais mais detalhes específicos).
Podemos ver abaixo que ele mostra o consumo por CPU, no meu caso como estou usando uma instancia EC2 (t2.micro) mostra apenas uma CPU:
Lembrando que esse comando também não vem instalado por padrão, vou fazer instalação com Ansible:
$ ansible elliot01 -b -m yum -a 'name=htop state=latest' -i inventory.yml
elliot01 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"msg": "Nothing to do",
"rc": 0,
"results": []
}
Com o htop também podemos listar os arquivos de cada processo que estão em execução:
Eu selecionei o processo do auditd, agora apertando a letra L, você pode verificar os arquivos abertos para esse processo, veja:
Agora se você preferir verificar apenas o que um processo esta consumindo de recursos o comando htop pode ser útil, veja:
Eu rodei primeiramente um comando, no caso o comando dd, assim ele pode gerar maiores taxas dos recursos e claro, fica melhor para visualizar, e depois eu rodei um ps para checar o processo, agora vou listar esse processo no htop e ver os recursos (CPU, MEM)sendo consumidos:
Veja acima que ele mostra em tempo real os recursos sendo utilizados pelo processo do comando dd. Muito bom, fala sério!? Novamente… 😅
Basicamente isso seria uma breve introdução sobre o comando htop. Vale a pena olhar a manpage desse comando, assim você pode praticar do seu lado e usar na sua infraestrutura… 🚀
Eu acredito que ficou meio extenso o artigo mas aprendemos MUITOS comandos sobre processos e verificação de rede/conexões do Linux.
Deixo aqui o meu MUITO obrigado por ter chegado ate o fim e feito seus testes. Agradeço também aos professores Ricardo e Bruno Odon por todo o ensinamento.
Ficou com alguma dúvida? Posta aqui que a gente conversa e troca as experiências juntos!
#VAIIII 🚀🐧