Exemplos de uso do comando SAR para monitorização do sistema em Linux

, Author

System Activity Reporter é uma ferramenta importante que ajuda os administradores de sistema a obter uma visão geral da máquina do servidor com o status de diferentes métricas importantes em diferentes pontos do tempo.

Se você estiver tendo um problema com o sistema atualmente, como alguns de seus clientes são incapazes de listar alguns dados da base de dados. A primeira coisa que a maioria dos administradores do sistema Linux faz é lembrar o mesmo problema quando ele ocorreu anteriormente, e se você se lembrar do dia de sua ocorrência anterior, então você pode facilmente comparar as estatísticas internas do sistema com as estatísticas atuais.

SAR é muito útil em fazer exatamente isso.

A primeira coisa que precisamos fazer é verificar e confirmar se você tem o utilitário SAR instalado na máquina. Que pode ser verificado listando todas as rpm’s e encontrando para este utilitário.

SAR é um dos utilitários dentro do sysstat. Você pode facilmente baixá-lo e instalá-lo em sua máquina muito facilmente através do YUM. (Mas sim não se preocupe porque a maioria da distribuição vem pré-embalada com a ferramenta sysstatsmiley).

# yum install sysstat

Yeah mas tenha certeza que você tem o repositório epel,rpmformge habilitado para instalar. Caso contrário o seu DVD de distribuição será um bom lugar para procurar o pacote.

SAR (System Activity Reporter) irá dar informações sobre as seguintes coisas:

  1. Atividade do buffer do sistema
  2. Informação sobre chamadas de sistema
  3. Informação sobre dispositivos de bloqueio
  4. Informação sobre todas as paginações
  5. Informação sobre semáforo e alocação de memória
  6. Relatório de utilização e processo da CPU

A principal coisa que precisamos entender com relação ao SAR é que, tudo é feito usando um cron. Por padrão em muitas distribuições Linux você terá um arquivo chamado /etc/cron.d/sysstat.

Vejamos como o SAR realmente funciona.

Se começarmos a pensar na monitoração do sistema, então a ferramenta deve ter todos e cada um dos dados sobre os diferentes aspectos do sistema e deve cobrir todos os intervalos de tempo. O que significa que um sistema de monitoramento deve ser capaz de fornecer as estatísticas da máquina por um determinado tempo.

Não há outra maneira, a não ser tomando todas as métricas e estatísticas da máquina em um intervalo de tempo definido. Reduzir o intervalo de tempo para a coleta de estatísticas irá aumentar a quantidade de estatísticas detalhadas que temos (porque teremos mais dados sobre o sistema).

SAR faz exatamente isso. sar toma as estatísticas de diferentes aspectos da máquina em um intervalo de tempo definido. Então o SAR corre através de CRON.

# cat /etc/cron.d/sysstat# run system activity accounting tool every 10 minutes*/10 * * * * root /usr/lib64/sa/sa1 1 1# gerar um resumo diário da contabilidade de processos aos 23:5353 23 * * * root /usr/lib64/sa/sa2 -A
  • Então pode ser visto no arquivo cron acima para SAR que seu script “sa1” rodando em “/usr/lib64/sa/” a cada 10 minutos
  • E também está rodando um script /usr/lib64/sa/sa2 no final do dia por volta do dia 23.53

Então a primeira entrada cron para SAR(/usr/lib64/sa/sa1) irá rodar a cada 10 minutos, que em seguida irá chamar o utilitário sadc para coletar as estatísticas do sistema e armazená-lo em um arquivo binário (um arquivo por dia)

E a segunda entrada cron irá despejar todo o conteúdo desse arquivo binário em outro arquivo de texto, e purga dados mais antigos que um determinado número de dias, Normalmente 7 dias por defeito(que é mencionado no ficheiro seguinte),

# cat /etc/sysconfig/sysstat# Quanto tempo para manter ficheiros de registo (dias), o máximo é um mêsHISTÓRIA=7

Então você pode modificar essa entrada HISTÓRIA facilmente editando o ficheiro.

Então embora as estatísticas do sistema estejam sendo coletadas a cada 10 minutos através do cron(modifique o cron para rodar a cada 1 minuto para informações mais precisas) Se você quiser ver as estatísticas, então você precisa executar o comando como abaixo.

A saída do comando sar simples é como mostrado abaixo.

