CentOS6にmuninをインストールして、nginxで表示する設定をやってみました。本稿執筆時点で epel リポジトリにある munin は2.0.16 なので、ブラウザからグラフをズームすることができます。今回はさくらのVPS 2G (CentOS 6.4 x86_64) にすべてのパッケージをyumでインストールして設定してみました。
※ 2014/04/16 追記: 最新版のもっと楽な手順をこちらに書きましたので、検索から来られた方は、まずこちらをご参照いただければ幸いです。
■ パッケージの準備
さくらのVPSはあらかじめ、epel リポジトリが有効になっています。私はepelリポジトリを残していますが無効化していますので、今回の記事中でパッケージをインストールする際は --enablerepo=epel をつけてください。また、前回のエントリを参考に nginx を CentALT リポジトリからインストールする際は、epel リポジトリから先に GeoIP をインストールしておきましょう。nginxオフィシャルの最新パッケージはこちらのリンクから入手できます。
■ munin と spawn-fcgi をインストールする
これらのパッケージはすべて epel リポジトリからインストールします。
[ (っ´∀`)っ@友の会 ~]$ sudo yum --enablerepo=epel install munin munin-node spawn-fcgi ※ CentALTリポジトリからnginxをインストールする場合 [ (っ´∀`)っ@友の会 ~]$ sudo yum --enablerepo=epel install GeoIP munin munin-node spawn-fcgi
■ nginx インストール
※ nginx リポジトリから nginx をインストールする場合 sudo yum --enablerepo=nginx install nginx ※ CentALT リポジトリから nginx をインストールする場合 sudo yum --enablerepo=CentALT install nginx
パッケージのインストールは以上になります。それでは各々の設定を続けましょう。
■ munin の設定
今回、munin の各CGIはUNIXソケット経由でのアクセスとします。また、グラフやhtmlの生成は cron ではなく CGI が行うようにします。
[ (っ´∀`)っ@友の会 ~]$ sudo vi /etc/munin/munin.conf ここを graph_strategy cron ↓ こうする graph_strategy cgi ここを html_strategy cron ↓ こうする html_strategy cgi
あと、最初から「cgiurl_graph /munin/cgi-graph」と設定されていることも確認しておいてください。
■ spawn-fcgi の設定
/var/www/cgi-bin/munin-cgi-graph と /var/www/cgi-bin/munin-cgi-html にソケット経由でアクセスするスタートスクリプト /etc/init.d/munin-fcgi を書きました。ただし本当に手抜きです。
[ (っ´∀`)っ@友の会 ~]$ sudo touch /etc/init.d/munin-fcgi [ (っ´∀`)っ@友の会 ~]$ sudo chmod 700 /etc/init.d/munin-fcgi [ (っ´∀`)っ@友の会 ~]$ sudo vi /etc/init.d/munin-fcgi
#!/bin/bash # # munin-fcgi Startup script for munin-fcgi # # chkconfig: - 85 15 # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 LANG=C PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/bin/spawn-fcgi SOCK_USER=nginx FCGI_USER=munin FCGI_GROUP=munin CMDPATH=/var/www/cgi-bin RUNPATH=/var/run/munin GRAPHCMD=munin-cgi-graph HTMLCMD=munin-cgi-html if [ ! -x $DAEMON ]; then echo "File not found or is not executable: $DAEMON!" exit 0 fi start(){ if [ ! -e ${RUNPATH}/${GRAPHCMD}.sock ]; then ${DAEMON} -s ${RUNPATH}/${GRAPHCMD}.sock -U ${SOCK_USER} -u ${FCGI_USER} -g ${FCGI_GROUP} ${CMDPATH}/${GRAPHCMD} else rm -f ${RUNPATH}/${GRAPHCMD}.sock ${DAEMON} -s ${RUNPATH}/${GRAPHCMD}.sock -U ${SOCK_USER} -u ${FCGI_USER} -g ${FCGI_GROUP} ${CMDPATH}/${GRAPHCMD} fi if [ ! -e ${RUNPATH}/${HTMLCMD}.sock ]; then ${DAEMON} -s ${RUNPATH}/${HTMLCMD}.sock -U ${SOCK_USER} -u ${FCGI_USER} -g ${FCGI_GROUP} ${CMDPATH}/${HTMLCMD} else rm -f ${RUNPATH}/${HTMLCMD}.sock ${DAEMON} -s ${RUNPATH}/${HTMLCMD}.sock -U ${SOCK_USER} -u ${FCGI_USER} -g ${FCGI_GROUP} ${CMDPATH}/${HTMLCMD} fi } stop(){ for i in $(ps -aef | egrep "(${GRAPHCMD}$|${HTMLCMD}$)" | awk '{print $2}') do kill -9 $i done rm -f ${RUNPATH}/${GRAPHCMD}.sock rm -f ${RUNPATH}/${HTMLCMD}.sock } case $1 in [sS][tT][aA][rR][tT]) start ;; [sS][tT][oO][pP]) stop ;; [rR][eE][sS][tT][aA][rR][tT]) stop && start esac
■ nginx のバーチャルホスト設定
http://munin.example.com/ 直下にアクセスした場合、 http://munin.example.com/munin/ へ飛ばす設定、ベーシック認証、CGIの設定をしてあげます。設定ファイルはこんな感じです。
server { listen 80; server_name munin.example.com; access_log /home/vhosts/munin.example.com/logs/access.log main; error_log /home/vhosts/munin.example.com/logs/error.log; auth_basic "admin only"; auth_basic_user_file /home/vhosts/munin.example.com/.htpasswd; location / { rewrite ^/$ munin/ redirect; break; } location ^~ /munin-cgi/munin-cgi-graph/ { fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*); fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass unix:/var/run/munin/munin-cgi-graph.sock; include fastcgi_params; } location /munin/static/ { alias /etc/munin/static/; } location /munin/ { fastcgi_split_path_info ^(/munin)(.*); fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass unix:/var/run/munin/munin-cgi-html.sock; include fastcgi_params; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
こちらを参考にベーシック認証の設定をしてあげて、 /etc/init.d/munin-node 、 /etc/init.d/munin-fcgi 、 /etc/init.d/nginx から各々起動し、chkconfig で自動起動設定しましょう。ブラウザからアクセスし、グラフがズームできればおしまいです。
[amazonjs asin="4048702270" locale="JP" title="ハイパフォーマンスHTTPサーバ Nginx入門"]
※ 参考サイト様
Mos's blog: munin 2.0.x on centos 6 ( rhel 6 ) nginx
MuninのグラフをCGIリアルタイム生成して負荷軽減する方法(munin-cgi-graph) | Pocketstudio.jp log3
munin2で動的にグラフを作成 - ゆるゆると