MongoDBの監視をNew Relicでやってみよう


New RelicのプラグインであるMongoDB Pluginを入れて、MongoDBのリソース状況を監視してみたので、手順を書きます。
今回はEC2のAmazon Linuxにインストールしました。

なお、MongoDBのリソース監視には本家が作っているMMS(MongoDB Management Service)というものもあります。こちらは12月後半に登場予定です。

## New Relic とは

![Screen Shot 2013-12-09 at 12.36.37 PM.png](https://qiita-image-store.s3.amazonaws.com/0/32750/accd9455-bac5-2ab4-0749-6248f913bf35.png "Screen Shot 2013-12-09 at 12.36.37 PM.png")

クラウドでサーバのリソース状況を監視してくれるサービスです。各リソースに閾値を設定できて、超えるとメールで通知してくれます（例: CPU 90%以上など）。サービスの生死確認もできます。
今回の利用範囲は無料で使えます。

アカウントを作成して、License Keyを取得しておきましょう。

## MongoDB　Pluginで何ができるの？

以下のデータがグラフィカルに確認できます。

- データベース オペレーションの概要（Insert, Updateの件数など）
- インデックスの使用状況
- ファイルシステムの書き込み状況
- ロック（クライアント数、ロックキュー、ロック時間など）
- データサイズ（ファイルサイズ、コレクション数、インデックス数など）
- システムメモリ（Mapped Memory, Page Faultsなど）


## 手順のダイジェスト

1. 監視対象サーバへnewrelic agentのインストールと起動
1. pipでmongodb用newrelic pluginをインストール
1. newrelic plugin用のコンフィグファイルを編集
1. newrelic pluginの起動

New RelicのダッシュボードにMongoDBが追加されます。


## 監視対象サーバへnewrelic agentのインストール

rpmからNew Relicのエージェントである、newrelic-sysmondをインストールします。コンフィグにLicense Keyを設定した後に、起動します。

```
sudo rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm
sudo yum -y install newrelic-sysmond
sudo nrsysmond-config --set license_key=#License Key#
sudo /etc/init.d/newrelic-sysmond start
```

New Relicのサイトへログインして、監視対象サーバが追加されていたら成功です。


## pipでmongodb用newrelic pluginをインストール

pipのインストール

```
sudo yum -y install python-pip
sudo yum -y install gcc python-devel  # c extensionをコンパイルするため
sudo pip install newrelic-plugin-agent  # plugin-agentをインストール
sudo pip install newrelic_plugin_agent[mongodb]  # mongodb用の追加ファイルをインストール
```

<code>newrelic_plugin_agent -h</code>で情報が表示されたら成功です。


## newrelic plugin用のコンフィグファイルを編集

<code>/opt/newrelic_plugin_agent/newrelic_plugin_agent.cfg</code>からコピーします。

```
cp /opt/newrelic_plugin_agent/newrelic_plugin_agent.cfg /etc/newrelic/newrelic_plugin_agent.cfg
```

License Keyを記入

```newrelic_plugin_agent.cfg
%YAML 1.2
---
Application:
  license_key: # ここにLicense Keyを書く
  wake_interval: 60
  #proxy: http://localhost:8080
```

MongoDB用の設定をコメントアウトを外して監視サーバの情報を記入

```newrelic_plugin_agent.cfg
  mongodb:
    name: kitchhike.com
    host: localhost
    port: 27017
  #  admin_username: user
  #  admin_password: pass
  #  ssl: False
  #  ssl_keyfile: /path/to/keyfile
  #  ssl_certfile: /path/to/certfile
  #  ssl_cert_reqs: 0  # Should be 0 for ssl.CERT_NONE, 1 for ssl.CERT_OPTIONAL, 2 for ssl.CERT_REQUIRED
  #  ssl_ca_certs: /path/to/cacerts file
    databases:
      - kitchhike_production
```


## newrelic pluginの起動

```
newrelic_plugin_agent -c /etc/newrelic/newrelic_plugin_agent.cfg
```

ダッシュボードの左側のメニューに、MongoDBが追加されれば成功です。


![Screen Shot 2013-12-09 at 12.31.43 PM.png](https://qiita-image-store.s3.amazonaws.com/0/32750/d8dd47f6-b5b8-e404-e6d4-d1886b1a0f27.png "Screen Shot 2013-12-09 at 12.31.43 PM.png")


## トラブルシューティング

<code>/var/log/newrelic/newrelic_plugin_agent.log</code>を見てみましょう。

こちらも参考に。
https://github.com/MeetMe/newrelic-plugin-agent#troubleshooting

## 参考URL

- New Relicでアプリケーションのパフォーマンス測定
http://dev.classmethod.jp/tool/newrelic/ 
- New Relic MongoDB Plugin http://newrelic.com/plugins/meetme-inc/94
- installation-instructions
https://github.com/MeetMe/newrelic-plugin-agent#installation-instructions