Aula #22 - Ferramentas para monitoramento

 O Linux tem uma grande variedade de ferramentas de monitoramento de sistema disponíveis, incluindo top, ps e sar. A maioria desses utilitários abusam dos sistemas de arquivos virtuais como o /proc e o /sys. Embora existam interfaces gráficas (específicas de cada distribuição), nós vamos apresentar métodos de linha de comando.



Abaixo, um resumo organizado por tipo



Ferramentas de monitoramento de Carga do Sistema e Processos


Ferramenta    Propósito

top    Atividade de processos, atualizado dinamicamente (presente no pacote 'procps')

uptime    Por quanto tempo o sistema está rodando e qual é a carga média (presente no pacote 'procps')

ps    Informação detalhada sobre processos (procps)

pstree    Uma árvore de processos mostrando as relações entre processos  (presente no pacote 'psmisc' ou 'pstree')

mpstat    Estatística do uso de vários processadores (presente no pacote 'sysstat')

iostat    Uso da CPU e estatísticas de I/O (presente no pacote 'sysstat')

sar    Exibe e Coleta informações sobre atividade do sistema  (presente no pacote 'sysstat')

numastat    Informações sobre sistemas NUMA (Non-Uniform Memory Architecture) (presente no pacote 'numactl')

strace    Informações sobre todas as chamadas de sistema(system calls) que um processo faz (presente no pacote 'strace')



Ferramentas de Monitoramento de Memória



 Ferramenta        Propósito

free    Resumo breve do uso de memória 
vmstat     Estatísticas detalhadas sobre memória virtual e blocos de I/O, atualizado dinamicamente
pmap     Mapa de memória do Processo

Os 3 acima estão presentes no procps





Ferramentas de monitoramento de I/O




Ferramenta    Propósito

iostat    Utilização de CPU e estatísticas de I/O (sysstat)
sar    Exibe e coleta informações sobre atividades do sistema (sysstat)
vmstat    Estatísticas detalhadas sobre memória virtual e blocos de I/O, atualizado dinamicamente (procps)






Ferramentas de Monitoramento de Rede




Ferramenta    Propósito

netstat    Estatísticas detalhadas de rede
iptraf    Coleta informações em interfaces de red
tcpdump    Análise detalhada de pacotes de rede e tráfego
wireshark    Análise detalhada de tráfego de red







/proc e /sys


Os sistemas de arquivos virtuais /proc e /sys contêm uma grande quantidade de informações sobre o sistema. Além disso, muitos dos arquivos nessas árvores de diretório podem ser alterados, o que é usado para mudar o comportamento do sistema; na maioria dos casos, alterações só podem ser feitas com o usuário root.

Estes sistemas de arquivos são chamados virtuais por existirem totalmente na memória; se você olhar o conteúdo do diretório quando o sistema não estiver em execução, verá apenas um diretório vazio que será usado como ponto de montagem.

Além disso, as informações exibidas são coletadas apenas quando os arquivos são lidos; não há nenhum conteúdo associado aos arquivos antes de algum consulta ter sido feita.

O sistema de arquivos virtual /proc tem longa história com raízes em outras variantes do sistema operacional UNIX e originalmente foi desenvolvido para exibir informações sobre processos do sistema, cada um com seu próprio subdiretório no /proc com todas as informações do processo.

Com o tempo ele cresceu de forma não estruturada para incluir uma série de informações sobre o sistema, como interrupções, memória, rede, etc. Ele ainda é amplamente utilizado.


Vamos dar uma olhada no que encontramos no pseudo sistema de arquivos /proc :


