Análise e monitoração de performance em um sistema operacional Linux
Neste último artigo sobre ferramentas de monitoração via linha de comando para sistemas operacionais Linux a aplicação abordada será o sysstat. O pacote sysstat contém o comando sar que exibe um relatório sobre o passado do uso de recursos do sistema, dessa forma você pode utilizá-lo para analisar um incidente que foi reportado em algumas horas ou dias atrás.
sysstat – coleta, reporta e salva informações de performance do sistema
Instalação (Ubuntu e derivados do Debian):
1 2 3 4 |
aptitude install sysstat vi /etc/default/sysstat ENABLED="true" (deixe como 'true') /etc/init.d/sysstat restart |
A alteração em /etc/default/sysstat é necessária pois no Ubuntu e outros sistemas derivados do Debian, o serviço não é ativado durante a instalação e consequentemente nenhuma informação será salva e exibida pelo comando sar.
Um usuário pode entrar em contato para reportar um incidente que aconteceu há algumas horas ou dias e o iotop, top, htop e atop – foram abordados na primeiro e segundo artigo sobre ferramentas de monitoração aqui no blog mariano.eng.br – não são úteis, pois só funcionam para monitoração em tempo real ou com visualização de coleta acumulada, pois ainda se restringem ao momento da execução do aplicativo.
Para resolver este problema você pode usar o sysstat que é um coletor de métricas sobre o uso de recursos do sistema operacional Linux e com isso exibe relatórios sobre CPU, memória, disco, swap e outras métricas. Por padrão o sysstat salva os dados a cada 10 minutos dentro de arquivos de texto. Cada arquivo armazena um dia de monitoração, no Ubuntu o log fica localizado em /var/log/sysstat/, mas por padrão o comando sar – que exibe os relatórios – exibe somente o dia corrente caso não seja especificado por parâmetro. Mas ainda é possível visualizar as métricas em tempo real.
Alguns exemplos de utilização do comando sar:
- Visualização de uso de CPU de todos os processadores juntos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
mariano@piracaia:~$ sar Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 CPU %user %nice %system %iowait %steal %idle 00:05:01 all 3,24 0,00 0,69 0,28 0,00 95,79 Average: all 3,24 0,00 0,69 0,28 0,00 95,79 21:42:01 LINUX RESTART 21:45:01 CPU %user %nice %system %iowait %steal %idle 21:55:01 all 4,61 0,00 1,04 4,57 0,00 89,78 22:05:01 all 2,99 0,01 0,54 0,26 0,00 96,21 22:15:01 all 2,49 0,18 0,65 2,37 0,00 94,30 Average: all 3,36 0,06 0,74 2,40 0,00 93,43 |
- Visualização de uso de CPU para cada processador/core de forma individual:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
mariano@piracaia:~$ sar -P ALL Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 CPU %user %nice %system %iowait %steal %idle 00:05:01 all 3,24 0,00 0,69 0,28 0,00 95,79 00:05:01 0 4,25 0,00 0,93 0,04 0,00 94,77 00:05:01 1 2,11 0,00 0,37 0,05 0,00 97,47 00:05:01 2 4,44 0,00 1,07 0,21 0,00 94,28 00:05:01 3 1,33 0,00 0,47 1,64 0,00 96,57 00:05:01 4 4,34 0,00 0,96 0,07 0,00 94,63 00:05:01 5 2,58 0,00 0,28 0,02 0,00 97,12 00:05:01 6 4,77 0,00 0,94 0,14 0,00 94,15 00:05:01 7 2,09 0,00 0,51 0,10 0,00 97,30 Average: CPU %user %nice %system %iowait %steal %idle Average: all 3,24 0,00 0,69 0,28 0,00 95,79 Average: 0 4,25 0,00 0,93 0,04 0,00 94,77 Average: 1 2,11 0,00 0,37 0,05 0,00 97,47 Average: 2 4,44 0,00 1,07 0,21 0,00 94,28 Average: 3 1,33 0,00 0,47 1,64 0,00 96,57 Average: 4 4,34 0,00 0,96 0,07 0,00 94,63 Average: 5 2,58 0,00 0,28 0,02 0,00 97,12 Average: 6 4,77 0,00 0,94 0,14 0,00 94,15 Average: 7 2,09 0,00 0,51 0,10 0,00 97,30 |
- Relatório em uma data especifica. No exemplo 23 do mês corrente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
mariano@piracaia:~$ sar -f /var/log/sysstat/sa25 Linux 3.8.0-30-generic (piracaia) 25-09-2013 _x86_64_ (8 CPU) 20:45:01 LINUX RESTART 20:55:01 CPU %user %nice %system %iowait %steal %idle 21:05:01 all 0,15 0,13 0,12 1,56 0,00 98,04 21:15:01 all 0,10 0,00 0,07 0,01 0,00 99,82 21:25:01 all 0,10 0,00 0,07 0,01 0,00 99,81 21:35:02 all 0,10 0,00 0,08 0,01 0,00 99,82 21:45:01 all 0,10 0,00 0,07 0,01 0,00 99,82 21:55:01 all 0,10 0,00 0,07 0,01 0,00 99,82 22:05:01 all 0,10 0,00 0,08 0,01 0,00 99,82 22:15:01 all 0,10 0,00 0,07 0,01 0,00 99,81 22:25:01 all 1,75 0,38 0,50 5,72 0,00 91,65 22:35:01 all 0,98 0,00 0,34 0,82 0,00 97,86 22:45:02 all 3,51 0,00 0,89 0,77 0,00 94,83 22:55:01 all 3,50 0,00 0,91 0,62 0,00 94,97 23:05:01 all 3,19 0,00 0,78 0,47 0,00 95,56 23:15:01 all 2,77 0,00 0,75 0,62 0,00 95,86 23:25:01 all 2,73 0,00 3,43 1,69 0,00 92,15 23:35:02 all 3,24 0,00 1,23 0,66 0,00 94,86 23:45:01 all 3,13 0,00 1,92 0,96 0,00 93,99 23:55:01 all 3,96 0,00 0,82 1,13 0,00 94,10 23:59:01 all 2,86 0,00 0,82 0,57 0,00 95,75 00:00:01 all 3,35 0,00 0,79 0,26 0,00 95,59 Average: all 1,68 0,03 0,68 0,83 0,00 96,79 |
- Com data especifica (dia 23) e exibição até 21:00 horas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mariano@piracaia:~$ sar -f /var/log/sysstat/sa23 -e 20:00:00 Linux 3.8.0-30-generic (piracaia) 23-09-2013 _x86_64_ (8 CPU) 00:00:01 CPU %user %nice %system %iowait %steal %idle 00:05:01 all 0,74 0,00 0,88 0,11 0,00 98,26 00:15:01 all 0,76 0,00 0,87 0,08 0,00 98,28 00:25:01 all 1,77 0,00 1,72 0,42 0,00 96,10 00:35:01 all 2,21 0,00 2,77 1,63 0,00 93,38 00:45:01 all 2,49 0,00 0,96 0,48 0,00 96,07 Average: all 1,69 0,00 1,50 0,59 0,00 96,21 19:31:45 LINUX RESTART 19:35:01 CPU %user %nice %system %iowait %steal %idle 19:45:01 all 2,50 0,43 0,62 7,10 0,00 89,34 19:55:01 all 3,42 0,13 6,52 7,91 0,00 82,02 Average: all 2,96 0,28 3,57 7,51 0,00 85,69 |
- Com data específica (dia 23) e exibição com início às 21:00 horas
1 2 3 4 5 6 7 8 9 10 11 12 |
mariano@piracaia:~$ sar -f /var/log/sysstat/sa23 -s 22:00:00 Linux 3.8.0-30-generic (piracaia) 23-09-2013 _x86_64_ (8 CPU) 22:05:01 CPU %user %nice %system %iowait %steal %idle 22:15:01 all 3,07 0,00 1,09 0,97 0,00 94,87 22:25:01 all 2,59 0,00 0,58 0,35 0,00 96,48 22:35:01 all 3,55 0,00 0,80 0,31 0,00 95,34 22:45:01 all 5,30 0,00 1,51 0,82 0,00 92,37 22:55:01 all 6,86 0,00 1,82 0,33 0,00 91,00 23:05:02 all 11,50 0,00 2,59 0,25 0,00 85,66 23:15:01 all 9,87 0,00 2,32 0,37 0,00 87,44 Average: all 6,10 0,00 1,53 0,49 0,00 91,89 |
- Relatório de operações de entrada e saída no disco. O comando sar utiliza a nomenclatura tps para IOPS.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mariano@piracaia:~$ sar -b Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 tps rtps wtps bread/s bwrtn/s 00:05:01 9,32 1,02 8,30 37,90 157,09 Average: 9,32 1,02 8,30 37,90 157,09 21:42:01 LINUX RESTART 21:45:01 tps rtps wtps bread/s bwrtn/s 21:55:01 51,47 34,45 17,02 1318,86 394,59 22:05:01 7,76 0,34 7,42 10,89 126,42 22:15:01 65,61 55,44 10,17 832,17 564,24 22:25:01 3,49 0,05 3,44 2,31 96,75 Average: 32,08 22,57 9,51 541,05 295,50 |
- Relatório de atividades para cada dispositivo de bloco:
1 2 3 4 5 6 7 8 9 10 |
mariano@piracaia:~$ sar -d Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 00:05:01 dev8-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 00:05:01 dev8-16 9,32 37,90 157,09 20,91 0,10 10,32 4,51 4,21 00:05:01 dev252-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Average: dev8-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Average: dev8-16 9,32 37,90 157,09 20,91 0,10 10,32 4,51 4,21 Average: dev252-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 |
- Relatório de atividades de dispositivos de rede (algumas métricas exibidas – número de pacotes e número de kilobytes por segundo)
1 2 3 4 5 6 7 8 9 10 11 12 |
mariano@piracaia:~$ sar -n DEV Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 00:05:01 vboxnet0 0,00 0,03 0,00 0,01 0,00 0,00 0,00 00:05:01 eth0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 00:05:01 lo 0,43 0,43 0,09 0,09 0,00 0,00 0,00 00:05:01 wlan0 16,50 14,71 8,46 5,36 0,00 0,00 0,00 Average: vboxnet0 0,00 0,03 0,00 0,01 0,00 0,00 0,00 Average: eth0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Average: lo 0,43 0,43 0,09 0,09 0,00 0,00 0,00 Average: wlan0 16,50 14,71 8,46 5,36 0,00 0,00 0,00 |
- Relatório de atividades de dispositivos de rede (principalmente erros – pacotes mal formados, erros que ocorreram durante a transmissão, colisões, transmissão e recebimento de pacotes dropados).
1 2 3 4 5 6 7 8 9 10 11 12 |
mariano@piracaia:~$ sar -n EDEV Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s 00:05:01 vboxnet0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 00:05:01 eth0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 00:05:01 lo 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 00:05:01 wlan0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Average: vboxnet0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Average: eth0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Average: lo 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Average: wlan0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 |
- Relatório de fila de processos e carga do sistema (load average)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mariano@piracaia:~$ sar -q Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 00:05:01 4 661 0,17 0,32 0,43 0 Average: 4 661 0,17 0,32 0,43 0 21:42:01 LINUX RESTART 21:45:01 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 21:55:01 5 668 0,50 0,97 0,85 0 22:05:01 6 658 0,36 0,42 0,58 0 22:15:01 5 668 0,02 0,29 0,50 0 22:25:01 8 664 0,22 0,23 0,38 0 Average: 6 664 0,28 0,48 0,58 0 |
- Utilização de memória RAM:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mariano@piracaia:~$ sar -r Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact 00:05:01 5704840 6547504 53,44 98732 4987172 4807432 19,40 1667052 4377184 Average: 5704840 6547504 53,44 98732 4987172 4807432 19,40 1667052 4377184 21:42:01 LINUX RESTART 21:45:01 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact 21:55:01 9599776 2652568 21,65 65048 1227272 4768920 19,24 1273744 999792 22:05:01 9831924 2420420 19,75 66656 1228404 4448680 17,95 1053764 990428 22:15:01 9283268 2969076 24,23 185928 1428228 4740992 19,13 1394736 1111236 22:25:01 9308608 2943736 24,03 186964 1428732 4657204 18,79 1402364 1076788 Average: 9505894 2746450 22,42 126149 1328159 4653949 18,78 1281152 1044561 |
- Utilização de espaço na partição swap:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mariano@piracaia:~$ sar -S Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 kbswpfree kbswpused %swpused kbswpcad %swpcad 00:05:01 12528636 0 0,00 0 0,00 Average: 12528636 0 0,00 0 0,00 21:42:01 LINUX RESTART 21:45:01 kbswpfree kbswpused %swpused kbswpcad %swpcad 21:55:01 12528636 0 0,00 0 0,00 22:05:01 12528636 0 0,00 0 0,00 22:15:01 12528636 0 0,00 0 0,00 22:25:01 12528636 0 0,00 0 0,00 Average: 12528636 0 0,00 0 0,00 |
- Relatório de estatísticas de operações da partição swap:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mariano@piracaia:~$ sar -W Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 00:00:01 pswpin/s pswpout/s 00:05:01 0,00 0,00 Average: 0,00 0,00 21:42:01 LINUX RESTART 21:45:01 pswpin/s pswpout/s 21:55:01 0,00 0,00 22:05:01 0,00 0,00 22:15:01 0,00 0,00 22:25:01 0,00 0,00 Average: 0,00 0,00 |
- Informações exibidas em tempo real, digite o comando abaixo para que o relatório seja atualizada a cada 2 segundos por 10 vezes sobre o uso do processador.
1 2 3 4 5 6 7 8 9 10 11 12 |
mariano@piracaia:~$ sar -u 2 10 Linux 3.8.0-30-generic (piracaia) 26-09-2013 _x86_64_ (8 CPU) 22:29:54 CPU %user %nice %system %iowait %steal %idle 22:29:56 all 0,25 0,00 0,25 0,13 0,00 99,37 22:29:58 all 0,25 0,00 0,13 0,00 0,00 99,62 22:30:00 all 0,31 0,00 0,19 0,00 0,00 99,50 22:30:02 all 0,63 0,00 0,31 0,31 0,00 98,75 22:30:04 all 0,31 0,00 0,06 0,00 0,00 99,62 22:30:06 all 0,25 0,00 0,19 0,00 0,00 99,56 22:30:08 all 0,44 0,00 0,06 0,19 0,00 99,31 22:30:10 all 0,31 0,00 0,13 0,00 0,00 99,56 |
Mais informações: man sar ou man sysstat
1 Resultado
[…] “O htop, iotop, top e atop são úteis para a monitoração de performance em tempo de execução por linha de comando. Conheça o sysstat para analisar o passado.” [referência: mariano.eng.br] […]