Análise e monitoração de performance em um sistema operacional Linux
By Fernando Mariano
- 9 minutes read - 1831 wordsNeste ú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):
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:
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:
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:
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:
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
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.
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:
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)
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).
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)
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:
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:
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:
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.
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