$ ls -F /proc
1/      11214/ 15887/ 19/    26/    3706/ 509/  614/ 7402/ asound/       modules
10/     12/    15891/ 1929/  260/   3707/ 510/  619/ 741/  buddyinfo     mounts@
1017/   1284/  15896/ 1934/  26218/ 3708/ 511/  620/ 742/  bus/          mtrr
1018/   1290/  15899/ 1959/  264/   3709/ 512/  622/ 743/  cgroups       net@
1023/   13/    15905/ 19950/ 265/   3713/ 513/  623/ 744/  cmdline       pagetypeinfo
1031/   1301/  15909/ 2/     267/   3714/ 514/  625/ 761/  config.gz     partitions
10544/  14/    15912/ 2008/  268/   375/  515/  626/ 763/  consoles      sched_debug
10545/  1400/  15919/ 2079/  27/    396/  517/  641/ 7699/ cpuinfo       schedstat
1061/   1444/  15928/ 21/    28/    398/  519/  642/ 8/    crypto        scsi/
10671/  1452/  15938/ 22/    280/   414/  521/  644/ 8036/ devices       self@
10802/  1465/  15941/ 2298/  281/   42/   5302/ 645/ 8226/ diskstats     slabinfo
10803/  1484/  15944/ 23/    29/    43/   537/  648/ 824/  dma           softirqs
10911/  1490/  15957/ 237/   3/     4555/ 5376/ 649/ 8323/ driver/       stat
11/     1503/  15963/ 238/   30/    460/  538/  651/ 8435/ execdomains   swaps
11087/  15466/ 15966/ 239/   30170/ 480/  5503/ 652/ 8443/ fb            sys/
11089/  15471/ 15982/ 24/    31/    481/  5506/ 66/  8444/ filesystems   sysrq-trigger
11090/  15616/ 16/    240/   32/    482/  5515/ 67/  845/  fs/           sysvipc/
11103/  1563/  16016/ 241/   33/    484/  5516/ 68/  8479/ interrupts    timer_list
11104/  15632/ 16030/ 242/   34/    485/  5524/ 684/ 8594/ iomem         timer_stats
11105/  15642/ 16037/ 243/   35/    486/  5525/ 690/ 8633/ ioports       tty/
11123/  15650/ 16039/ 244/   3557/  489/  5530/ 697/ 8643/ irq/          uptime
11124/  15651/ 16065/ 245/   3558/  491/  5531/ 698/ 8644/ kallsyms      version
11125/  1570/  16066/ 246/   3560/  494/  5536/ 699/ 8726/ kcore         vmallocinfo
11126/  1571/  16071/ 247/   36/    496/  559/  7/   8903/ keys          vmnet/
11163/  15719/ 16073/ 248/   3687/  498/  560/  701/ 9/    key-users     vmstat
11165/  15723/ 16089/ 24819/ 3697/  5/    5645/ 709/ 9277/ kmsg          zoneinfo
11166/  15791/ 16112/ 24822/ 3698/  500/  5665/ 712/ 9284/ kpagecount
11187/  1582/  1621/  24823/ 3699/  501/  5678/ 714/ 9816/ kpageflags
11194/  15837/ 16477/ 24879/ 37/    502/  583/  715/ 9853/ latency_stats
11196/  15840/ 16515/ 257/   3702/  503/  584/  717/ 9871/ loadavg
11197/  15844/ 1654/  258/   3703/  504/  599/  718/ 988/  locks
11199/  15847/ 17/    259/   3704/  505/  600/  723/ 9885/ meminfo
11206/  15871/ 18/    2591/  3705/  507/  613/  727/ acpi/ misc







 

Primeiro nós vemos que existe um sub diretório para cada processo do sistema, independente deles estarem dormindo ou executando. Escolhendo um aleatoriamente:


$ ls -lF /proc/17741
total 0
dr-xr-xr-x  2 esl1h esl1h 0 Jun 18 23:57 attr/
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 autogroup
-r--------  1 esl1h esl1h 0 Jun 18 23:57 auxv
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 cgroup
--w-------  1 esl1h esl1h 0 Jun 18 23:57 clear_refs
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:56 cmdline
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 comm
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 coredump_filter
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 cpuset
lrwxrwxrwx  1 esl1h esl1h 0 Jun 18 23:57 cwd -> /home/esl1h/Área de trabalho/
-r--------  1 esl1h esl1h 0 Jun 18 23:57 environ
lrwxrwxrwx  1 esl1h esl1h 0 Jun 18 23:56 exe -> /opt/Mozilla/thunderbird/thunderbird*
dr-x------  2 esl1h esl1h 0 Jun 18 23:56 fd/
dr-x------  2 esl1h esl1h 0 Jun 18 23:57 fdinfo/
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 gid_map
-r--------  1 esl1h esl1h 0 Jun 18 23:56 io
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 limits
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 loginuid
dr-x------  2 esl1h esl1h 0 Jun 18 23:57 map_files/
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:56 maps
-rw-------  1 esl1h esl1h 0 Jun 18 23:57 mem
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:56 mountinfo
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 mounts
-r--------  1 esl1h esl1h 0 Jun 18 23:57 mountstats
dr-xr-xr-x  5 esl1h esl1h 0 Jun 18 23:57 net/
dr-x--x--x  2 esl1h esl1h 0 Jun 18 23:56 ns/
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 numa_maps
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 oom_adj
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 oom_score
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 oom_score_adj
-r--------  1 esl1h esl1h 0 Jun 18 23:57 pagemap
-r--------  1 esl1h esl1h 0 Jun 18 23:57 personality
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 projid_map
lrwxrwxrwx  1 esl1h esl1h 0 Jun 18 23:57 root -> //
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 sched
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 sessionid
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 setgroups
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 smaps
-r--------  1 esl1h esl1h 0 Jun 18 23:57 stack
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:56 stat
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:56 statm
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:56 status
-r--------  1 esl1h esl1h 0 Jun 18 23:57 syscall
dr-xr-xr-x 52 esl1h esl1h 0 Jun 18 23:56 task/
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 timers
-rw-r--r--  1 esl1h esl1h 0 Jun 18 23:57 uid_map
-r--r--r--  1 esl1h esl1h 0 Jun 18 23:57 wchan





nós vemos que ele corresponde ao cliente de E-mail thunderbird. Esse diretório está cheio de informações sobre o estado do processo e dos recursos que ele utiliza. Por exemplo:


$ cat /proc/16477/status

Name:    thunderbird
State:    S (sleeping)
Tgid:    17741
Ngid:    0
Pid:    17741
PPid:    1
TracerPid:    0
Uid:    1000    1000    1000    1000
Gid:    1001    1001    1001    1001
FDSize:    256
Groups:    27 1001
VmPeak:     1140664 kB
VmSize:     1113440 kB
VmLck:           0 kB
VmPin:           0 kB
VmHWM:      277720 kB
VmRSS:      239796 kB
VmData:      559828 kB
VmStk:         404 kB
VmExe:         116 kB
VmLib:      114736 kB
VmPTE:        1544 kB
VmPMD:          16 kB
VmSwap:           0 kB
Threads:    47
SigQ:    1/31061
SigPnd:    0000000000000000
ShdPnd:    0000000000000000
SigBlk:    0000000000000000
SigIgn:    0000000001001000
SigCgt:    0000000f820044ef
CapInh:    0000000000000000
CapPrm:    0000000000000000
CapEff:    0000000000000000
CapBnd:    0000003fffffffff
Seccomp:    0
Cpus_allowed:    ff
Cpus_allowed_list:    0-7
Mems_allowed:    00000000,00000001
Mems_allowed_list:    0
voluntary_ctxt_switches:    79657
nonvoluntary_ctxt_switches:    31137



Outras entradas mostram informações que abrangem todo o sistema. Por exemplo estatísticas sobre interrupções são exibidos por:


$ cat /proc/interrupts

           CPU0       CPU1       CPU2       CPU3      
  0:         46          0          0          0   IO-APIC-edge      timer
  1:          3          4          4          5   IO-APIC-edge      i8042
  8:          1          0          0          0   IO-APIC-edge      rtc0
  9:       1109       1109       1143       1141   IO-APIC-fasteoi   acpi
 12:        874        887       1060        990   IO-APIC-edge      i8042
 16:      21226      14777      23758      16995   IO-APIC  16-fasteoi   ehci_hcd:usb1
 17:        339    1181732       2415        105   IO-APIC  17-fasteoi   rt2800pci
 18:          0          0          0          0   IO-APIC  18-fasteoi   ips, i801_smbus
 23:     141244      22242     189046      31451   IO-APIC  23-fasteoi   ehci_hcd:usb2
 24:          0          0          0          0   PCI-MSI-edge      PCIe PME
 25:          0          0          0          0   PCI-MSI-edge      PCIe PME
 26:          0          0          0          0   PCI-MSI-edge      PCIe PME
 27:          0          0          0          0   PCI-MSI-edge      PCIe PME
 28:     142832      61962     155917      66945   PCI-MSI-edge      0000:00:1f.2
 29:          4          3          4          4   PCI-MSI-edge      mei_me
 30:      43800      54894     121156     101104   PCI-MSI-edge      i915
 31:        135        142        138        137   PCI-MSI-edge      snd_hda_intel