12:00:01 AM CPU %utilizador %nice %sistema %iowait %steal %idle12:01:01 AM todos 73.28 0.00 1.25 0.00 0.00 25.4712:02:01 AM todos 7.83 0.00 0.44 0.00 0.00 0.00 91.7312:03:01 AM todos 61.65 0.00 0.70 0.00 0.00 0.00 37.6612:04:01 AM todos 57.85 0.00 0.00 0.82 0.00 0.00 41.3412:05:01 AM todos 4.25 0.00 0.00 0.41 0.00 0.00 95.3412:06:01 AM todos 4.20 0,00 0,22 0,00 0,00 0,00 95,5812:07:01 AM todos 5,05 0,00 0,00 0,33 0,00 0,00 94,6312:08:01 AM todos 4,76 0,00 0,00 0,06 0,00 0,00 95,1812:09:01 AM todos 37.57 0.00 0.37 0.00 0.00 0.00 62.0512:10:01 AM todos 70.04 0.00 0.80 0.00 0.00 0.00 29.1612:11:01 AM todos 5.03 0.00 0.00 0.12 0.00 0.00 0.00 94.84

Pode ser visto a partir da saída que me reporta a saída das estatísticas recolhidas para cada minuto (o que significa que tenho o meu cron com intervalo de 1 minuto), e irá mostrar os detalhes de todo o dia (ou irá mostrar os detalhes recolhidos até quando você digitou o comando).

Entendendo a saída do comando SAR

% utilizador: Isto mostra o tempo total que o processador está gastando em diferentes processos YCX5UKN5ZKEJ

%sys: isto mostra a porcentagem de tempo gasto pelo processador para tarefas do sistema operacional(porque o usuário anterior mostra o tempo gasto para o processo final do usuário)

%iowait: o próprio nome iowait sugere que é o tempo gasto pelo processador esperando por dispositivos(entrada e saída)

%nice: A maioria de vocês deve saber que um usuário pode mudar a prioridade de um processo no linux alterando o valor agradável no Linux. Esta tabela mostra o tempo gasto pela CPU para processos cujo valor nice foi alterado.

%steal: Esta coluna mostra a quantidade de tempo gasto por uma CPU (que é virtualizada), para recursos da CPU física

%idle: Isto sugere o tempo ocioso gasto pelo processador.

Por padrão o sar armazena todos os seus dados em /var/log/sa/ e um dia é nomeado como mostrado abaixo.

s01 – para o primeiro dia do mês

s02 – para o segundo dia do mês

s03,s04…e assim por diante.

-d opção no comando SAR

Esta opção -d pode ser usada para relatar cada uma das atividades relacionadas a diferentes dispositivos conectados ao sistema(bloquear dispositivos). Uma saída típica do comando sar com a opção -d é mostrada abaixo.

12:00:01 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util12:01:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.000012:01:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:01:01 AM dev8-0 55.62 9.98 8317.87 149.72 13.68 245.96 2.61 14.5212:01:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:02:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:02:01 AM dev8-0 1.55 0.00 35.29 22.70 0.01 7.26 1.86 0.2912:02:01 AM dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:03:01 AM dev3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0012:03:01 AM dev3-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

DEV: esta coluna nomeia os dispositivos na máquina, de acordo com os números maiores e menores de um dispositivo de bloco Linux. Você pode verificar isto fazendo um ls -l no diretório /dev. como mostrado abaixo.

brw-r----- 1 root disk 8, 0 Nov 16:29 sdabrw-r----- 1 root disk 8, 1 Nov 16:29 sda1brw-r----- 1 root disk 8, 2 Nov 16:29 sda2

no acima mostrado “ls -l” outut para “sda”, o número maior é “8”,e o menor número é “0”.Assim você pode facilmente identificar o disco mencionado na saída do comando sar.

tps: tps significa transferência por segundo, então ele mostra a transferência por segundo para aquele dispositivo em particular

rd_sec/s: isto mostra o número total de setores naquele dispositivo que está sendo lido

wr_sec/s: se rd_sec/s é setores sendo lidos por segundo então obviamente wr_sec é setores sendo escritos por segundo.

avgrq-sz: esta coluna mostra a média.

await: esta coluna mostra o número total de tempo que o processador esperou por solicitações em relação a IO

%util: esta coluna mostra o uso de cpu em porcentagem quando a solicitação foi gerada

Show Memory usage in SAR command

a opção -r disponível no comando sar é muito útil. mostra a memória,swap,cached memory etc em cada intervalo ou intervalo de tempo requerido.

