この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の21日目です。
それでは21日目は mackerel-plugin-aws-cloudfront
です。
※2018/12/21 追記 MackerelのAWSインテグレーションにCloudFrontも追加されています。
mackerel-plugin-aws-cloudfrontはAWSが提供する Amazon CloudFront 専用プラグインです。
インストールと設定手順
Amazon CloudFrontのプラグインは CloudWatch
と同等の内容を可視化してくれるプラグインです。
本プラグインはプラグイン集として提供しているパッケージの mackerel-agent-plugins
に含まれています。
インストール先は mackerel-plugin-aws-cloudfront
です。
次にMackerelのプラグインはコマンドですので実行する事ができます。
※下記は実行する環境はEC2でCloudWatchにアクセスできるようにIAMロールを割り当てしています。
-- /usr/bin はPATHが通っているので省略出来ます $ mackerel-plugin-aws-cloudfront -identifier=<distribution id> cloudfront.Transfer.BytesDownloaded 15526 1513831522 cloudfront.Transfer.BytesUploaded 0 1513831522 cloudfront.ErrorRate.4xxErrorRate 0 1513831522 cloudfront.ErrorRate.5xxErrorRate 0 1513831522 cloudfront.Requests.Requests 3 1513831522
設定ファイルであるmackerel-agent.confは標準では /etc/mackerel-agent/mackerel-agent.conf
にインストールされます。
confの設定などはREADME.mdにしっかり纏まっているのでご参考ください。
以上を行った上でmackerel-agentを再起動してください。
見れるメトリック
各グラフ定義ごとに説明します。
それでは各グラフ定義ごとに説明します。
また表に出てくるdiffとはプラグイン上で差分値計算をするかどうかです。
◯
となっている項目はプラグインで前回の実行時の値と差分値計算して出力しています。
CloudFront Requests
メトリック名(ラベル) | プラグインの出力名 | diff | 説明 |
---|---|---|---|
Requests | cloudfront.Requests.Requests | ー | リクエストの総数 |
CloudFrontの指定したDistributionに対するリクエスト数です。 このリクエストには200、404の全てのHTTPレスポンスが含まれます。 勿論GET、HEAD、POST などのメソッドも全てカウントの対象です。
CloudFront Transfer
メトリック名(ラベル) | プラグインの出力名 | diff | 説明 |
---|---|---|---|
Download | cloudfront.Transfer.BytesDownloaded | ー | ダウンロードしたバイト数 |
Upload | cloudfront.Transfer.BytesUploaded | ー | アップロードしたバイト数 |
CloudFrontの指定したDistributionに対する転送状況です。 リクエストに対してどれくらい実際に転送量が発生しているか比較するようにしましょう。
CloudFront ErrorRate
メトリック名(ラベル) | プラグインの出力名 | diff | 説明 |
---|---|---|---|
4xx | cloudfront.ErrorRate.4xxErrorRate | ー | HTTP ステータスコードが 4xx エラーであったリクエスト数 |
5xx | cloudfront.ErrorRate.5xxErrorRate | ー | HTTP ステータスコードが 5xx エラーであったリクエスト数 |
こちらはリクエストの中でどれくらい失敗してるかを表しています。 失敗する理由は色々ありますが勿論ERRORはない方が良いので定期的に確認しましょう。 リクエストを捌いているつもりでも実はうまくイメージが取得できていなかった!ってこともありえます。
CloudFrontを一つのホストとして監視したい
プラグインはどこかで実行する必要があるのでEC2で実行するとCloudFrontのメトリックがEC2に紐付いてしまいます。 こちら運用する際に本来のロールと変わってしまうのでわかりにくい問題があります。 そこでmkrコマンドでホストを作成し、そちらにカスタムメトリックを送る方法をご紹介します。 この方法はCloudFront以外のPaaSなどでも同じように使うことができます。
mkrをインストールする
公式ドキュメントをご活用ください mackerel.ioホストを作成する
ホストの作成方法はmkr create --customIdentifier=<任意なユニークな文字列> <ホスト名>
としましょう。 実際にはこのような感じになります。
# mkr create --customIdentifier=test123 demo created 3c4fQPZ8ktN
3c4fQPZ8ktN
の部分はhost idです。実際に詳細を見てみましょう。
# mkr hosts -v -n=demo [ { "id": "3c4fQPZ8ktN", "name": "demo", "customIdentifier": "test123", "type": "unknown", "status": "working", "createdAt": 1513837649, "meta": { "cloud": {} } } ]
作られていますね。
今回は指定していませんがホストの作成時に --service
や --role
を指定することもできます。
- メトリックの投稿
いよいよメトリックの投稿です。 プラグインを追加しているEC2のmackerel-agent.confに下記のように追加しましょう。
[plugin.metrics.cloudfront] command = "mackerel-plugin-aws-cloudfront -identifier=<distribution id>" custom_identifier = "<先程指定したcustom_identifier>"
今回の例ですと custom_identifier=test123
になります。
これで新たに作成したホストのカスタムメトリックとして送られるようになります。
※新たに作成したホストも当然課金の対象ですのでご注意ください!!
CloudFrontのdistributionが複数監視したい
例えばCloudFrontのホストを作成してカスタムメトリックを投稿したとして、distributionが有った場合に複数のホストを作成するのはコストがかかってしまいます。
とは言え、同じホストに送ってしまうとグラフがぶつかってしまう…。
そんな時は metric-key-prefix
を指定するようにしましょう!
するとグラフがそれぞれ別にすることができます。
CloudFrontは現状ではAWSインテグレーションしていないのですが可視化されると非常に便利ですのでこの機会に是非試してみてください。
21日目はAWSが提供する Amazon CloudFront プラグインについての説明でした。 PaaSの監視はMackerelのAPIを使うともっと色んな方法がある楽しい部分の一つです。 この機会にみなさんも是非色々試してみてください。
それでは次回は次世代WebServerとして注目を浴びているにH2Oの監視です。 引き続き、Mackerel プラグインアドベントカレンダーをお楽しみに!