iostat -m の出力を取得し、拡張出力から await 列のみをリアルタイムで追加する方法はありますか? この質問は馬鹿げているように聞こえるかもしれませんが、ファイルに出力したり、iostat を 2 回実行したりせずに、すべての列をリアルタイムで取得できるようにする必要があります。そうしないと、誤解を招く結果が出てしまいます。これは 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 が 2 回実行され、await の正しい値 (7 列目) が返されます。
右側の列を awk に渡して CPU iowait 全体を取得することで、vmstat でも同じことができます。例:
vmstat 1 2 | tail -1 | awk {'print $16'}
iostat と vmstat は Linux ディストリビューションごとに異なるため、正しい列を選択する必要があることに注意してください。
答え3
これは、munin、graphite などで監視できるはずです。
編集: システムに がある場合はwatch
、iostat を設定して、指定した間隔で指定した回数 (または無限に繰り返す回数) を自動的に実行することができます。 awk
実際に必要なフィールドだけを実行してください。
答え4
元の質問を読み直すと、著者がリアルタイムの情報を探しているのであれば、collectl が最適な方法であることに同意します。それが私がこれを書いた理由です。;)
データを使用して何か特定のことをしようとしているのであれば、私がお手伝いできるかもしれませんが、そのためにはもっと詳しく知る必要があります。どのくらいリアルタイムにしたいかに関しては、1 秒未満の監視間隔を自由に選択できます。
-マーク