MuninにはSMART情報を表示するプラグインがあらかじめインストールされていますが、普通に設定してもデバイスが /dev/sdX
の形式で指定されます。
これだとディスクを抜き差ししたりしてデバイス名が変わったらちょっと面倒です。
/dev/disk/by-id
以下であればシンボリックリンクを指定することになります。そのためデバイス名が変わってもシンボリックリンクの向く先が変わり、ディスク構成が変わっても今までのログが変わらないようになります。
munin-node-configure --shell
などを使うと、smart_sdaといった風にシンボリックリンクが貼られてしまいます。
% munin-node-configure --shell
ln -s '/usr/share/munin/plugins/smart_' '/etc/munin/plugins/smart_sda'
ln -s '/usr/share/munin/plugins/smart_' '/etc/munin/plugins/smart_sdb'
ln -s '/usr/share/munin/plugins/smart_' '/etc/munin/plugins/smart_sdc'
ln -s '/usr/share/munin/plugins/smart_' '/etc/munin/plugins/smart_sdd'
ln -s '/usr/share/munin/plugins/smart_' '/etc/munin/plugins/smart_sde'
ln -s '/usr/share/munin/plugins/smart_' '/etc/munin/plugins/smart_sdf'
ln -s '/usr/share/munin/plugins/smart_' '/etc/munin/plugins/smart_sdg'
munin-node-configure コマンドについてはこちら
munin-node-configureコマンドを覚えた - ヌキのやる気のないエンジニアブログ
なぜこうなってしまうのでしょうか。
MuninのSMART情報を表示するプラグインは、プラグインの実体(この場合だと /usr/share/munin/plugins/smart_
)を見るとわかるのですが、アンダースコア以降の文字を見て判断しています。
Pythonで書かれたコードの一部からそれを読み解くことができます。
smart_# (省略) def read_values(hard_drive): global smart_values, emptyoutput try : verboselog('Reading S.M.A.R.T values') os.putenv('LC_ALL','C') device='/dev/'+hard_drive if not os.path.exists(device): device='/dev/disk/by-id/'+hard_drive # (省略)
Author:
(C) 2004-2009 Nicolas Stransky Nico@stransky.cx
(C) 2008 Gabriele Pohl contact@dipohl.deLicense: GPLv2
smart_sda という名前でシンボリックリンクを張ると、/dev/sda
のSMART情報を表示しますが、smart_ata-ST2000DM001-1CH164_Z1E4PKGL
のようにシンボリックリンクを張ると /dev/disk/by-id
以下を見るというコードになっていますね。
下記のコマンドを打つと、勝手に /dev/disk/by-id
以下のHDDの型番とシリアルからMuninプラグインのシンボリックリンクを張ってくれます(Ubuntu Server 14.04上でbashとzshで動作を確認しています)。
sudo /bin/ls -b -1 /dev/disk/by-id/ata-*[^-part]? | xargs -n 1 basename | sudo xargs -I % -t -n 1 ln -s /usr/share/munin/plugins/smart_ /etc/munin/plugins/smart_%
環境によってプラグインのある場所が異なることもあるので、適宜変更してください(全然ディレクトリ構成が違う環境がある場合コメントを頂けると幸いです)。
これで、HDDの型番とシリアルでSMARTのグラフを確認できます。
itochan@kurokami:/etc/munin/plugins% ll smart_*
lrwxrwxrwx 1 root root 31 Aug 23 22:43 smart_ata-KINGSTON_SV100S264G_64GB60075751 -> /usr/share/munin/plugins/smart_*
lrwxrwxrwx 1 root root 31 Aug 23 22:43 smart_ata-ST2000DM001-1CH164_Z1E4PKGL -> /usr/share/munin/plugins/smart_*
lrwxrwxrwx 1 root root 31 Aug 23 22:43 smart_ata-WDC_WD20EARS-00MVWB0_WD-WCAZ20023827 -> /usr/share/munin/plugins/smart*
lrwxrwxrwx 1 root root 31 Aug 23 22:43 smart_ata-WDC_WD20EFRX-68AX9N0_WD-WCC300347783 -> /usr/share/munin/plugins/smart*
lrwxrwxrwx 1 root root 31 Aug 23 22:43 smart_ata-WDC_WD20EFRX-68AX9N0_WD-WCC300366117 -> /usr/share/munin/plugins/smart*
lrwxrwxrwx 1 root root 31 Aug 23 22:43 smart_ata-WDC_WD20EFRX-68AX9N0_WD-WMC300043508 -> /usr/share/munin/plugins/smart*
lrwxrwxrwx 1 root root 31 Aug 23 22:43 smart_ata-WDC_WD20EFRX-68AX9N0_WD-WMC300228224 -> /usr/share/munin/plugins/smart*