■ 気がついたら _ (アンダースコア) を使っていたという話
とある munin-node からデータを取得しようとしたのに、なぜかグラフが生成できずという現象。/var/log/munin/munin-update.log を参照すると、次のようなエラーが。
2013/02/05 12:30:16 [WARNING] Config node XXX.XXX.XXX.XXX listed no services for AAA_NET. Please see http://munin-monitoring.org/wiki/ FAQ_no_graphs for further information. 2013/02/05 12:30:17 [INFO] Reaping Munin::Master::UpdateWorker<Group; XXX.XXX.XXX.XXX>. Exit value/signal: 0/0
AAA_NET というホスト名のノートからデータが取得できないよ?という内容。AAA_NETは、ダミー。実際には違うホスト名。ログには FAQ を参照するようにあるけれど、該当するような問題も無し。
あれ?データが取れないの?おかしいなと思い、直接 nc (netcat) コマンドで munin-node にアクセスする。
$ nc XXX.XXX.XXX.XXX 4949 #munin node at AAA_NET list cpu df df_inode entropy ...(snip)... swap threads uptime user
このように、特に問題無くコマンドの取得が出来る。おかしいなー、と思い、調べてみると、munin-node のホスト名にアンダースコア(_)を含む場合、munin-node 側が認識できないという事が判明。整理すると、
- hostname コマンドで表示されるホスト名に _ が含まれる場合
- Red Hat 系は /etc/sysconfig/network の HOSTAME での指定
- munin-node.conf の hostname でのホスト名指定に _ が含まれる場合
この条件下では、munin-node が正しく稼働していても、Muninマスタ側でデータ収集ができない事が判明。
■具体的な対処
この場合、対象サーバの hostname コマンドの応答を変更する方法があります。ただし、既にシステムが運用している場合など、再起動や設定変更が難しい場合もあるでしょう。
そういうときは、munin-node.conf の中で、違う hostname を定義してあげれば回避できます。
# vi /etc/munin/munin-node.conf hostname AAANET
あとは、munin-node restart で設定が反映され、正しく Munin 側でもデータ収集・グラフ生成が可能になります。
■References
どさにっき – ドメイン名のアンスコ
http://ya.maya.st/d/200605c.html#s20060529_2
RFC 1034 – Domain names – concepts and facilities
http://tools.ietf.org/html/rfc1034