saída iostat muito específica necessária em tempo real

saída iostat muito específica necessária em tempo real

Existe alguma maneira de obter a saída de iostat -m e adicionar apenas a coluna await da saída estendida em tempo real? Eu sei que esta pergunta parece maluca, mas preciso ser capaz de obter todas essas colunas em tempo real sem gerar saída para um arquivo ou executar o iostat duas vezes, pois isso daria resultados enganosos. Este é o centos 6.2 iostat 9.0.4. núcleo 2.6.36.4. Então, para resumir, preciso disso.

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda               0.56         0.00         0.00        324        485

e preciso adicionar await para que fique assim.

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn   await
sda               0.56         0.00         0.00        324        485   10.72

Estou sonhando? Estou olhando para isso da maneira errada? Preciso compilar meu próprio iostat?

Desde já, obrigado.

Responder1

Não sei como obter a iostatformatação que você procura. A ferramenta que utilizo para esse tipo de monitoramento, porém, é personalizável a ponto de você poder exibir os campos relevantes. Também é excelente para gerar dados para fins de reprodução e gráficos.

eu usoMonitoramento de coleta(disponível no CentOS via yum) e osinalizadores de verificação de discodeve lhe dar o que você precisa:

collectl -sD --dskfilt sda

Exemplo de saída (você pode alterar as unidades e colunas impressas):

collectl -sD --dskfilt sdb
waiting for 1 second sample...

# DISK STATISTICS (/sec)
#          <---------reads---------><---------writes---------><--------averages--------> Pct
#Name       KBytes Merged  IOs Size  KBytes Merged  IOs Size  RWSize  QLen  Wait SvcTim Util
sdb              0      0    0    0     336      0   52    6       6     0     0      0    1
sdb             16      0    1   16     389      1   52    7       7     0     0      0    3
sdb              0      0    0    0    1236      9  109   11      11     0     0      0    0
sdb             16      0    1   16     676      3  140    5       4     0     1      1   14
sdb              0      0    0    0      64      1   16    4       4     0     2      1    2

Responder2

Por que não criar um wrapper no bash?

A versão de uma linha seria semelhante a:

iostat 1 2 | grep -w sda | tail -1 | awk {'print $7'}

Isso executará o iostat duas vezes e retornará o valor correto de await (que é a 7ª coluna)

Você pode fazer o mesmo com vmstat passando a coluna direita para awk para obter o iowait inteiro da CPU. Por exemplo :

vmstat 1 2 | tail -1 | awk {'print $16'}

Observe que iostat e vmstat são diferentes em cada distribuição Linux e você deve escolher a coluna certa.

Responder3

Isso parece algo que deveria ser monitorado com munin, grafite, etc.

EDITAR: Se o seu sistema tiver watch, você pode configurar o iostat para executar automaticamente um determinado (ou repetir infinitamente) número de vezes, com um intervalo especificado entre as execuções! awkos campos que você realmente deseja!

Responder4

relendo a pergunta original, se o autor estiver procurando informações em tempo real, concordo que o collectl é o caminho a seguir. foi por isso que escrevi. ;)

se houver alguma coisa específica que você esteja tentando fazer com os dados, talvez eu possa ajudar, mas preciso saber mais. quanto ao tempo real que você deseja, você pode escolher qualquer intervalo de monitoramento de menos de um segundo que desejar.

-marca

informação relacionada