Очень специфический вывод iostat, необходимый в реальном времени
В любом случае можно получить выходные данные iostat -m и добавить только ожидаемый столбец из расширенного вывода в реальном времени? Я знаю, что этот вопрос звучит как чокнутый, но мне нужно иметь возможность получать все эти столбцы в реальном времени, не выводя их в файл и не запуская iostat дважды, так как это даст неверные результаты. Это сентос 6.2 иостат 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?
Заранее спасибо.
4 ответа
Я не уверен, как получить iostat
форматирование, которое вы ищете. Тем не менее, инструмент, который я использую для мониторинга такого типа, настраивается так, чтобы вы могли отображать соответствующие поля. Это также отлично подходит для генерации данных для воспроизведения и построения графиков.
Я использую мониторинг Collectl (доступен в 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
Почему бы не создать оболочку в bash?
Однолинейная версия будет выглядеть так:
iostat 1 2 | grep -w sda | tail -1 | awk {'print $7'}
Это запустит iostat дважды и вернет правильное значение await (7-й столбец)
Вы можете сделать то же самое с vmstat, передав правый столбец в awk, чтобы получить весь процессор iowait. Например:
vmstat 1 2 | tail -1 | awk {'print $16'}
Обратите внимание, что iostat и vmstat различаются в каждом дистрибутиве Linux, и вы должны выбрать правильный столбец.
Перечитывая оригинальный вопрос, если автор ищет информацию в режиме реального времени, я согласен, что коллекционирование - это путь. Вот почему я написал это.;)
если есть какая-то конкретная вещь, которую вы пытаетесь сделать с данными, возможно, я мог бы помочь, но мне нужно знать больше. Что касается того, каким в реальном времени вы хотите быть, вы можете выбрать любой интервал мониторинга менее секунды.
-отметка
Это похоже на то, что должно контролироваться мунином, графитом и т. Д.
РЕДАКТИРОВАТЬ: если ваша система имеет watch
Вы можете настроить iostat на автоматический запуск заданного (или бесконечно повторяющегося) числа раз с указанным промежутком между запусками! awk
поля, которые вы на самом деле хотите!