NMI:       3424       3482       3715       3670   Non-maskable interrupts
LOC:    3665117    3630029    2648092    2609029   Local timer interrupts
SPU:          0          0          0          0   Spurious interrupts
PMI:       3424       3482       3715       3670   Performance monitoring interrupts
IWI:          1          1          0          0   IRQ work interrupts
RTR:          2          0          0          0   APIC ICR read retries
RES:     217297     240196     184278     226920   Rescheduling interrupts
CAL:        857        734        950        795   Function call interrupts
TLB:    3542936    4604060    3445009    4173003   TLB shootdowns
TRM:          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0   Threshold APIC interrupts
MCE:          0          0          0          0   Machine check exceptions
MCP:         59         59         59         59   Machine check polls
HYP:          0          0          0          0   Hypervisor callback interrupts
ERR:          0
MIS:          0



Para cada interrupção que vemos tem um tipo associado, quantas vezes ela foi servida em cada CPU, e qual dispositivo está registrado para responder a ela. Também é possível obter estatísticas globais.


A maioria dos parâmetros do sistema que podem ser tunados estão dentro da pasta/proc/sys:


$ ls -F /proc/sys

total 0
dr-xr-xr-x 1 root root 0 Jun 19 00:04 abi/
dr-xr-xr-x 1 root root 0 Jun 19 00:04 debug/
dr-xr-xr-x 1 root root 0 Jun 19 00:04 dev/
dr-xr-xr-x 1 root root 0 Jun 18 19:14 fs/
dr-xr-xr-x 1 root root 0 Jun 18 19:14 kernel/
dr-xr-xr-x 1 root root 0 Jun 19 00:04 net/
dr-xr-xr-x 1 root root 0 Jun 18 19:14 vm/


Cada um desses diretórios contém informações e controles que podem ser tunados (com cuidado):


  •     abi/

    Contém informação binária sobre aplicativos. É raramente usado.
    

  •     debug/

    Parâmetros de depuração(Debugging); No momento contém apenas alguns controles sobre como mensagens de erros e exceções são reportados.
    

  •     dev/

    Parâmetros relativos a dispositivos como cdrom, scsi, raid, e parport.
    

  •     fs/

    Parâmetros de sistemas de arquivo, incluindo cotas, máximos, informações sobre inodes, diretórios, etc.
    

  •     kernel/

    Parâmetros do kernel. Muitas configurações importantes aqui.
    

  •     net/

    Parâmetros de rede. Subdiretórios para ipv4, netfilter, etc.
    

  •     vm/

    Parâmetros da memória virtual. Muitas configurações importantes.



Ver e alterar as configurações pode ser feito com comandos simples. Para ver o máximo de threads permitidas no sistema basta:


$ ls -l /proc/sys/kernel/threads-max
$ cat /proc/sys/kernel/threads-max
62123

Podemos alterar o valor e verificar se a alteração foi aplicada;


$ sudo bash -c 'echo 100000 > /proc/sys/kernel/threads-max'

$ cat /proc/sys/kernel/threads-max
100000

Lembrando o que foi mostrado sobre o sysctl o mesmo pode ser alcançado com:


$ sudo sysctl kernel.threads-max=100000


Ver os parâmetros pode ser feito com usuário comum enquanto alterar requer privilégios do root.







/sys



