@karky7 に頼まれた、
Solaris 11 での Munin の設定方法第2弾。
前回([2013-08-13-1])は Solaris 11 上に
jposug のパッケージで Munin をインストールして
ローカルの Munin node から値を取得するところまで書いたので、
今回はリモートの Munin node に接続する方法です。
リモートの Munin node から値を取得する方法は
以下の 3 種類があります。
1. リモートの Munin node に直接接続
2. リモートの Munin node に SSH + nc (netcat) で接続
3. リモートの Munin node に SSH + Munin async で接続
Munin node の ACL 設定
前回は localhost からの接続ということで
Munin node の ACL を特に設定しませんでしたが、
今回はリモートから接続されるので ACL を設定します。
デフォルトで入っている /etc/munin-node.conf を見るとわかりますが、
ACL の設定方法は 2 種類あります。
- allow: 正規表現で接続を許可するホストを指定
- cidr_allow / cidr_deny: CIDR で接続を許可/拒否するホストを指定
allow の場合
allow ^127\.0\.0\.1$ allow ^::1$
cidr_allow / cidr_deny の場合
cidr_allow 127.0.0.1/32 cidr_allow 192.0.2.0/24 cidr_deny 192.0.2.42/32
こんな感じなので環境に合わせて設定してください。
cidr で設定する場合は Perl の Net::CIDR が必要ですが、
jposug のパッケージだと依存関係でインストールされるはずです
(Munin のパッケージビルド時に Net::CIDR がローカルにインストールされているか
ビルドを行なうホストから見える Publisher に登録されていないと
正しく依存関係が設定されないようなので注意が必要)。
1. リモートの Munin node に直接接続
これは単純で、以下のようにリモートの Munin-node を指定してあげるだけ。
リモートの Munin-node が 192.168.1.2 なら
[example.com] address 192.168.1.2 use_node_name yes
リモートの Munin-node 側で接続を受け付けるように
acl を設定しておく必要があります。
2. リモートの Munin node に SSH + nc (netcat) で接続
2、3 の方法では SSH を使うので、munin が pass phrase なしで
リモートに SSH ログインできるようにしておく必要があります。
Munin のパッケージで調整するべきですが、
今のところ、ユーザ munin の home が / になっているので、
/etc/munin などに変更してください。
home を変更したら、pass phrase なしの鍵を生成し、
公開鍵をリモートホスト上のユーザ(nc や munin-async が叩ければ何でもよい)の
authorized_keys に登録してください。
また、~/.ssh/config の設定が効くので、
必要があれば設定を書いておいてください。
example.com というホストに SSH ログインして、
example.com の値を取得するには、
/etc/munin/munin.conf に以下のように書きます。
[example.com] address ssh://example.com/usr/bin/nc 127.0.0.1 4949 use_node_name yes
また、example.com と同じネットワークセグメント上にある
foo.example.com の Munin node に接続するには、
- ~/.ssh/config に設定を書いて多段 SSH
- example.com に SSH login して nc で foo.example.com に接続
といった方法があります。
~/.ssh/config に設定を書いて多段 SSH
[example.com] address ssh://foo.example.com/usr/bin/nc 127.0.0.1 4949 use_node_name yes
example.com に SSH login して nc で foo.example.com (192.168.1.2) に接続
[example.com] address ssh://example.com/usr/bin/nc 192.168.1.2 4949 use_node_name yes
この場合は example.com (192.168.1.1 とか) から接続することになるので、
munin-node.conf で ACL を設定しておく必要があります。
3. リモートの Munin node に SSH + Munin async で接続
Munin async / Munin asyncd の説明は次回にまわして、
こんな風に設定するとだけ。
[example.com] address ssh://example.com/usr/share/munin/munin-async --spoolfetch -s /var/lib/munin/spool/localhost use_node_name yes
上の SSH + nc (netcat) 同様の書式で、
munin-async を叩きます。
次回、Munin asyncd の説明につづく(はず)。
つづいた [2013-08-17-1]
1. Solaris 11 上での Munin のインストール & 設定 [2013-08-13-1]
2. リモートの Munin node から値を取得する [2013-08-14-1]
3. Solaris 11 で Munin asyncd を使う [2013-08-17-1]
[2013-08-17-1] Solaris 11 で Munin asyncd を使う
[2013-08-14-1] リモートの Munin node から値を取得する
[2013-08-13-1] Solaris 11 上での Munin のインストール & 設定