サーバ監視・モニタリング設定
本ページの記述は,CentOS 5.{3-6} (x86_64)で実施. なお,lm_sensors はハードウェア依存で動作するもの・しないものがあるようです. 私も,Atom N330 での munin 稼働に失敗しました. 私にはこれを解決できるだけの技術力がないので,放置しています.
- 早崎 web トップ
- Linux Tips
- 関連 page: セキュリティ設定
- 関連 page: UPS監視 (2011-08-17 ページ分割)
munin
セットアップ
実施事項 (コマンドの羅列; とにかく取り急ぎ手順を知りたい人向け)
準備〜稼働までの,大雑把な流れは以下の通り:
(以下,特に断りが無い限り全て監視対象ノードでの実行) # rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm # yum -y install libsysfs libsysfs-devel # yum -y install munin* unbound-munin # yum -y install lm_sensors (coretemp module のインストール) # rpm -ivh http://www.pperry.f2s.com/linux/coretemp/kmod-coretemp-1.1-2.el5.x86_64.rpm (上記をインストールしても正常稼働しない場合があった.ハード依存? 原因特定できず.2011-11-21 実施) # /usr/sbin/sensors-detect # /usr/bin/sensors (lm_sensors 稼働確認用,念のため.) (監視対象ノードの /etc/munin/plugins/ 以下の不要プラグインを削除,必要プラグインを追加) (監視対象ノードの /etc/munin/munin-node.conf に,情報集積サーバからのアクセス許可を追記) (監視対象ノードの /etc/munin/plugin-conf.d/munin-node に, sensors_* や hddtemp_smartctl などを追記) (情報集積用サーバにて, /etc/munin/munin.conf に監視対象ノード情報を追記) (監視対象ノードのセキュリティを一部開く.監視対象ノードにて,munin のポート(4949/tcp)に対して情報集積サーバがアクセスすることを許可する) # system-config-securitylevel (GUI画面にて操作) (情報集積用サーバ & 監視対象ノードにて,munin-node を起動.稼働済みなら reload でもよい.) # /etc/init.d/munin-node restart # /sbin/chkconfig munin-node on
導入手順解説
munin 本体のインストール
munin 自体のインストールは, Extra Packages for Enterprise Linux (EPEL) repository が追加されていれば,yum 一発でいける. 具体的調査方法は,/etc/yum.repos.d/ 以下を見る. ここに epel.repo & epel-testing.repo があれば,EPEL追加済み.
※EPEL repository の追加手順.設定済みなら,以下2行は不要 # wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm # rpm -ivh epel-release-5-4.noarch.rpm # yum search munin Loaded plugins: allowdowngrade, fastestmirror Loading mirror speeds from cached hostfile * epel: ftp.jaist.ac.jp (中略) ================== Matched: munin ====================== munin.noarch : Network-wide graphing framework (grapher/gatherer) munin-node.noarch : Network-wide graphing framework (node) unbound-munin.x86_64 : Plugin for the munin / munin-node monitoring package
上記3つを入れればオッケー.
追加パッケージ(lm_sensors, kernel module; OpenIPMI)
lm_sensors やそれらが利用する kernel module の追加が必要.
- 汎用パソコン系(Core2Duo や Core2Quadなど)の場合, lm_sensors だけで使えば,MB経由でCPU温度を取得できるはず.
- CPU が Intel Xeon やAMD Opteron などの場合, CentOS では kernel module の追加導入が必要. 以下にその手順を再掲する:
(いつのまにか,lm_sensors は base repository から取得可能になっていた. ELrepo からは取得不可能.私個人が確認したのは 2011-11-21) # yum -y install lm_sensors # rpm -ivh http://www.pperry.f2s.com/linux/coretemp/kmod-coretemp-1.1-2.el5.x86_64.rpm
なお,lm_sensors が使えない計算機もある. ただし,サーバ機の場合には,lm_sensors が使えなくても,OpenIPMI が使える場合がある. 実際に,Dell PowerEdge T610 (タワー型のサーバ) にて,lm_sensors がダメでも OpenIPMI が使えた.OpenIPMI の場合,使用するのは以下のパッケージ. どのレポジトリから得られるのか,未確認.私の場合,いつの間にかインストールされていた.
# yum -y OpenIPMI OpenIPMI-tools
CentOS 6.x 系だと,OpenIPMI-tools が見付からない.ipmitool は何処に行った? 未解決問題.
動作確認は ipmitool コマンドにて.
# ipmitool sdr Temp | -61 degrees C | ok Temp | -64 degrees C | ok Temp | 35 degrees C | ok Temp | 33 degrees C | ok Ambient Temp | 27 degrees C | ok Planar Temp | 34 degrees C | ok CMOS Battery | 0x00 | ok (私の場合,全部で100行程度のメッセージが画面に出力された)
インストールしたら,daemon も起動しておく. 以下の2つとも必要なのか?未確認だが,個人的に検証する時間的余裕がないので pending. 設定ファイルの所在が不明./etc/sysconfig/ipmi に記述があるようだが...
# /etc/init.d/ipmi start # /etc/init.d/ipmievd start # chkconfig ipmi on # chkconfig ipmievd on
CentOS 5.x 系が稼動する Dell 製のサーバだと,以下のように実行すれば, 消費電力も表示できるので便利 (see ipmitool でのサーバ消費電力確認方法, Dell コミュニティ テックセンターより)
# ipmitool delloem powermonitor powerconsumptionhistory Power Consumption History Statistic Last Minute Last Hour Last Day Last Week Average Power Consumption 145 W 144 W 144 W 143 W Max Power Consumption 149 W 158 W 160 W 160 W Min Power Consumption 142 W 142 W 142 W 142 W Max Power Time Last Minute : Sun Jun 10 15:54:09 2012 Last Hour : Sun Jun 10 15:35:07 2012 (以下略)
CentOS 6.x 系だと,RPM で配布されているものも見つけたが, 公式(?)レポジトリには入っていないようだ.
munin の監視対象の変更(追加・削除)
追加
- /etc/munin/plugins に,対象となるドライバのリンクを張る
様々な監視対象用のドライバがあるが, ここでは lm_sensors を使った温度の取得をする場合を例とする:
# ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp ※1: アンダースコアを忘れずに ※2: 温度以外に,ファンの回転数や電圧などもモニタしたい場合は下記も追記 # ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt # ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan # ln -s /usr/share/munin/plugins/hddtemp_smartctl /etc/munin/plugins/hddtemp_smartctl ※OpenIPMI の場合は以下の通り: # ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_fans # ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_temp
sensors_ と hddtemp_smartctl に関する項目を /etc/munin/plugin-conf.d/munin-node に追記.
# vi /etc/munin/plugin-conf.d/munin-node === 以下を末尾にでも追記 [sensors_*] user root [hddtemp_smartctl] user root env.drives sdc sdd env.args_sdc --all -d ata env.args_sdd --all -d ata ※以下はOpenIPMIを使う場合 [ipmi_*] user root === ここまで
複数のハードディスク(ここでは sdc, sdd)がある場合には,上記のように書いたら動いた. 正確な書式か否か未確認だが,現状で動作しているので良いのだろう,きっと.
これで munin-node を restart
# /etc/init.d/munin-node restart
削除
- /etc/munin/plugins で,使わないものを削除するだけ
- default install 時の状態から,必要と思われるプラグインだけを残す& 新規設定するコマンドは以下の通り:
for i in entropy forks fw_packets http_loadtime lpstat proc_pri threads uptime yum ; do \rm -f /etc/munin/plugins/$i ; done \rm -f /etc/munin/plugins/sendmail_* \rm -f /etc/munin/plugins/ntp_* ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp ln -s /usr/share/munin/plugins/hddtemp_smartctl /etc/munin/plugins/hddtemp_smartctl
実例
以下に,/etc/munin/plugins のリストを示す:
# cd /etc/munin/plugins # ls -l total 0 lrwxrwxrwx 1 root root 28 2009-09-01 23:15 cpu -> /usr/share/munin/plugins/cpu* lrwxrwxrwx 1 root root 27 2009-09-01 23:15 df -> /usr/share/munin/plugins/df* lrwxrwxrwx 1 root root 33 2009-09-01 23:15 df_inode -> /usr/share/munin/plugins/df_inode* lrwxrwxrwx 1 root root 41 2009-09-08 09:32 hddtemp_smartctl -> /usr/share/munin/plugins/hddtemp_smartctl* lrwxrwxrwx 1 root root 32 2009-09-01 23:15 if_err_eth0 -> /usr/share/munin/plugins/if_err_* lrwxrwxrwx 1 root root 28 2009-09-01 23:15 if_eth0 -> /usr/share/munin/plugins/if_* lrwxrwxrwx 1 root root 35 2009-09-01 23:15 interrupts -> /usr/share/munin/plugins/interrupts* lrwxrwxrwx 1 root root 31 2009-09-01 23:15 iostat -> /usr/share/munin/plugins/iostat* lrwxrwxrwx 1 root root 33 2009-09-01 23:15 irqstats -> /usr/share/munin/plugins/irqstats* lrwxrwxrwx 1 root root 29 2009-09-01 23:15 load -> /usr/share/munin/plugins/load* lrwxrwxrwx 1 root root 31 2009-09-01 23:15 memory -> /usr/share/munin/plugins/memory* lrwxrwxrwx 1 root root 32 2009-09-01 23:15 netstat -> /usr/share/munin/plugins/netstat* lrwxrwxrwx 1 root root 35 2009-09-01 23:15 nfs_client -> /usr/share/munin/plugins/nfs_client* lrwxrwxrwx 1 root root 29 2009-09-01 23:15 nfsd -> /usr/share/munin/plugins/nfsd* lrwxrwxrwx 1 root root 35 2009-09-01 23:15 ntp_offset -> /usr/share/munin/plugins/ntp_offset* lrwxrwxrwx 1 root root 35 2009-09-01 23:15 open_files -> /usr/share/munin/plugins/open_files* lrwxrwxrwx 1 root root 36 2009-09-01 23:15 open_inodes -> /usr/share/munin/plugins/open_inodes* lrwxrwxrwx 1 root root 34 2009-09-01 23:15 processes -> /usr/share/munin/plugins/processes* lrwxrwxrwx 1 root root 33 2009-09-02 10:26 sensors_temp -> /usr/share/munin/plugins/sensors_* lrwxrwxrwx 1 root root 29 2009-09-01 23:15 swap -> /usr/share/munin/plugins/swap* lrwxrwxrwx 1 root root 31 2009-09-01 23:15 vmstat -> /usr/share/munin/plugins/vmstat*
NFS を使ってなけりゃ, nfs で始まる2つ (nfs_client, nfsd) も削除する. 上記以外では,users を入れるのも良い. まだ導入したてなので,自分に必須の情報を絞りきれていない. 使っていくうちに不要なものを削除すればよいだろう.
複数台監視の設定
munin を使った,複数台監視の方法.監視対象の計算機群それぞれにmunin-nodeのインストール
# yum -y install munin-node
ここでは2台の計算機A, B の情報を情報集積サーバSに集めるという状況を仮定する.
- 計算機A: hoge1.domain1.jp (IP = 192.168.1.11)
- 計算機B: hoge2.domain1.jp (IP = 192.168.1.12)
- 情報集積サーバS: server.domain1.jp (IP = 192.168.1.100)
異なるドメインにまたがっている場合, セキュリティ設定などの都合でモニタリングできない事もありそう. ドメインを跨ぐ機材の直接モニタリングは,やらないことにする.
計算機A, Bにおいて,設定ファイル(munin-node.conf)の設定
# vi /etc/munin/munin-node.conf
※計算機Aの場合 allow ^127\.0\.0\.1$ allow ^192\.168\.1\.100$ # <= point 1 ※計算機Bの場合 allow ^127\.0\.0\.1$ allow ^192\.168\.1\.100$ # <= point 1
上記の point 1 の部分は,情報集積サーバからのアクセス許可. 計算機A, B で firewall が稼働していたら, munin のTCPポート(4949)へのアクセス許可を与えておく.
# /usr/bin/system-config-securitylevel
設定が完了したら,計算機A, Bそれぞれで munin-nodeを起動.
# /etc/init.d/munin-node start
続いての情報集積サーバ S での munin.conf の設定.
# vi /etc/munin/munin.conf
以下を書き込む:
[localhost] address 127.0.0.1 use_node_name yes # 以下に munin-nodeをインストールした計算機A, Bの情報を記述 [hoge1.domain1.jp] #←ここの部分は各サーバのFQDN address 192.168.1.11 use_node_name yes [hoge2.domain1.jp] address 192.168.1.12 use_node_name yes
情報集積サーバSの munin.conf の設定が完了したら,設定ファイルの再読み込み.
# /etc/init.d/munin-node reload
再読み込みの5分後には計算機A, Bの情報が情報集積サーバSに集まり, グラフが見られるようになるはず.
応用例: グループ分割
監視対象が2,3台なら上記のような簡易設定でも良いが, 同一ドメイン内の監視対象台数が5, 6台以上になると,day, week などの overview ページで全サーバのグラフが横並びになるため,非常に見にくい. そこで,監視対象のサーバを3-4台程度以下のグループごとに分割してみる.
例えば,以下のような記述を情報集積サーバの /etc/munin/munin.conf に書けば良い.
[groupA;] [groupA;hoge11.domain1.jp] address 192.168.1.11 use_node_name yes [groupA;hoge12.domain1.jp] address 192.168.1.12 use_node_name yes [groupA;hoge13.domain1.jp] address 192.168.1.13 use_node_name yes [groupB;] [groupB;hoge21.domain1.jp] address 192.168.1.21 use_node_name yes [groupB;hoge22.domain1.jp] address 192.168.1.22 use_node_name yes [groupB;hoge23.domain1.jp] address 192.168.1.23 use_node_name yes
これ以外にも,「ロードアベレージだけのページ」とか,いくつかの応用例がある. その記載は誰かが書いてくれているはず... 自分で作るのは面倒なので,これも pending.
情報源
munin に関するセットアップ情報
- GIGAZINE MRTGよりお手軽に負荷やトラフィックをグラフ化できる「Munin」 (2006年09月04日付け記事)
- GIGAZINE Muninをカスタマイズして表示されるグラフの種類を増やしてみる (2007年01月20日付け記事)
- 【第21回】サーバ監視ツールmunin その2;複数台の監視手順
coretemp に関する情報
古い記述
以下の記述は,ELrepo からの coretemp 取得できなくなったため, munin セットアップのメイン部分から削除した(2011-11-21 確認). 覚え書きの意味で残しておく.
coretemp の導入
# rpm -Uvh http://elrepo.org/elrepo-release-0.1-1.el5.elrepo.noarch.rpm (CASE: Using Intel Xeon processor) # yum -y --disablerepo=\* --enablerepo=elrepo install kmod-coretemp lm_sensors (CASE: Using AMD Opteron processor) # yum -y --disablerepo=\* --enablerepo=elrepo install kmod-k10temp lm_sensors
以下の記述は,munin 関連ソフトが yum でインストールできる事が判明したので, 不要になった(2010年6月下旬頃に知った).覚え書きの意味で残しておく.
hddtemp の導入
※結局,hddtemp は未使用.以後の記述は不要となったが,記録の意味で残しておく.
ハードディスク温度のモニタリングのため,hddtemp を yum install.
# hddtemp /dev/sdc /dev/sdc: ST31500341AS: 42°C
と表示されればよし.
smartmontool の導入
※CentOS なら,デフォルトで導入済み... だったかどうか,覚えてない. でも,自分でインストールした記憶に乏しいので,大抵の場合は導入済みだと思われる.
ハードディスク温度のモニタリングのため,smartmontools を yum install.
# yum search smart ※たくさん表示されるが,この中にある smartmontools を install # yum install smartmontools # /usr/sbin/smartctl --all /dev/sdc (たくさんの表示.中略) 190 Airflow_Temperature_Cel 0x0022 058 055 045 Old_age Always - 42 (Lifetime Min/Max 26/45) 194 Temperature_Celsius 0x0022 042 045 000 Old_age Always - 42 (0 20 0 0) (まだ続く.以下略)
と Tempreature_Celsius の部分が表示されればよし.
coretemp モジュールの導入
CPUが Xeon の場合, coretemp という kernel module を使い,CPU温度をCPUのレジスタから直接取得(するらしい).というか,lm_sensors の sensors-detect で,有効なセンサーを検出できなかったため,これを使うしかない.
- coretemp の src.rpm を取得.
http://www.pperry.f2s.com/linux/ 以下より. ここで使用したのは,coretemp-1.1-2.el5.src.rpm
- rpm をbuild する
# cd /usr/src/redhat/SRPMS/ # rpm -ivh coretemp-1.1-2.el5.src.rpm Edit spec file (if you need) !! Rebuilind package mentioned above requires to get kernel-xen-header !! 現在使用中の kernel と同じ release number のものをインストールする. # uname -r 2.6.18-128.4.1.el5.centos.plus # yum -y install kernel-xen-devel-2.6.18-128.4.1.el5.centos.plus # rpmbuild -ba /usr/src/redhat/SPECS/coretemp-kmod.spec # ls -l /usr/src/redhat/RPMS/x86_64/ total 100 -rw-r--r-- 1 root root 2731 Sep 2 01:16 coretemp-debuginfo-1.1-2.el5.x86_64.rpm -rw-r--r-- 1 root root 47539 Sep 2 01:16 kmod-coretemp-1.1-2.el5.x86_64.rpm -rw-r--r-- 1 root root 47526 Sep 2 01:16 kmod-coretemp-xen-1.1-2.el5.x86_64.rpm # rpm -ivh /usr/src/redhat/RPMS/x86_64/kmod-coretemp-1.1-2.el5.x86_64.rpm Preparing... ########################################### [100%] 1:kmod-coretemp ########################################### [100%]
- 次にインストールする lm_sensors のコマンド, sensors-detect を実行する(実行手順は後述)
lm_sensors のセットアップ
- 事前準備: bison, flex のインストールが必要
# yum install bison flex
- yum install lm_sensors でインストール出来る
- もしもyum でのインストールやってもダメなようなら, lm_sensors は tar ball から入れる.
- lm_sensors の tar ball は, http://www.edgedesign.us/about/lm_sensors より取得
- sensors-detect を実行,特に意味がわからなければ, 質問には全てデフォルトのまま(全てリターン)で良いはず
- sensors を実行してみる. sensors-detect でうまく情報取得できていれば, CPU温度だけでなくファン回転数や電圧などの情報まで取得できるはず.
- うまくセンサー(モニタ機能を持つチップなど?)の情報が取れなかったら, 出力は少々さびしいものになる
# LANG=C # sensors coretemp-isa-0000 Adapter: ISA adapter Core 0: +48 C (high = +100 C) coretemp-isa-0001 Adapter: ISA adapter Core 1: +48 C (high = +100 C) coretemp-isa-0002 Adapter: ISA adapter Core 2: +45 C (high = +100 C) coretemp-isa-0003 Adapter: ISA adapter Core 3: +45 C (high = +100 C)
MRTG
munin に比べて,かなり面倒.pending.
top コマンド
top コマンドは,監視といっても稼動状況をリアルタイムで確認するときに利用. 自分のジョブが正常に動いているのか(suspend 状態になっていないか,並列実行できているか,など), メモリ使用状況は,などをさっと見る事が出来る.
並列計算時のCPU別負荷を見たければ,top 実行中に "1" (いち)を押してみればいい.
Appendix
Appendix A. sensors-detect の出力結果サンプル
# sensors-detect # sensors-detect revision 5729 (2009-06-02 15:51:29 +0200) # System: Gigabyte Technology Co., Ltd. EP45-UD3P This program will help you determine which kernel modules you need to load to use lm_sensors most effectively. It is generally safe and recommended to accept the default answers to all questions, unless you know what you're doing. Some south bridges, CPUs or memory controllers contain embedded sensors. Do you want to scan for them? This is totally safe. (YES/no): Silicon Integrated Systems SIS5595... No VIA VT82C686 Integrated Sensors... No VIA VT8231 Integrated Sensors... No AMD K8 thermal sensors... No AMD K10 thermal sensors... No Intel Core family thermal sensor... Success! (driver `coretemp') Intel AMB FB-DIMM thermal sensor... No VIA C7 thermal and voltage sensors... No Some Super I/O chips contain embedded sensors. We have to write to standard I/O ports to probe them. This is usually safe. Do you want to scan for Super I/O sensors? (YES/no): Probing for Super-I/O at 0x2e/0x2f Trying family `National Semiconductor'... No Trying family `SMSC'... No Trying family `VIA/Winbond/Fintek'... No Trying family `ITE'... Yes Found `ITE IT8718F Super IO Sensors' Success! (address 0x290, driver `it87') Probing for Super-I/O at 0x4e/0x4f Trying family `National Semiconductor'... No Trying family `SMSC'... Yes Found unknown chip with ID 0x0b00 Some systems (mainly servers) implement IPMI, a set of common interfaces through which system health data may be retrieved, amongst other things. We first try to get the information from SMBIOS. If we don't find it there, we have to read from arbitrary I/O ports to probe for such interfaces. This is normally safe. Do you want to scan for IPMI interfaces? (YES/no): Probing for `IPMI BMC KCS' at 0xca0... No Probing for `IPMI BMC SMIC' at 0xca8... No Some hardware monitoring chips are accessible through the ISA I/O ports. We have to write to arbitrary I/O ports to probe them. This is usually safe though. Yes, you do have ISA I/O ports even if you do not have any ISA slots! Do you want to scan the ISA I/O ports? (yes/NO): Lastly, we can probe the I2C/SMBus adapters for connected hardware monitoring devices. This is the most risky part, and while it works reasonably well on most systems, it has been reported to cause trouble on some systems. Do you want to probe the I2C/SMBus adapters now? (YES/no): Using driver `i2c-i801' for device 0000:00:1f.3: Intel ICH10 Next adapter: SMBus I801 adapter at 0500 (i2c-0) Do you want to scan it? (yes/NO/selectively): Next adapter: NVIDIA i2c adapter 0 at 1:00.0 (i2c-1) Do you want to scan it? (YES/no/selectively): Client found at address 0x50 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Probing for `EDID EEPROM'... Yes (confidence 8, not a hardware monitoring chip) Next adapter: NVIDIA i2c adapter 1 at 1:00.0 (i2c-2) Do you want to scan it? (YES/no/selectively): Next adapter: NVIDIA i2c adapter 2 at 1:00.0 (i2c-3) Do you want to scan it? (YES/no/selectively): Next adapter: NVIDIA i2c adapter 3 at 1:00.0 (i2c-4) Do you want to scan it? (YES/no/selectively): Next adapter: NVIDIA i2c adapter 4 at 1:00.0 (i2c-5) Do you want to scan it? (YES/no/selectively): Next adapter: NVIDIA i2c adapter 5 at 1:00.0 (i2c-6) Do you want to scan it? (YES/no/selectively): Client found at address 0x50 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Probing for `EDID EEPROM'... No Client found at address 0x51 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Client found at address 0x52 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Client found at address 0x53 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Now follows a summary of the probes I have just done. Just press ENTER to continue: Driver `it87': * ISA bus, address 0x290 Chip `ITE IT8718F Super IO Sensors' (confidence: 9) Driver `coretemp': * Chip `Intel Core family thermal sensor' (confidence: 9) Do you want to overwrite /etc/sysconfig/lm_sensors? (YES/no): lm_sensors を起動中: [ OK ]
Appendix B. サーバ移設時の munin 移動
サーバを移設する場合,これまでに保存してきた munin の情報も引き継ぎたい こともあるだろう. 移設するための方法は至極簡単.
旧計算機の munin で集積したデータベースファイルを, 適切に新計算機にコピーすればよい. web のアドレス以下の html やら表示画像は,データベースを元に作りなおされているもの. munin の実行のたびに書き換えられるので, 管理情報の移設時に 旧計算機上の画像たちを移設先にコピーする事は無意味である.
- DBファイルは,/var/lib/munin/(domain名)/ というディレクトリ以下にある
- ファイル名は (サーバ名)-(監視対象判別名).rrd (例: hoge.private.com-load-load-g.rrd)
もし,移設に際してホスト名を変更した場合, DBファイル名も新ホスト名に変更せねばならない. 私が使用したサンプル shell script を以下に示す:
#!/bin/sh workdir=/dev/shm # Use RAM disk old_domain=hoge.com old_server_name=old01 new_domain=hogehoge.com new_server_name=new02 old_FQDN=${old_server_name}.${old_domain} new_FQDN=${new_server_name}.${new_domain} tmp00=$workdir/tmp00_$$.txt ### Copied from /var/lib/munin/ cp -pr /var/lib/munin/${old_domain} ~/tmp cd ~/tmp/${old_domain} #file_list=`find -type f -name "*rrd" | head -2` file_list=`find -type f -name "*rrd"` for old_name in $file_list ; do cat > ${tmp00} << EOF { s/${old_FQDN}/${new_FQDN}/g } p EOF new_name=`echo ${old_name} | sed -n -f ${tmp00}` # echo "DEBUG: mv ${old_name} ${new_name}" \mv -f ${old_name} ${new_name} done # i \rm -f $tmp00
サーバ名変更後,新計算機のデータベース置き場に手動にてコピー. owner/group を munin にするのを忘れないように.
おそらく,もっと単純 & 簡単な方法があるのだろうが, その方法を探すよりも自分でやっちゃった方が早かったので, こんなドロ臭い方法になった.
当然ながらファイル名は任意である. ちなみに,私の場合は rename_munin_DB.sh として $HOME/bin/ 以下のとある場所に保管. 近い将来,確実に再利用するのだが,ファイル名(またはその所在) を忘れる可能性が高い. 自分のために記録.