CentOS5.xでdstatの–top-ioオプションを使う

■CentOS5.xでdstatの–top-ioオプションを使う
CentOS5.xで極短時間でもI/O負荷を上げているプロセスを特定する方法としてdstatを使うことでそれが可能です。しかしdstatの–top-ioオプションはketnel2.6.20以上が必要で、CentOS5.x標準のkernel2.6.18では利用できません。そこでCentOS5.xでもそれを利用する方法を調べてみました。

dstat
http://dag.wieers.com/home-made/dstat/dstat.1.html

今回はELrepoというハードウェアリポジトリから3.0系のkernelを導入します。
ELrepoはCentOS/RedHat用のリポジトリで、既存のソフトウェアパッケージ群と整合性があります。kernelアップデートしても既存のソフトウェアが勝手にバージョンアップされることはありません。

  1. # rpm -ivh http://elrepo.org/elrepo-release-5-4.el5.elrepo.noarch.rpm
  2. # vi /etc/yum.repos.d/elrepo.repo
  3.  
  4. [elrepo-kernel]
  5. name=ELRepo.org Community Enterprise Linux Kernel Repository - el5
  6. baseurl=http://elrepo.org/linux/kernel/el5/$basearch/
  7. mirrorlist=http://elrepo.org/mirrors-elrepo-kernel.el5
  8. enabled=1
  9. gpgcheck=1
  10. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
  11. protect=0
  12.  
  13. # yum update
  14. # yum install kernel-lt kernel-lt-devel

kernel3.0で起動するとudevの起動時にエラーメッセージが出るので以下を修正。

  1. # vi /etc/udev/rules.d/05-udev-early.rules
  2. ACTION=="add", SUBSYSTEM=="scsi", WAIT_FOR_SYSFS="ioerr_cnt"
  3.  ↓
  4. #ACTION=="add", SUBSYSTEM=="scsi", WAIT_FOR_SYSFS="ioerr_cnt"
  5.  
  6. ※iscsiが使われていないこと。iscsiを有効のまま使う場合は以下。
  7. ACTION=="add", SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", WAIT_FOR_SYSFS="ioerr_cnt"
  8.  
  9. # reboot

起動画面で3.0kernel選択、起動後に起動kernelを確認する。

  1. # uname -r
  2. 3.0.66-1.el5.elrepo を確認

これでdstatのフル機能が利用できるようになります。
dstatは最新版をインストールします。

  1. # wget http://dag.wieers.com/home-made/dstat/dstat-0.7.2.tar.bz2
  2. # tar jxvf dstat-0.7.2.tar.bz2
  3. # cd dstat-0.7.2
  4. # ./dstat -alt --top-io --top-bio --top-cpu --top-cputime --top-cputime-avg --top-mem

各ディスクやネットワーク単位でトラフィックを取得する場合

  1. # ./dstat -cdnlt -N eth0,eth1,total -D sda1,sda2,sda3,total --top-io --top-bio --top-cpu --top-cputime --top-cputime-avg --top-mem

ファイルに書く場合は2つ方法があります。

CSV用のカンマ区切り(画面も表示)

  1. # ./dstat -cdnlt -N eth0,eth1,total -D sda1,sda2,sda3,total --top-io --top-bio --top-cpu --top-cputime --top-cputime-avg --top-mem -o filename

terminal画面の出力をそのまま保存(画面表示無)

  1. # ./dstat -cdnlt -N eth0,eth1,total -D sda1,sda2,sda3,total --top-io --top-bio --top-cpu --top-cputime --top-cputime-avg --top-mem > filename

これによって1秒ごとにサーバの動作状況とその時に最も活動しているプロセスとその対象をいくつかの指標でログに取得できます。

, ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...