Есть ли способ получить вывод 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 - это правильный путь. Вот почему я это написал. ;)
Если вы пытаетесь сделать с данными что-то конкретное, возможно, я мог бы помочь, но мне нужно знать больше. Что касается того, насколько вы хотите быть в режиме реального времени, вы можете выбрать любой интервал мониторинга с точностью до доли секунды.
-отметка