munin 3分間インストール – CentOS6にmuninをインストールしnginxで表示する – グラフの動的生成もするよ!その2


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

そしてブラウザから見てみるとこの通りです。ね、簡単でしょう?
munin_20140416

 

お疲れ様でした。