Conheça a coleção Academy da Linux New Media Os livros da Coleção Academy são roteiros práticos e objetivos, com didática adequada tanto ao profissional quanto ao estudante da área de TI. Luciano Antonio Siqueira Infraestrutura de Redes Passo a passo da montagem de uma rede de computadores, desde o cabeamento e roteadores até a configuração das máquinas clientes. Configuração e manutenção de serviços essenciais como DNS, compartilhamento de arquivos e acesso remoto. Paulo Henrique Alkmin da Costa Luciano Antonio Siqueira Samba: Máquinas virtuais com VirtualBox com Windows e Linux Como permitir a comunicação de diferentes sistemas operacionais em rede: Windows, Linux, Mac OS X etc. Definição de compartilhamentos de arquivos, impressoras – incluindo a instalação automática de drivers – e utilização do Samba como controlador de domínio (PDC) também para clientes Windows Vista e Windows 7. O conteúdo e o formato dos livros foram desenvolvidos a partir da experiência prática e educacional de seus autores, com foco principal no desenvolvimento de competências, através de conceitos, exemplos detalhados e dicas de quem realmente entende do assunto. O material é indicado tanto para autodidatas que desejam se aperfeiçoar quanto para utilização em escolas. O professor irá se sentir confortável para desenvolver as atividades a partir do livro, que procura atender tanto à expectativa do aprendiz quanto à demanda profissional do mercado de TI. Disponível no site www.LinuxMagazine.com.br Administração de infraestrutura de máquinas virtuais com Sun VirtualBox®. Como trabalhar com sistemas operacionais – Windows, Linux etc – na mesma máquina e simultaneamente. Criação de diferentes modalidades de conexões virtuais, exportação/importação de máquinas virtuais e criação de pontos de recuperação (snapshots). Ferramentas de diagnóstico | REDES Ajuste seu sistema com ferramentas de diagnóstico REDES Pacote de estatísticas Para verificar a saúde de um sistema Linux, os administradores podem recorrer ao vmstat, ao iostat, ao netstat e ao ifstat. Ou você pode simplesmente usar o versátil dstat, que combina as características de várias ferramentas em um único pacote. por Valentin Höbel O s administradores de sistema normalmente usam várias ferramentas para monitorar a carga de recursos em um sistema Linux. Mas para alguns poderosos aplicativos de ponta para monitoramento, a sobrecarga (overhead ou sobrecarga) pode ser bastante elevada, especialmente se você precisar solucionar problemas de desempenho. Algumas ferramentas precisam funcionar durante um período prolongado de tempo e, é claro, utilizam recursos próprios. Este artigo apresenta o vmstat, o iostat, o netstat e o ifstat, quatro programas simples que se encaixam bem em qualquer caixa de ferramentas de administrador. Você também vai aprender sobre a ferramenta multifuncional dstat, que combina muitos recursos de outras ferramentas em um único utilitário. Conhecimento básico Se você quiser interpretar as métricas do sistema, primeiro precisa entender o que elas significam. Muitas métricas referem-se à memória virtual. A RAM física na forma de blocos de memória RAM apresenta uma quantidade tangível, mas os limites são mais obscuros no gerenciamento de memória virtual. O sistema de gerenciamento de memória do sistema operacional é um enigma até mesmo para usuários Linux experientes. Todo processo do Linux precisa de memória para lidar com suas tarefas. Para manter este processo, o sistema operacional aloca memória, isto é, reserva uma quantidade de espaço de memória de A para B, que o programa vai provavelmente usar em algum momento posterior. Mas, pelo fato de nem todo processo ativo precisar de toda a memória que lhe é atribuída o tempo todo, o kernel troca essa memória por uma página de memória no disco (paging out), o que permite que o sistema utilize a memória RAM física disponível para necessidades mais imediatas. Se toda a memória reservada para um processo for gravada no disco, este processo é conhecido como swapping (virtualização de memória). Se o kernel só escreve no disco páginas individuais da RAM alocada, o processo é chamado de paginação (paging). Em contrapartida, o sistema pode carregar essa memória de volta para a RAM em um processo conhecido como paging in. Este processo é absolutamente normal e não é indicativo de uma execução com poucos recursos. Paginar no disco pode ocasionar uma carga pesada em alguns sistemas, com o kernel passando mais tempo gerenciando a memória virtual do que realmente trabalhando nos processos. Munido destas informações, é fácil entender as diferenças entre buffer e cache. Enquanto um buffer contém dados que ainda precisam ser escritos no disco, o cache lê dados já escritos em uma mídia de armazenamento. Troca de contexto (context switching) é outro termo importante que se refere à interrupção de um processo pelo Linux, salvando o contexto de memória para em seguida completar outro processo. Pelo fato de a mudança de contexto ser uma das operações mais custosas em um sistema Linux, se o número de trocas de contexto cresce de alguns Figura 1 Se o vmstat for executado sem quaisquer parâmetros, mostrará apenas os valores médios. Linux Magazine #91 | Junho de 2012 61 REDES | Ferramentas de diagnóstico milhares para mais de 100.000 em um período curto, isso pode indicar o alto uso de recursos desnecessariamente. Munido dessas informações, o administrador Linux pode agora começar a descobrir os problemas de desempenho, executando as ferramentas certas. O vmstat Muitos administradores de sistemas Linux provavelmente estão familiarizados com o vmstat [1]. Essa poderosa ferramenta mostra uma visualização em forma de tabela para processos, uso de RAM e paginação, I/O (entrada e saída de dados) e atividade da CPU. Se você chamar a ferramenta sem nenhum parâmetro, verá somente uma única linha que reflete os valores médios desde a última reinicialização (figura 1). A saída do vmstat normalmente ocupa seis colunas. A primeira parte, procs, contém os valores r (run time) para o número de processos atualmente à espera do momento de serem processados, enquanto b (blocked processes) significa processos em um estado de espera que não pode ser interrompido. Se você olhar para a coluna memory, verá o total de memória virtual em uso em swpd, enquanto free lhe dá o total de RAM não utilizado, buff o buffer de memória, e cache o cache de memória. A área swap dessa saída contém um valor si para a memória alocada do disco para a RAM (swapped in) Curta Longa Função -c --cpu Habilita estatísticas de CPU -d --disk Habilita estatísticas de disco -g --page Habilita estatísticas de paginação -i --int Habilita estatísticas de interrupções -l --load Habilita estatísticas de carga de sistema -m --mem Habilita estatísticas de memória -n --net Habilita estatísticas de rede -s --swap Habilita estatísticas de troca -y --sys Habilita estatísticas de sistema -v --vmstat Saída do vmstat com o dstat Tabela 1 Opções do dstat. 62 por segundo, e assim so se refere ao processo oposto (swapped out). O io mostra o número de blocos lidos pelo sistema (bi) ou escritos (bo) por segundo. Uma olhada rápida na área system revela o número de interrupções (in) e trocas de contexto (cs) por segundo. A coluna final, chamada cpu, é bastante exaustiva e contém valores percentuais: us é a porcentagem de tempo de processamento que os processos no espaço do usuário exigem; sy é a métrica de tempo de processamento exigido pelo kernel para o processamento de eventos do sistema. O id diz respeito ao tempo de inatividade (idle). O último valor na coluna atual, wa, lhe dá os processos em espera por entrada ou saída. O comando vmstat 1 5 executa o programa com uma taxa de atualização de uma vez a cada segundo e cinco linhas de saída (figura 2). Neste exemplo, os processos tiveram de esperar o tempo de execução duas vezes, e o Linux teve que ler os dados do disco ao mesmo tempo (primeira linha de saída). Outra opção útil é vmstat -d para estatísticas de disco; isso lhe dá uma visão um pouco desordenada dos eventos de I/O na memória RAM e no disco. O comando vmstat -s mostra os valores de eventos de CPU e memória em uma lista, o que torna a saída utilizável para avaliação automática em um script. Outro adicional interessante é a opção vmstat -p, seguida por uma indicação da partição que lhe mostra as operações de leitura e escrita somente na partição selecionada. O vmstat é extremamente popular no uso diário, mas peca pela legibilidade da saída de dados, bem como por uma falta de clareza geral. O iostat O iostat [2] foca na entrada e saída de sistemas Linux. A ferramenta fornece estatísticas significativas, mesmo sem opções de linha de comando. A linha avg-cpu (average cpu) contém estatísticas da CPU e dá ideias sobre o estado de carga geral. Na figura 3, o sistema parece ter muito pouco a fazer: os processadores estão 84% ociosos e a porcentagem de processos à espera de I/O é inferior a um. Se seu sistema tem várias CPUs, o iostat mostra os valores médios. A tabela na parte inferior da figura 3 fornece informações sobre os dispositivos de bloco. A coluna tps mostra as transferências por segundo, o que é equivalente ao número de pedidos de I/O para o dispositivo. O parâmetro Blk_read/s (read blocks/s) lhe dá o número de blocos que o Linux lê a partir do dispositivo especificado em 1 segundo. Um bloco normalmente significa 512 bytes. Blk_wrtn/s mostra o acesso de escrita na mesma unidade e as duas últimas colunas, Blk_read e Blk_wrtn, representam as estatísticas globais desde a última inicialização do sistema. Chamar o iostat sem nenhum parâmetro fornece um panorama útil de eventos de I/O. No caso da virtualização, o roubo (steal) também é de interesse para o usuário: ele lhe mostra quanto tempo os processadores virtuais estão gastando ao esperar pelo hypervisor (máquina virtual). Se os números apresentados são muito grandes e portanto difíceis de ler, você pode ajustar a saída para megabytes colocando iostat -m. Para um ajuste mais granular, é possível definir o parâmetro -p e a partição a ser monitorada. O comando iostat www.linuxmagazine.com.br Ferramentas de diagnóstico | REDES -c mostra apenas os valores de CPU. Se você não está interessado em dados dos dispositivos de bloco, pode salvar muitas linhas de saída. Para obter mais visibilidade para os dispositivos de bloco, experimente o iostat -d, que esconde as estatísticas da CPU. Claro, você pode combinar os parâmetros: iostat -d -p drbd4 só mostra o que está ocorrendo atualmente no dispositivo drbd4. O iostat também suporta sistemas de arquivos NFS montados. O iostat -n lhe dá uma visão geral dos diretórios NFS montados e o tráfego atual em blocos e kilobytes por segundo. Se você precisar de mais detalhes sobre as ocorrências de I/O, confira a página do manual, o que mostra detalhes de outras opções úteis, tais como -x, que adiciona mais valores na saída de estatísticas. O netstat O netstat [3] é uma popular ferramenta de diagnóstico de rede tanto no Windows quanto no mundo Linux. Embora a maioria dos sistemas Linux tenha substituído o netstat pelo o ss, os administradores de sistemas ainda gostam de usar a familiar ferramenta netstat, que remonta a um passado de quase 30 anos. A lista de recursos do netstat é tão longa que este artigo só pode examinar as características mais importantes. Por exemplo, o comando netstat --ip, mostra o número de conexões abertas. Você pode digitar o seguinte Figura 2 O vmstat com cinco linhas de saída e uma taxa de atualização de uma vez a cada segundo. Figura 3 O iostat fornece informações sobre CPUs e dispositivos baseados em blocos. Figura 4 A ferramenta de rede netstat mostra as conexões de escuta (listening). netstat --ip | wc -l para contabilizar as conexões. Para mais detalhes da lista de conexões, utilize a opção netstat -l, como mostrado na figura 4 (saída abreviada). A página de manual (man page) do netstat lista outras opções úteis. O ifstat O ifstat [4] lhe dá um breve panorama do tráfego da rede para todas as interfaces de rede que encontrar. Se você executar o programa com as opções -a -b, terá uma breve visuali- Linux Magazine #91 | Junho de 2012 Figura 5 É possível monitorar suas interfaces (de rede) com o ifstat. 63 REDES | Ferramentas de diagnóstico zação geral de todas as suas interfaces, como mostrado na figura 5. O programa mostra os dados enviados e recebidos em kilobytes por segundo. Se os serviços do sistema não estiverem usando todas as interfaces disponíveis, você pode omitir as interfaces não utilizadas com a opção -z. Se você prefere ter a saída do ifstat tão curta quanto possível, digite ifstat -S para restringir a saída para uma linha, que é continuamente atualizada. O dstat: recursos combinados Se esta lista de ferramentas individuais para análise de sistema é muito longa para o seu gosto, você perceberá que o dstat [5] combina praticamente todos os recursos dessas outras ferramentas em um único utilitário. Além disso o dstat usa cores e fixa a largura da coluna, o que significa que os números são sempre apresentados de forma cla- Figura 6 O dstat usa tabelas e cores para melhorar a legibilidade. Figura 7 O dstat sendo executado em uma das partições do disco rígido. ra. A ferramenta foi criada em 2004, é escrita em Python possui licença GPL e utiliza uma abordagem modular. Cada coluna na saída é criada por um módulo. Esses módulos residem no diretório /usr/share/dstat/. Você precisará instalar o dstat na maioria das distribuições. Chamar a ferramenta sem quaisquer argumentos de linha de comando mostra as semelhanças com o vmstat (figura 6). Como o vmstat, o dstat lhe dá todos os valores em uma tabela. A cor vermelha não indica necessariamente um problema. O dstat muda a cor quando os valores excedem o limite definido em um módulo. Essa mudança de cores é projetada para melhorar a legibilidade de dados e chamar a atenção do administrador para as mudanças no comportamento do sistema. Mas se você realmente não gostar do esquema de cores, pode desativá-lo usando --nocolor, ou pode usar --bw para modificar a exibição para um terminal com uma cor de fundo clara. Os cabeçalhos das colunas correspondem aos do vmstat em sua maior parte, portanto não precisam de nenhuma explicação. O que é interessante é o enorme espaço para personalização na estrutura modular do dstat. Para uma visão geral dos plugins disponíveis, digite o comando dstat --list. Chamar o dstat sem nenhum parâmetro equivale a digitar o seguinte por padrão: dstat -c -d -n -g -y Figura 8 Caça dos maiores monopolizadores de memória: o dstat identificou o serviço do LDAP neste caso. Figura 9 Com as opções corretas, você pode usar o dstat como uma espécie de iostat e monitorar a carga da CPU. 64 As opções que podem ser acionadas com um único – dizem respeito às funções embutidas no dstat. As que vêm de módulos externos precisam de dois sinais de menos, --. Os plugins assim podem ser chamados digitando dstat --nome_plugin. Por exemplo, se você digitar dstat --proc-cont, é levado até uma lista de estatísticas permanentemente atualizada com os processos atualmente em execução. Pelo fato de o dstat abranger as versáteis características do vmstat, www.linuxmagazine.com.br Ferramentas de diagnóstico | REDES do iostat, do ifstat e do netstat, mesmo o autor do programa, Dag Wieers, recomenda usar a ferramenta especificamente para determinados casos. Isso significaria, por exemplo, apenas monitorar os discos rígidos e pontos de montagem, o que você poderia fazer com o seguinte comando: dstat -d --disco-util --freespace A figura 7 mostra os resultados (saída abreviada). O dstat divide a saída mesmo nos discos existentes e em partições. Se ocorrem ações de escrita ou exclusão em segundo plano nas partições especificadas, você automaticamente observa as mudanças no dstat. E se você montar diretórios NFS em seu sistema, também vai encontrá-los nas estatísticas. Os usuários comuns do vmstat podem gostar de se concentrar na análise de memória. O seguinte comando: dstat -g -l -m -s --top-mem lhe dá uma visão útil para esta finalidade. Na figura 8 é possível ver como o servidor LDAP, slapd, abarca mais e mais recursos no decorrer do tempo. O comando --top-mem revela que esse processo é o consumidor número um de memória. Refletindo o aumento da memória RAM exigida pelo slapd, o parâmetro memory-usage mos- tra um aumento na memória cache. Enquanto o dstat estava funcionando, o administrador lançou uma pesquisa complexa no LDAP que disse para o daemon ler informações do disco. Os usuários do dstat também podem se concentrar no monitoramento da CPU em um estilo semelhante ao do iostat. Para revelar o processo que consome mais tempo de CPU, você deve digitar o seguinte (figura 9): dstat -c -y -l --proc-cont --top-cpu Como o valor para idl em total-cpu-usage mostra, o sistema não está muito carregado. Os administradores de sistemas atentos também executarão o programa em uma rede, como se segue: dstat -n --socket --tcp --udp Embora os valores medidos para os sockets e o protocolo UDP mostrem pouca mudança neste exemplo, você pode ver na seção net/total que as placas de rede atualmente precisam responder aos pedidos (figura 10). Novamente, o motivo para este aumento de atividade é uma pesquisa LDAP. O dstat usa realce de cor para chamar a atenção sobre a presença de pedidos pendentes. O dstat é rico em recursos, mas também um monstro em opções. Para ajudá-lo a se localizar, a tabela 1 mostra as opções mais importantes a partir dos exemplos apresentados neste artigo. Conclusão Depois de ter descoberto os benefícios do dstat, você provavelmente vai considerar escrever seus próprios plugins para suas necessidades específicas. A linguagem de programação usada para criar plugins para o dstat é o Python. Depois de colocar os módulos que você fez em /usr/share/dstat/, pode executá-los como opção de linha de comando digitando dois sinais de menos antes do nome do módulo. Se você estiver procurando um modelo, confira o arquivo dstat_helloworld.py no diretório de módulos. Você pode até mesmo executar esse código digitando dstat --hello, mas note que ele serve apenas como um exemplo. Se você preferir um exemplo mais significativo e prático, dê uma olhada nos outros módulos no diretório /usr/share/dstat. Você encontrará uma gama de exemplos diferentes, que pode modificar para seus próprios fins. ■ Mais informações [1] Vmstat: http://procps. sourceforge.net/ [2] Iostat: http://sebastien. godard.pagesperso-orange. fr/documentation.html [3] Netstat: http://www.tazenda. demon.co.uk/phil/net-tools/ [4] Ifstat: http://gael. roualland.free.fr/ifstat [5] Dstat: http://dag.wieers. com/home-fez/dstat Gostou do artigo? go? Figura 10 O dstat monitorando sockets TCP e UDP. Linux Magazine #91 | Junho de 2012 Queremos ouvir sua ua opinião. op ão. Fale conosco em [email protected] e.com.b Este artigo no nosso so site: sit http://lnm.com.br/article/6957 articl 957 65