New Relic Infrastructureでミドルウェアを監視する ～Nginx編～

# はじめに
New Relicのサーバリソース監視サービス[Infrastructure](https://newrelic.nissho-ele.co.jp/products/newrelic-infrastructure)の新機能がリリースされました。
その名も**on Host Integration**という機能です。
これはNew Relic [Infrastructure](https://newrelic.nissho-ele.co.jp/products/newrelic-infrastructure)で監視しているホストの上で動くミドルウェア(Webサーバやデータベースなど)の監視を行う機能となります。

on Host Integrationによって、[Infrastructure](https://newrelic.nissho-ele.co.jp/products/newrelic-infrastructure)でもともと監視可能なCPU、メモリなどのサーバリソース情報に加えて、Webサーバへのコネクション数やDBのクエリ数など、ミドルウェア周りの監視メトリクスも取得出来るようになりました。

従来であればPluginsで取得する必要のあったミドルウェア部分が、[Infrastructure](https://newrelic.nissho-ele.co.jp/products/newrelic-infrastructure)上で監視できるようになったことにより、New Relicでのフルスタック監視がより実現しやすくなったといえます。

現在、on Host Integrationに対応しているミドルウェアはMySQL、Cassandra、Nginxの３種類。

今回はon Host Integrationを使って、実際にNginxの監視を行ってみたいと思います。
設定を行う環境は下記のとおりです。

- 起動環境: AWS EC2
- OS: RHEL 7.4
- Nginx: 1.12.2

# インストール手順
## 0. New Relic Infrastructureエージェントのインストール
まずは監視対象のNginxが動作するInfrastructure Agentをインストールします。手順については、[New RelicのAPMとINFRASTRUCTUREを使って監視してみました（後半）](https://qiita.com/KUROPON/items/c5a6e0aff2fd8b850da0)の記事を参考に実施します。

まだNew Relicでアカウント作成されていない方は[こちら](https://newrelic.nissho-ele.co.jp/)から。

## 1.on Host Integration用パッケージのインストール　
ここからOn Host Integrationの設定となります。 
yumもしくはapt-getを用いて、on Host Integration用に用意されたパッケージをインストールします。

- yumの場合
`# sudo yum -q makecache -y --disablerepo='*' --enablerepo='newrelic-infra'`
`# sudo yum install newrelic-infra-integrations`

- apt-getの場合
`# sudo apt-get update`
`# sudo apt-get install newrelic-infra-integrations `

##2. Nginx設定ファイルの変更
On Host Integrationでは、NginxのStub Statusモジュールを介してメトリクスを取得します。Nginxの設定ファイルに当該モジュールを追記して…


```/etc/nginx/nginx.conf
#追記箇所のみ記入
server{
    location /nginx_status {
        stub_status on;
    }
}
```
追記後、Nginxを再起動します。
`#sudo systemctl restart nginx`

##3. On Host tegration用設定ファイルの変更
On Host Integration用の設定ファイルが保存されたディレクトリに移動し、サンプルファイルを元に設定ファイルを作成します。

`# cd /etc/newrelic-infra/integrations.d`
`# sudo cp nginx-config.yml.sample nginx-config.yml`

コピー後、nginx-config.ymlの設定一部を修正します。

```nginx-config.yml
#変更箇所のみ記入
          status_url: http://127.0.0.1/nginx_status
```

変更後、Infrastructure Agentを再起動させます。

``# sudo systemctl restart newrelic-infra``

##4. 画面の確認
それでは、実際に[Infrastructure](https://newrelic.nissho-ele.co.jp/products/newrelic-infrastructure)のOn Host Integrationにて、監視メトリクスが表示されるか確認してみましょう。
まず、InfrastructureのTOP画面上部のタブより\、**Integration**を選択します。

![SnapCrab_NoName_2017-10-18_15-57-46_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/150903/7f739f95-b0a2-8e97-66d1-f44b9d532bcd.png)

次に、上部の**On Host Integration**を選択し、当該画面に**NGINX**が表示されていればOn Host Integration for Nginxの設定は成功です！

![SnapCrab_NoName_2017-10-18_15-58-7_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/150903/0640622d-b007-c685-5d15-f54fb2a7a948.png)

**NGINX dashboard**を押下して、実際のモニタリング画面を見てみましょう。ちなみに、On Host Integrationでは、Infrastructureエージェントが取得したNginx監視メトリクスをまとめてInsightsに表示します。リクエスト数やアクティブなコネクション数などのメトリクスを確認することができますね。

![SnapCrab_NoName_2017-10-18_15-59-1_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/150903/c52f7039-a277-3bb2-d5fe-99d8d23f1655.png)

# おわりに
従来であれば、New Relic Pluginsで監視することが求められたミドルウェア監視も、On Host Integrationによって、いくつかの簡単な設定のみでNew Relic上で監視することができるようになりました。
現在はOn Host Integrationに対応しているミドルウェアは3種類のみですが、今後は様々なミドルウェアが対応されるとのことです。New Relicのフルスタック監視ツールとしての使い勝手がより向上されるのは喜ばしいですね！