bekkou68 の日記

Gogengo! や IT 技術など。

Amazon EC2 で Munin + Apache でリソース監視環境をセットアップする

はじめに

Amazon EC2 のアプリインスタンスで Munin を Apache で動かす手順をまとめました。
Munin そのものを学びたい時はこのスライドがオススメです。インフラと監視の昔と今、Munin の仕組みや使い方がとても分かりやすく紹介されています。

ゴール

Munin が入っているアプリインスタンス1 でアプリインスタンス2 を監視できること。

前提

手順(2013年12月19日更新)

監視される側

監視される側であるアプリインスタンス2 に SSHログインします。

munin-node をインストールします。

$ sudo yum install -y munin-node
$ sudo vim /etc/munin/munin-node.conf

で設定ファイルを開き、allow に監視する側の IPアドレスを追加します。以下は IPアドレスが 10.20.30.40 である場合です。指定する IPアドレスは Private IPs に記載されているものを指定します。

allow ^10\.20\.30\.40$

munin-node を起動します。

$ sudo /etc/init.d/munin-node start

プロセスを確認しましょう。

$ ps aux | grep munin
root     25718  0.0  0.5 143204  8564 ?        Ss   Jun10   0:48 /usr/bin/perl -wT /usr/sbin/munin-node

また、監視する側と通信できるようにポート4949 をあけます。AWS Console > EC2 > セキュリティグループより、それぞれのケースでそれぞれのセキュリティグループを追加してください。

  • 監視する側とされる側でセキュリティグループが同じ場合
    • Custome TCP rule でポート4949
    • 自分自身のセキュリティグループ sg-xxx を選択
  • 監視する側とされる側でセキュリティグループが異なる場合
    • Custome TCP rule でポート4949
    • 監視する側 sg-yyy を選択

これでOK!

監視する側

監視する側であるアプリインスタンス1 に SSHログインします。

Munin をインストールします。

$ sudo yum install -y munin

設定ファイルを編集します。

$ sudo vim /etc/munin/munin.conf

監視されるサーバーの名前と IPアドレスを書きます。以下は IPアドレスが 50.60.70.80 の場合です。

[instance2]
  address 50.60.70.80
  use_node_name yes

# グループにまとめたい場合はセミコロンで区切る
[app;web01]
  ...
[app;web02]
  ...

AWS Console よりセキュリティグループを必要に応じて解放します。今回はポート 50000(管理画面にアクセスするときに使う)と 4949(監視される側との通信でつかう)を解放します。

  • 50000 (HTTPS) 0.0.0.0/0
  • Custom TCP rule: 4949 xx-xxx (myproject)

Munin が生成したページ見るのに Apache をインストールします。

$ sudo yum -y install httpd

設定ファイルを開き、

$ sudo vim /etc/httpd/conf/httpd.conf

次のように編集します。

- Listen 80
+ Listen 50000
...
+ <VirtualHost *:50000>
+     ServerAdmin webmaster@dummy-host.example.com
+     DocumentRoot /var/www/html/munin
+     ServerName dummy-host.example.com
+     ErrorLog logs/dummy-host.example.com-error_log
+     CustomLog logs/dummy-host.example.com-access_log common
+     <Location />
+       AuthUserFile /etc/munin/munin-htpasswd
+       AuthName "hoge"
+       AuthType Basic
+       require valid-user
+     </Location>
+ </VirtualHost>

Apache を起動します。

$ sudo /etc/init.d/httpd start

以下のコマンドで Munin のベーシック認証のユーザ名・パスワードを設定します。

$ sudo htpasswd -c /etc/munin/munin-htpasswd <username>
$ sudo /etc/init.d/munin-node start

http://monitoring.example.com:50000/ にアクセスするとベーシック認証を求められます。設定したユーザ名とパスワードを入力しましょう。

リソース監視画面が確認できれば成功です!

もしグラフが出てこなかったら・・

エラーログを見る
/var/log/munin
/var/log/munin-node/

おわりに(2013年9月30日更新)

快適な Munin ライフをおすごしください!
MySQL も監視対象にしたい場合はこちらの記事をご覧ください:『Amazon RDS の MySQL を Munin で監視する - bekkou68の日記