O sistema de arquivos virtual /sys é parte integrante do que é denominado o Unified Device Model (ou modelo unificado de dispositivos). Conceitualmente, é baseado em uma árvore de dispositivos que contém os barramentos(pci, usb, etc), e dispositivos do sistema. Ele também contém informações que podem ser relacionadas com dispositivos, como módulos do kernel.

Ele tem uma estrutura mais bem definido do que o /proc. A maioria das entradas contém apenas uma linha de texto, embora haja exceções, ao contrário de seu antecessor, que tem muitas entradas multi-linha cujo conteúdo exato pode mudar completamente entre versões do kernel. Assim, esperamos que a interface seja mais estável.

Há propriedades do sistema que que são exibidas tanto no /proc e no /sys , porém esse comportamento é mantido apenas para compatibilidade de utilitários do sistema, e isso está sendo removido aos poucos.


Suporte para o sistema de arquivos virtual sysfs vem habilitado em todos os kernels modernos, e deve ser montado no /sys.

Vamos ver o que podemos encontrar usando o kernel 3.18; vale mencionar que o conteúdo desta pasta tem tendências mutantes. O primeiro nível de diretório mostra:

$ ls -F /sys

block/  bus/  class/  dev/  devices/  firmware/  fs/  hypervisor/  kernel/  module/  power/



que mostra a hierarquia básica de dispositivos. O modelo de dispositivos(device model) da implementação sysfs também inclui informações que não são totalmente relacionadas com o hardware.

Dispositivos de rede podem ser examinados com:


$ ls -lF /sys/class/net

total 0
lrwxrwxrwx 1 root root 0 Jun 19 00:06 eth0 -> ../../devices/pci0000:00/0000:00:1c.5/0000:04:00.0/net/eth0/
lrwxrwxrwx 1 root root 0 Jun 19 00:06 lo -> ../../devices/virtual/net/lo/
lrwxrwxrwx 1 root root 0 Jun 19 00:06 wlan0 -> ../../devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/wlan0/


e investigando a primeira placa Ethernet mostra:


$ ls -l /sys/class/net/eth0/

total 0
-r--r--r-- 1 root root 4096 Jun 19 00:07 addr_assign_type
-r--r--r-- 1 root root 4096 Jun 19 00:07 address
-r--r--r-- 1 root root 4096 Jun 19 00:07 addr_len
-r--r--r-- 1 root root 4096 Jun 19 00:07 broadcast
-rw-r--r-- 1 root root 4096 Jun 19 00:07 carrier
-r--r--r-- 1 root root 4096 Jun 19 00:07 carrier_changes
lrwxrwxrwx 1 root root    0 Jun 19 00:07 device -> ../../../0000:04:00.0
-r--r--r-- 1 root root 4096 Jun 19 00:07 dev_id
-r--r--r-- 1 root root 4096 Jun 19 00:07 dev_port
-r--r--r-- 1 root root 4096 Jun 19 00:07 dormant
-r--r--r-- 1 root root 4096 Jun 19 00:07 duplex
-rw-r--r-- 1 root root 4096 Jun 19 00:07 flags
-rw-r--r-- 1 root root 4096 Jun 19 00:07 gro_flush_timeout
-rw-r--r-- 1 root root 4096 Jun 19 00:07 ifalias
-r--r--r-- 1 root root 4096 Jun 19 00:07 ifindex
-r--r--r-- 1 root root 4096 Jun 19 00:07 iflink
-r--r--r-- 1 root root 4096 Jun 19 00:07 link_mode
-rw-r--r-- 1 root root 4096 Jun 19 00:07 mtu
-r--r--r-- 1 root root 4096 Jun 19 00:07 name_assign_type
-rw-r--r-- 1 root root 4096 Jun 19 00:07 netdev_group
-r--r--r-- 1 root root 4096 Jun 19 00:07 operstate
-r--r--r-- 1 root root 4096 Jun 19 00:07 phys_port_id
-r--r--r-- 1 root root 4096 Jun 19 00:07 phys_switch_id
drwxr-xr-x 2 root root    0 Jun 19 00:07 power
drwxr-xr-x 4 root root    0 Jun 19 00:07 queues
-r--r--r-- 1 root root 4096 Jun 19 00:07 speed
drwxr-xr-x 2 root root    0 Jun 19 00:07 statistics
lrwxrwxrwx 1 root root    0 Jun 19 00:07 subsystem -> ../../../../../../class/net
-rw-r--r-- 1 root root 4096 Jun 19 00:07 tx_queue_len
-r--r--r-- 1 root root 4096 Jun 19 00:07 type
-rw-r--r-- 1 root root 4096 Jun 19 00:07 uevent


