CentOSでmuninをnginx経由で表示する設定を以前ご紹介しましたが、以前はcgiまわりのスタートスクリプトを自作したりしなくちゃならなくて面倒だったのですが、最近のバージョンだとcgiの設定が楽になったので、あらためて手順をご紹介します。
環境
サーバ: さくらVPS 2G
OS: CentOS 6.5 64bit
インストールしたパッケージは以下の通りです。
munin.noarch 2.0.19-1.el6 @epel munin-common.noarch 2.0.19-1.el6 @epel munin-nginx.noarch 2.0.19-1.el6 @epel munin-node.noarch 2.0.19-1.el6 @epel nginx.x86_64 1.5.13-1.el6 @CentALT spawn-fcgi.x86_64 1.6.3-1.el6 @epel
なお、まっさらなOSをインストールしてからすべての手順が完了するまでに3分かかりました。って書くと全校朝礼の校長先生みたいですね。configの作成と修正にヒアドキュメントとsedしか使っていないので、シェルスクリプト(というかワンライナーを並べただけのテキスト)の実行だけで本当に待つだけです。解説のあとにコードを置いておきますので、自動展開のお役に立てていただければと思います。
■ 前提条件 1
一般ユーザでログイン後、rootで作業するかsudoを使えるようにしてください。
■ 前提条件 2
さくらのVPSでは最初からepelリポジトリが有効になっているので、その他のCentOS環境や意図してepelリポジトリを無効にしている場合は、epelリポジトリを有効化するか、yumコマンドの後に --enablerepo=epel をつけて実行してください。
■ CentALTリポジトリ追加
nginxの最新版をインストールするためにCentALTのリポジトリを追加します。
sudo touch /etc/yum.repos.d/centos.alt.ru.repo sudo chmod 666 /etc/yum.repos.d/centos.alt.ru.repo echo '[CentALT] name=CentALT Packages for Enterprise Linux 6 - $basearch baseurl=http://centos.alt.ru/repository/centos/6/$basearch/ enabled=0 gpgcheck=0' > /etc/yum.repos.d/centos.alt.ru.repo sudo chmod 644 /etc/yum.repos.d/centos.alt.ru.repo
■ nginxインストール
yumコマンドの後に「--enablerepo=CentALT」をつけてインストールします。
sudo yum -y --enablerepo=CentALT install nginx
■ munin関連のパッケージとspawn-fcgiのインストール
sudo yum -y install munin munin-common munin-nginx munin-node spawn-fcgi
■ nginx設定ファイル編集
/etc/nginx/conf.d/munin.conf を編集します。
・ ファイルのバックアップ
sudo cp -p /etc/nginx/conf.d/munin.conf /etc/nginx/conf.d/munin.conf.orig
・ server_name を実ホスト名に変更する
特に独自ドメインでの運用を必須としていないので、「wwwほにゃらら.sakura.ne.jp」に置換しています。ここはお好みで。
sudo sed -i "s/localhost;/$(uname -n);/" /etc/nginx/conf.d/munin.conf
その他、/etc/nginx/nginx.conf の設定で worker_processes の値をコア数に合わせたりするなどの細かい作業もありますが、ここでは省きます。
■ munin設定ファイル編集
/etc/munin/munin.conf を編集します。
・ ファイルのバックアップ
sudo cp -p /etc/munin/munin.conf /etc/munin/munin.conf.orig
・ 設定変更
sudo sed -i 's/#dbdir/dbdir/' /etc/munin/munin.conf sudo sed -i 's/#htmldir/htmldir/' /etc/munin/munin.conf sudo sed -i 's/#logdir/logdir/' /etc/munin/munin.conf sudo sed -i 's/#rundir/rundir/' /etc/munin/munin.conf sudo sed -i 's/cron$/cgi/g' /etc/munin/munin.conf
最初の4つは、コメントアウトを外しています。
#dbdir /var/lib/munin -> dbdir /var/lib/munin
#htmldir /var/www/html/munin -> htmldir /var/www/html/munin
#logdir /var/log/munin -> logdir /var/log/munin
#rundir /var/run/munin -> rundir /var/run/munin
次に、graph_strategyとhtml_strategyの値をcronからcgiに変更しています。
graph_strategy cron -> graph_strategy cgi
html_strategy cron -> html_strategy cgi
■ munin-node、munin-fcgi-graph、munin-fcgi-html、nginxの起動
ここまでできたら、munin-node、munin-fcgi-graph、munin-fcgi-html、nginxを起動します。
sudo /etc/init.d/munin-node start sudo /etc/init.d/munin-fcgi-graph start sudo /etc/init.d/munin-fcgi-html start sudo /etc/init.d/nginx start
自動実行設定も忘れずに。
sudo chkconfig munin-node on sudo chkconfig munin-fcgi-graph on sudo chkconfig munin-fcgi-html on sudo chkconfig nginx on
■ ハマりポイント
どうやら munin-fcgi-graph と munin-fcgi-html の起動がたまにコケるように見えたので、/var/run/munin 以下のソケットにアクセスできないのかなーと疑ってみたりしたのですが、ディレクトリのパーミッションを変えたりしても再現したりしなかったりでした。結論としては、特にファイルやディレクトリのパーミッションは弄ったりしなくてもよくて、 /etc/init.d/munin-fcgi-graph と /etc/init.d/munin-fcgi-html を何度かrestartすれば解決しました。また、ブラウザからのアクセスも最初の起動から5分くらいおいてから行うとよいかも知れません。
■ munin 3分間インストールスクリプト
上記の作業をまるっとスクリプトにしたのが以下のコードです。ifもforもなく、ただただシーケンシャルに実行するだけなので、エラーハンドリングとかは考慮していません。
#!/bin/bash sudo touch /etc/yum.repos.d/centos.alt.ru.repo sudo chmod 666 /etc/yum.repos.d/centos.alt.ru.repo echo '[CentALT] name=CentALT Packages for Enterprise Linux 6 - $basearch baseurl=http://centos.alt.ru/repository/centos/6/$basearch/ enabled=0 gpgcheck=0' > /etc/yum.repos.d/centos.alt.ru.repo sudo chmod 644 /etc/yum.repos.d/centos.alt.ru.repo sudo yum -y --enablerepo=CentALT install nginx sudo yum -y install munin munin-common munin-nginx munin-node spawn-fcgi sudo cp -p /etc/nginx/conf.d/munin.conf /etc/nginx/conf.d/munin.conf.orig sudo sed -i "s/localhost;/$(uname -n);/" /etc/nginx/conf.d/munin.conf sudo cp -p /etc/munin/munin.conf /etc/munin/munin.conf.orig sudo sed -i 's/#dbdir/dbdir/' /etc/munin/munin.conf sudo sed -i 's/#htmldir/htmldir/' /etc/munin/munin.conf sudo sed -i 's/#logdir/logdir/' /etc/munin/munin.conf sudo sed -i 's/#rundir/rundir/' /etc/munin/munin.conf sudo sed -i 's/cron$/cgi/g' /etc/munin/munin.conf sudo /etc/init.d/munin-node start sudo /etc/init.d/munin-fcgi-graph start sudo /etc/init.d/munin-fcgi-html start sudo /etc/init.d/nginx start sudo chkconfig munin-node on sudo chkconfig munin-fcgi-graph on sudo chkconfig munin-fcgi-html on sudo chkconfig nginx on sudo chkconfig munin-node --list sudo chkconfig munin-fcgi-graph --list sudo chkconfig munin-fcgi-html --list sudo chkconfig nginx --list
そしてブラウザから見てみるとこの通りです。ね、簡単でしょう?
お疲れ様でした。
[amazonjs asin="4774150371" locale="JP" title="サーバ/インフラエンジニア養成読本 管理/監視編 24時間365日稼働を支える知恵と知識が満載! (Software Design plus)"]