LoginSignup
0
2

More than 5 years have passed since last update.

MuninでSMART情報を /dev/disk/by-id で表示する

Last updated at Posted at 2014-08-27

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

# (省略)

https://github.com/munin-monitoring/munin/blob/100128eb1ae067c426466d43f3269a52b651b706/plugins/node.d/smart_.in#L112-L119 より引用

Author:
(C) 2004-2009 Nicolas Stransky Nico@stransky.cx
(C) 2008 Gabriele Pohl contact@dipohl.de

License: 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*

smart_ata_ST2000DM001_1CH164_Z1E4PKGL-day.png

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2