- [MUNIN+Ubuntu14.04+nginx] サーバやMySQLの状態を監視する方法
- [Munin] MuninでOpen VZゲストOSのメモリ状態を監視する
- [MUNIN] Pythonプラグインで文字コードエラーが発生する際の解決方法
- [Munin] Ubuntu+Nginx+Munin 拡大グラフが表示されないときの対処方法
この記事の内容
- MUNINのUbuntu14.04へのインストール方法
- nginxでMUNINの監視データを閲覧できるようにする方法
- MySQLを監視対象に追加する方法
- 上記のなかでうまくいっていない点について
まえおきの話
Botの運用に向けてサーバ監視したい
近々Discord botの試験運用をはじめようと考えています。
しかし、DBやメモリ・CPUにどの程度余裕があるのか、どこがボトルネックになるのか、まったく見当がつかない状態です。
実際に運用してみて、詳細なログを確認しながら調整を行いたいと思い、サーバ監視をはじめることにしました。
環境
項目 | 内容 |
---|---|
VPSプラン | KAGOYA VPS OpenVZ 6コア 2GBプラン |
OS | Ubuntu 14.04 |
Webサーバ | nginx 1.4.X |
MySQL | MySQL Ver 14.X |
MUNINとは
MUNIN公式ページより(ざっくり翻訳です)
MUNINは、コンピュータのすべてを監視・記録するモニタリングツールです。
記録したデータは、ウェブをとおしてグラフの形式で閲覧することができます。
インストールするだけで、多種多様な項目の監視をすぐにはじめることができます。
MUNINの標準はApacheですが、設定をすこし触ればnginxでも運用できます。
他の選択肢
MUNINはRRDtoolのフロントエンドツールです。
同じようなツールにはcactiがありますが、インストールの手軽さ、プラグインの明快さからMUNINを選択しました。
実際、インストール開始から監視を始めるまで数十分で監視を始めることができました。
注意:うまく動いていない部分があります
筆者の環境では、以下のグラフが描画されていません。
- Disk IOs per device
- Disk latency per device
- Throughput per device
- Utilization per device
~~また、グラフをクリックして拡大する機能も動作していません。
ちょっと調べて見た限りでは、fast-cgiの設定が不十分であるために発生しているようです。解決次第追記します。~~
こちら解決しました。手順を別記事にまとめました。
[Munin] Ubuntu+Nginx+Munin 拡大グラフが表示されないときの対処方法
MUNINのインストール
MUNINを使うには、MUNIN本体とMUNINノード(データ収集するクライアントのようなもの)が必要です。
今回はMUNIN本体を置くサーバと監視対象サーバは同じなので、まとめてインストールします。
$ sudo apt-get install munin-node
$ sudo apt-get install munin
MUNIN本体の設定ファイルを変更します。
$ sudo vim /etc/munin/munin.conf
100行目あたりに、[localhost.localdomain]
というカテゴリがあります。
.localdomain
をとりのぞき、以下のようにします。
[localhost]
address 127.0.0.1
use_node_name yes
最後にサーバとノード、それぞれを再起動してMUNINのインストールは完了です。
$ sudo service munin-node restart
$ sudo service munin restart
nginxの設定
インストールしたMUNINをWebサーバ経由で閲覧できるよう、nginxの設定を行います。
サーバの状態を監視するページなので、BASIC認証を行うよう設定します。
BASIC認証用ファイルの作成
BASIC認証を行うため、htpasswdコマンドを使って認証ファイルを作成します。htpasswdコマンドは、apache2-utils
パッケージに含まれます。
ユーザ名、パスワードは任意のもので構いません。
$ sudo apt-get install apache2-utils
$ sudo htpasswd -c /etc/nginx/.htpasswd_munin (ユーザ名)
New password: (パスワード)
Re-type new password: (パスワード再入力)
nginx設定ファイルの編集
nginxの設定にMUNINへのルーティングを追加します。
$ sudo vim /etc/nginx/sites-enabled/default
追加するのは以下、# ここから --->
# ここまで <---
で囲んでいる部分です。
下記の例は、MUNINの設定をデフォルトから変更していない場合です。
/etc/munin/munin.conf
のhtmldir
を変更した場合、下記を参考に編集してください。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
...
# ここから --->
location ^~ /munin/ {
auth_basic "Enter password";
auth_basic_user_file /etc/nginx/.htpasswd_munin;
alias /var/cache/munin/www/; # 設定のhtmldir
}
# ここまで <---
...
nginxサービス再起動
設定を反映するため、Nginxを再起動します。
$ sudo service nginx restart
この時点で、MUNINのWebインターフェースにアクセスできるようになっているはずです。
http://(サーバのIPアドレスまたはホスト名)/munin/
にアクセスしてみましょう。
MySQLの監視設定
MySQLにMUNIN用ユーザを追加
MySQL用のパスワードとユーザ名を決めておきましょう。
以下の例では、ユーザ名munin
、パスワードmuninpass
としています。
$ mysql -u root -p
> GRANT ALL PRIVILEGES ON *.* TO munin@localhost IDENTIFIED BY 'muninpass';
> FLUSH PRIVILEGES;
> exit
munin-nodeの設定にMySQL接続情報を追加
さきほど追加したMySQLユーザ情報をmunin-nodeに設定してあげます。
$ sudo vim /etc/munin/plugin-conf.d/munin-node
重要なのは、-pmuninpass
としているように、-pとパスワード文字列の間にスペース等を置かないことです。間違えやすいので気をつけてください。
また、MySQLのポート番号を変更している場合、3306
の部分をあなたのサーバのポートに書き換えてください。
[mysql*]
env.mysqlopts -u munin -pmuninpass
env.mysqladmin /usr/bin/mysqladmin
env.mysqlconnection DBI:mysql:mysql;host=localhost;port=3306(mysql port)
env.mysqluser munin
env.mysqlpassword munindb
Perlライブラリのインストール
MySQLの監視を行うために必要なPerlのCacheライブラリをインストールします。
$ sudo apt-get install libcache-cache-perl
MySQLプラグインの追加
MUNINの監視項目を増やすのは非常に簡単です。/etc/munin/plugins/
フォルダにプラグインファイルを置いてサービスを再開するだけで、「監視対象としてのデータ蓄積開始」「Webインターフェースでの項目の追加」の両方が完了します。
既定のプラグインは、/usr/share/munin/plugins
にインストールされています。このうち、監視したい項目のプラグインを/etc/munin/plugins/
フォルダにコピー(またはシンボリックリンクを作成)すればOKです。
$ sudo ln -s /usr/share/munin/plugins/mysql_slow /etc/munin/plugins/mysql_slow
$ sudo ln -s /usr/share/munin/plugins/mysql_commands /etc/munin/plugins/mysql_commands
$ sudo ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes
$ sudo ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads
$ sudo ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
$ sudo ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
コネクション数も監視対象にしたいのですが、デフォルトでインストールされているプラグインの中にはありません。
このような場合は、GitHub等からダウンロードしましょう。
$ sudo wget -P /usr/share/munin/plugins/ https://raw.github.com/munin-monitoring/contrib/master/plugins/mysql/mysql_connections
$ sudo ln -s /usr/share/munin/plugins/mysql_connections /etc/munin/plugins/mysql_connections
サービス再起動
最後にサーバとノード、それぞれを再起動して完了です。
$ sudo service munin-node restart
$ sudo service munin restart
Nginx CGI設定
グラフの拡大機能を利用するには、追加で設定が必要です。
別記事にまとめてありますので、拡大機能を利用したい方は以下をご覧ください。
[Munin] Ubuntu+Nginx+Munin 拡大グラフが表示されないときの対処方法
- [MUNIN+Ubuntu14.04+nginx] サーバやMySQLの状態を監視する方法
- [Munin] MuninでOpen VZゲストOSのメモリ状態を監視する
- [MUNIN] Pythonプラグインで文字コードエラーが発生する際の解決方法
- [Munin] Ubuntu+Nginx+Munin 拡大グラフが表示されないときの対処方法