Se necesita una salida de iostat muy específica en tiempo real.

Se necesita una salida de iostat muy específica en tiempo real.

¿Existe alguna forma de obtener el resultado de iostat -m y agregar solo la columna en espera de la salida extendida en tiempo real? Sé que esta pregunta suena loca, pero necesito poder obtener todas esas columnas en tiempo real sin enviarlas a un archivo o ejecutar iostat dos veces, ya que eso daría resultados engañosos. Este es centos 6.2 iostat 9.0.4. núcleo 2.6.36.4. Entonces, para resumir, necesito esto.

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

y necesito agregarle await para que se vea así.

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

¿Estoy soñando? ¿Estoy viendo esto de manera incorrecta? ¿Necesito compilar mi propio iostat?

Gracias de antemano.

Respuesta1

No estoy seguro de cómo obtener el iostatformato que buscas. Sin embargo, la herramienta que utilizo para este tipo de seguimiento es personalizable hasta el punto de que se pueden mostrar los campos relevantes. También es excelente para generar datos con fines de reproducción y gráficos.

yo sueloMonitoreo colectivo(disponible en CentOS a través de yum), y elbanderas de verificación de discodebería darte lo que necesitas:

collectl -sD --dskfilt sda

Salida de muestra (puede cambiar las unidades y columnas impresas):

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

Respuesta2

¿Por qué no crear un contenedor en bash?

La versión de una sola línea se vería así:

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

Esto ejecutará iostat dos veces y devolverá el valor correcto de espera (que es la séptima columna)

Puedes hacer lo mismo con vmstat pasando la columna derecha a awk para obtener toda la CPU iowait. Por ejemplo :

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

Tenga en cuenta que iostat y vmstat son diferentes en cada distribución de Linux y debe elegir la columna correcta.

Respuesta3

Esto parece algo que debería poder controlarse con munin, grafito, etc.

EDITAR: Si su sistema tiene watch, puede configurar el iostat para que se ejecute automáticamente un número determinado (o repetido infinitamente) de veces, con un espacio específico entre ejecuciones. awk¡Descubre los campos que realmente deseas!

Respuesta4

Al volver a leer la pregunta original, si el autor busca información en tiempo real, estoy de acuerdo en que recopilar es el camino a seguir. por eso lo escribí. ;)

Si hay algo específico que esté intentando hacer con los datos, tal vez pueda ayudar, pero necesitaría saber más. En cuanto a qué tan en tiempo real desea ser, puede elegir cualquier intervalo de monitoreo de menos de un segundo que desee.

-marca

información relacionada