$ cat /sys/class/net/eth0/mtu

1500


A intenção dos arquivos dentro do sysfs é ter um valor por linha, mas essa regra não é aplicada com rigor absoluto.



O dispositivo e o driver para o primeiro dispositivo de rede podem ser investigados através das pastas device e (como veremos em breve) driver . Olhando na pasta referente ao primeiro adaptador Ethernet vemos:


$ ls -l /sys/class/net/eth0/device/

-rw-r--r-- 1 root root   4096 Jun 19 00:08 broken_parity_status
-r--r--r-- 1 root root   4096 Jun 18 21:45 class
-rw-r--r-- 1 root root   4096 Jun 19 00:08 config
-r--r--r-- 1 root root   4096 Jun 19 00:08 consistent_dma_mask_bits
-rw-r--r-- 1 root root   4096 Jun 19 00:08 d3cold_allowed
-r--r--r-- 1 root root   4096 Jun 18 21:45 device
-r--r--r-- 1 root root   4096 Jun 19 00:08 dma_mask_bits
lrwxrwxrwx 1 root root      0 Jun 19 00:08 driver -> ../../../../bus/pci/drivers/atl1c
-rw-r--r-- 1 root root   4096 Jun 19 00:08 driver_override
-rw-r--r-- 1 root root   4096 Jun 19 00:08 enable
lrwxrwxrwx 1 root root      0 Jun 19 00:08 firmware_node -> ../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:3c/device:3d
-r--r--r-- 1 root root   4096 Jun 18 21:45 irq
-r--r--r-- 1 root root   4096 Jun 19 00:08 local_cpulist
-r--r--r-- 1 root root   4096 Jun 19 00:08 local_cpus
-r--r--r-- 1 root root   4096 Jun 19 00:08 modalias
-rw-r--r-- 1 root root   4096 Jun 19 00:08 msi_bus
drwxr-xr-x 3 root root      0 Jun 19 00:06 net
-rw-r--r-- 1 root root   4096 Jun 19 00:08 numa_node
drwxr-xr-x 2 root root      0 Jun 19 00:08 power
--w--w---- 1 root root   4096 Jun 19 00:08 remove
--w--w---- 1 root root   4096 Jun 19 00:08 rescan
--w------- 1 root root   4096 Jun 19 00:08 reset
-r--r--r-- 1 root root   4096 Jun 18 21:45 resource
-rw------- 1 root root 262144 Jun 19 00:08 resource0
-rw------- 1 root root    128 Jun 19 00:08 resource2
lrwxrwxrwx 1 root root      0 Jun 19 00:08 subsystem -> ../../../../bus/pci
-r--r--r-- 1 root root   4096 Jun 19 00:08 subsystem_device
-r--r--r-- 1 root root   4096 Jun 19 00:08 subsystem_vendor
-rw-r--r-- 1 root root   4096 Jun 19 00:08 uevent
-r--r--r-- 1 root root   4096 Jun 18 21:45 vendor
-rw------- 1 root root  32768 Jun 19 00:08 vpd

Para ver todos os detalhes que estão disponíveis no sysfs você pode simplesmente explorar os arquivos e pastas.








SAR



sar é a abreviação de Systems Activity Reporter, que pode ser traduzido como gerador de relatórios de sistemas. É uma ferramenta geral para coletar dados sobre atividade e desempenho do sistema e criar relatórios amigáveis.

Ubuntu - Pacote a instalar: atsar (aptitude install atsar)