02:20:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad02:30:01 AM 609500 1487652 70.94 242420 777560 1075980 364 0,03 36002:40:01 AM 609500 1487652 70,94 242424 777568 1075980 364 0,03 36002:50:01 AM 609500 1487652 70,94 242424 777592 1075980 364 0,03 36003:00:01 AM 608980 1488172 70,96 242424 777600 1075980 364 0.03 36003:10:01 AM 608584 1488568 70.98 242424 777628 1075980 364 0.03 36003:20:01 AM 608584 1488568 70.98 242424 777648 1075980 364 0.03 360
na saída acima a maioria das colunas são auto-explicativas(e a maioria das saídas estão em KB).
kbmemfree: isto mostra a quantidade de memória livre
Kbmemused: memória utilizada
%memused: percentagem de memória utilizada
kbbuffers: memória buffer utilizada pelo kernel.
kbcached: memória em cache usada pelo kernel
todas as outras entradas para memória são swap(free,used,percentage etc)

Como obter métricas de um determinado dia usando SAR em linux

Como mencionado antes de todas as métricas para um determinado dia são salvas em sa< dia do mês> sábio. Assim, se eu quiser saber minhas métricas para o 27º dia do mês posso facilmente descobrir isso como mostrado abaixo.
# sar -f /var/log/sa/sa27Linux 2.6.18-194.el5xen (arquivo.r) 27/11/2012 02:20:01 AM CPU %utilizador %nice %sistema %iowait %steal %idle02:30:01 AM todos 2.58 0.00 0.70 1.12 0.05 95.5502:40:01 AM todos 2.56 0.00 0.69 1.05 0.04 95.6602:50:01 AM todos 2.64 0.00 0.65 1.15 0.05 95.5003:00:01 AM todos 3.27 0.00 0.71 1.12 0.04 94.86 94.42>
no comando acima passamos /var/log/sa/sa27 como argumento, pois eu precisava de estatísticas para aquele dia…passe o sa<dia do mês>como você precisa no comando acima

Como buscar métricas SAR para uma hora específica em uma data em particular

isso pode ser conseguido passando outro argumento como mostrado abaixo.

# sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00Linux 2.6.18-194.el5xen (archive.r) 11/27/2012 02:20:01 AM CPU %utilizador %nice %sistema %iowait %steal %idle02:30:01 AM todos 2.58 0,00 0,70 1,12 0,05 95,5502:40:01 AM todos 2,56 0,00 0,69 1,05 0,04 95,6602:50:01 AM todos 2,64 0,00 0,65 1,15 0,05 95,5003:00:01 AM todos 3,27 0,00 0,71 1,12 0,04 94.8603:10:01 AM todos 2,72 1,06 0,75 1,09 0,04 94,33Média: todos 2,76 0,21 0,70 1,11 0,04 95. SAR pode nos mostrar com precisão as estatísticas da máquina de um determinado dia em uma determinada hora...então é muito mais fácil identificar os gargalos.
Utilizar -A opção junto com o comando acima mostrará TODAS (todas as métricas coletadas pelo sar).
sar -f /var/log/sa/sa27 -s 02:20:00 -e 03:20:00 -A
A saída será elaborada. e você obterá quase tudo no sar a partir dessa opção -A na sua tela!

Mostrar estatísticas de rede usando o comando sar

comandoar mostra até mesmo estatísticas de rede. Isto pode ser feito usando a opção -n DEV no comando sar.

# sar -n DEVLinux 2.6.18-194.el5xen (arquivo.r) 27/11/2012 02:20:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s02:30:01 AM lo 0.01 0.01 0.01 0.77 0.77 0.00 0.00 0.00 0.0002:30:01 AM eth0 12.30 0.12 1285.06 27.59 0.00 0.00 0.00 0.0002:30:01 AM eth1 14.45 0.00 1399.34 0.00 0.00 0.00 0.00 0.0002:30:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0002:40:01 AM lo 0.01 0.01 0.01 0.77 0.77 0.00 0.00 0.00 0.0002:40:01 AM eth0 10.65 0.12 1139.38 27.00 0.00 0.00 0.00 0.0002:40:01 AM eth1 13.96 0.00 1352.87 0.00 0.00 0.00 0.00

IFACE: significa o nome da interface da placa nic card

rxpck/s: mostra o total de pacotes recebidos por segundo

txpck/s:pacotes transmitidos por segundo

rxcmp/s: pacotes comprimidos recebidos

txcmp/s: pacotes comprimidos transmitidos

rxmcst/s: pacotes multicasted por segundo.

Algumas outras métricas que podem ser determinadas usando sar

-y opção no sar: pode ser usada para determinar tty detalhes

-X opção no sar para obter detalhes de um processo em particular. Você precisa passar pid como argumento para esta opção.

-n opção SOCK no sar: esta opção relatará todos os detalhes do soquete.

Deixe uma resposta

O seu endereço de email não será publicado.