очень специфичный вывод iostat, необходимый в реальном времени

очень специфичный вывод iostat, необходимый в реальном времени

Есть ли способ получить вывод iostat -m и добавить только столбец await из расширенного вывода в реальном времени? Я знаю, что этот вопрос звучит безумно, но мне нужно иметь возможность получить все эти столбцы в реальном времени без вывода в файл или запуска iostat дважды, так как это даст вводящие в заблуждение результаты. Это centos 6.2 iostat 9.0.4. ядро ​​2.6.36.4. Итак, подведем итог: мне нужно это.

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

и мне нужно добавить к нему await, чтобы он выглядел так.

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

Я сплю? Я смотрю на это не так? Мне нужно скомпилировать свой собственный iostat?

Заранее спасибо.

решение1

Я не уверен, как получить iostatнужное вам форматирование. Однако инструмент, который я использую для этого типа мониторинга, настраивается до такой степени, что вы можете отображать соответствующие поля. Он также отлично подходит для генерации данных для воспроизведения и построения графиков.

я используюМониторинг сбора(доступно в CentOS через yum), а такжефлаги проверки дискадолжно дать вам то, что вам нужно:

collectl -sD --dskfilt sda

Пример вывода (вы можете изменить единицы измерения и печатаемые столбцы):

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

решение2

Почему бы не создать оболочку в bash?

Однострочная версия будет выглядеть так:

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

Это запустит iostat дважды и вернет правильное значение await (которое находится в 7-м столбце)

Вы можете сделать то же самое с vmstat, передав правый столбец в awk, чтобы получить весь CPU iowait. Например:

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

Обратите внимание, что iostat и vmstat различаются в каждом дистрибутиве Linux, и вам нужно выбрать правильный столбец.

решение3

Похоже, что это можно контролировать с помощью мунина, графита и т. д.

РЕДАКТИРОВАТЬ: Если в вашей системе есть watch, вы можете настроить iostat на автоматический запуск заданного (или бесконечно повторяющегося) количества раз с указанным интервалом между запусками! awkдля полей, которые вам действительно нужны!

решение4

перечитывая исходный вопрос, если автор ищет информацию в реальном времени, я согласен, что collectl - это правильный путь. Вот почему я это написал. ;)

Если вы пытаетесь сделать с данными что-то конкретное, возможно, я мог бы помочь, но мне нужно знать больше. Что касается того, насколько вы хотите быть в режиме реального времени, вы можете выбрать любой интервал мониторинга с точностью до доли секунды.

-отметка

Связанный контент