Em sistemas Linux o backend do sar é o sadc (coletor de dados de atividade do sistema) que acumula estatísticas. O backend armazena as informações na pasta /var/log/sa , uma vez por dia por padrão, mas este número pode ser ajustado. A coleta de dados pode ser iniciada pela linha de comando, mas coletas regulares e periódicas são normalmente configuradas com um job do cron que fica armazenado no diretório /etc/cron.d/sysstat.

O sar então usa estas informações (tanto dos locais padrão quanto a partir de um caminho especificado com a opção -f ) para produzir o relatório.

Para chamar o sar:

$ sar [ opções ] [ intervalo ] [ repetições ]


em que o relatório é repetido após o intervalo(em segundos) pelo número de vezes determinado por repetições(que o padrão é 1). Sem opções adicionais:

$ sar 3 3

Linux  h4ck3r  4.0.0-amd64  #1 SMP Debian 4.0.4-1 (2015-06-03)  x86_64  06/19/2016

00:11:37  cpu %usr  %sys  %nice  %idle                                    _cpu_
00:11:39  all   19     3      0     78
            0    17     3      0     81
            1    15     2      0     83
            2    13     2      0     85
            3    32     5      0     63
00:11:42  all   19     3      0     78
            0    25     5      0     70
            1    16     2      0     82
            2    16     2      0     83
            3    21     2      0     77
00:11:45  all   19     3      0     78
            0    15     3      0     82
            1    14     3      0     84
            2    25     4      0     71
            3    21     2      0     77


emite um relatório sobre o uso da CPU.

Aqui uma lista das principais opções do sar, ou modos, cada um com suas próprias sub-opções:


Opções do sar


 Opção        Significado

-A    Quase toda informação
-b    Estatísticas de taxa de transferência de I/O (semelhante ao iostat)
-B    Estatísticas de páginas incluíndo falhas de páginas(page faults)
-x    Atividade de dispositivos de bloco (semelhante ao iostat -x)
-n    Estatísticas de rede
-P    Estatísticas por CPU (como em sar -P ALL 3)
-q    Comprimento das filas (filas de execução, processos e threads)
-r    Estatísticas de uso de memória e swap
-R    Estatísticas de memória
-u    Uso de CPU(padrão)
-v    Estatísticas sobre inodes, arquivos e file handles
-w    Estatísticas sobre trocas de contexto
-W    Estatísticas sobre o uso do Swap. Entrada e saída de páginas por segundo
-f    Indica arquivo para estrair informações. O arquivo deve ser gerado com a opção -o
-o    Cria um arquivo contedo o que foi registrado, para ser usado com a opção -f



Por exemplo para obter informações sobre memória e swap:


$ sar -r 3 3

00:13:37  memtot memfree buffers   cached  slabmem      swptot swpfree  _mem_
00:13:39   7786M   2806M    113M    1527M     172M          0M      0M
00:13:42   7786M   2821M    113M    1527M     172M          0M      0M
00:13:45   7786M   2846M    113M    1527M     172M          0M      0M
 
Verificar o trafego TCP, novamente, um relatorio de 3 dados capturados após 3 segundos entre um e outro:

$ sar -t 3 3
00:17:47  insegs/s otsegs/s actopen/s pasopen/s  nowopen  socknow sockmax _tcp_
00:17:49     164.5     94.5       0.5       0.0       33       45       0
00:17:52      55.7     42.7       1.3       0.0       34       46       0
00:17:55     129.3     76.3       1.0       0.0       34       46       0

 


Ele possui diversos parametros para monitorar e gerar as estatisticas, além de parametros de output.



O ksar é um programa em java que gera gráficos a partir do sar .  O download pode ser feito a partir do endereço

 http://sourceforge.net/projects/ksar





Mais vistos no mês:

As melhores distribuições Linux para 2017

TuxMath - Tux, do Comando da Matemática. Ensino e diversão a crianças.

Teste de Performance de Rede com Iperf

DHCP - Guia Completo

Aula #14 - Os sistemas de arquivos ext2/ext3/ext4

OPNsense - Firewall Open Source

Ophcrack: Descubra todas as senhas do Windows

SSD no linux

Oracle Linux 7.0 Server com Xfce - Instalação e configurações iniciais