Очень специфический вывод 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 поля, которые вы на самом деле хотите!

Другие вопросы по тегам