AWS S3の監視にINFRASTRUCTUREを使ってみる

# はじめに
前回はWordPressをNew RelicのAPMとINFRASTRUCTUREを使って監視してみました。

- [New RelicのAPMとINFRASTRUCTUREを使って監視してみました（前半）](http://qiita.com/KUROPON/items/d62b7bba04e421860dda)
- [New RelicのAPMとINFRASTRUCTUREを使って監視してみました（後半）](http://qiita.com/KUROPON/items/c5a6e0aff2fd8b850da0)

今回はWordPressのPlugin機能を使用して、画像や動画などのメディアファイルをAWS S3に保存し、InfrastructureのIntegrationsでAWS S3を統合監視してみたいと思います。

AWS S3にアップロードするPluginとしては、

- [Amazon S3 for WordPress with CloudFront](https://wordpress.org/plugins/tantan-s3-cloudfront/)
- [WP Offload S3 Lite](https://wordpress.org/plugins/amazon-s3-and-cloudfront/)

などがありましたが、導入が簡単そうな"Amazon S3 for WordPress with CloudFront"を使いたいと思います。

# S3プラグインの導入 (WordPress)

####１）プラグインのダウンロード
まずは[上記サイト]((https://wordpress.org/plugins/tantan-s3-cloudfront/))から、プラグインをダウンロードします。(2016年12月時点では、tantan-s3-cloudfront.0.4.1.1.zip)

####２）プラグインのインストール
WoredPressの設定画面から、先ほどダウンロードしたプラグインをアップロードします。
![image](https://qiita-image-store.s3.amazonaws.com/0/150422/2bb5b97b-39e7-fdb2-58b4-5815e0e45a88.png)

####３）プラグインの有効化
インストールが完了したら、プラグインを有効化します

![image](https://qiita-image-store.s3.amazonaws.com/0/150422/4e3454eb-7962-fc89-1cbd-556cc31432e2.png)

####４）プラグインの設定
AWSのS3とIAMの情報を元に、下記内容にて設定

![image](https://qiita-image-store.s3.amazonaws.com/0/150422/8e5abc8c-f47c-e729-003a-aa19ac3a2f68.png)

|項目 | 設定内容 |
|:----|:----|
|AWS Access Key ID   |AWS IAMで作成したアクセスキー入力|
|Secret Key   |AWS IAMで作成したシークレットキーを入力|
|Use this bucket|保存先になるAWS S3のbucketを選択|
|File Uploads|アップロード許可のためチェック|
|File Permissions|Publicアクセス許可のためチェック|

# New Relic INFRASTRUCTUREの設定
前回のINFRASTRUCTUREの設定時に、AWSサービスでS3を選択済みならNew Relic側の設定は不要です。選択しなかかった場合はS3をモニター対象として設定する必要があるので、下記方法で設定変更します。

####１）"INFRASTRUCTURE"の"Integrations"から"Manage Services"を選択します。

![image](https://qiita-image-store.s3.amazonaws.com/0/150422/45357854-ab64-61e5-9e1e-f0592256ee88.png)

####２）AWSサービスのモニター選択でS3を有効にして変更保存します

![image](https://qiita-image-store.s3.amazonaws.com/0/150422/ed337ec3-dc93-0a67-d2bf-89265ab68045.png)

# New Relicによる AWS S3 統合監視
AWS S3 のメトリック情報はINFRASTRUCTUREのIntegrationsにより、INSIGHTS機能を使用して確認することができます。収集できるメトリックは、[Amazon S3 CloudWatch Daily Storage Metrics for Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html#s3-cloudwatch-metrics)に記載されている下記2種類となります。

|Metric|説明|
|:--|:--|
|BucketSizeBytes|標準ストレージクラス、標準 - 低頻度アクセス（Standard IA）ストレージクラス、または冗長ストレージ（RRS）クラスのバケットに格納されたバイト単位のデータ量。|
|NumberOfObjects|GLACIERストレージクラスを除くすべてのストレージクラスのバケットに格納されているオブジェクトの総数|

AWSサービスのモニター選択でS3を有効にすると、サンプルとしてダッシュボード(AWS S3)が作成されます。サンプルのNRQLを参考にしながらカスタムダッシュボードを作成することでAPM含め統合監視ができるようになりました。

詳細内容は[AWS S3 integration](https://docs.newrelic.com/docs/infrastructure/infrastructure-integrations/amazon-integrations/aws-s3-integration)に書いてあるので、カスタムダッシュボード作成時にご参考ください。

####・NRQL

```mysql:Top5_buckets_by_Count
SELECT average(`provider.numberOfObjects.Average`) from DatastoreSample WHERE provider = 'S3Bucket' AND providerAccountId = 'xxx' TIMESERIES 1 day FACET entityName SINCE 1 week ago until 1 day ago limit 5
```
```mysql:Top_Buckets_by_Size_(Bytes)
SELECT average(`provider.bucketSizeBytes.Average`) from DatastoreSample WHERE provider = 'S3Bucket' AND providerAccountId = 'xxx' TIMESERIES 1 day FACET entityName SINCE 1 week ago until 1 day ago limit 5
```
####・INSIGHTS AWS S3デフォルトダッシュボード
![image](https://qiita-image-store.s3.amazonaws.com/0/150422/629907d6-910a-54c7-19ba-1a14c70d43a2.png)