この記事は「もくもく会ブログリレー」 10 日目 の記事です。

はじめに

こんにちは! New Relic を使ったEC2の監視について関わる機会をいただいたので、せっかくなので書いてみました!

通常、EC2インスタンスの監視を行うにはEC2へのNew Relicエージェントのインストールが必要になるかと思います。
ただ、環境によってはサーバーにログイン不可などの理由でエージェントが導入できない状況もあるかもしれません。

この記事では、New Relicエージェントを使用せずに、NRQL(New Relic Query Language)を使って
Amazon CloudWatchからデータを取得し、EC2の死活監視を行う方法を紹介します。

やってみたこと

New RelicとAWSのインテグレーションは、エージェントを導入する場合と同様の手順で行います。
またAlert Conditionの作成ついても同様であるため、ここでは割愛します。

以下が実際に使用したNRQLです。

SELECT average(`aws.ec2.StatusCheckFailed`) FROM Metric FACET awsAccountId, label.Name, provider.ec2InstanceId, awsRegion WHERE aws.ec2.InstanceId = '<インスタンスID>' AND awsAccountId = '<AWSアカウントID>'AND `label.cloudpack_newrelic`='enabled' 

このクエリでは、以下のようにCloudWatchからデータを取得しています。

・SELECTでCloudWatchの「StatusCheckFailed」を指定
・FROMでMetric(データタイプ)を指定
・FACETでインスタンスID等を指定
・WHERE、ANDで具体的なIDやタグを指定
 AWSコンソール上でEC2に cloudpack_newrelic = enabled とタグ付けしてます。

値が取れました!

AWSコンソールでは以下のように見えています。
CloudWatchで対象サーバーの「StatusCheckFailed」を選択してます。

New Relic側は Not equal 0に設定し、「StatusCheckFailed」のカウントが0では無い場合にアラートを発報するよう設定してます。

CloudWatchでは標準でCPU使用率も監視しているので上記と同じように取得できます。
New Relic上で Query Your Data → Data explorer → Metrics で確認すると
いろいろな値が取得可能なことがわかります。

参考URL

NRQLを始めましょう:データの言語
やさしい AWS にNew Relic を導入する方法

まとめ

NRQLを初めて触りましたが周りの頼もしいメンバーに助けてもらいつつ、Query Builderで試しながら作成しました。New Relic強者の方であれば、もっとオススメの書き方や方法があるかもしれません…いろいろ試してみたいです。

明日の記事は、村上さんの「スクラムやってて気がついた大事なことを語ってみる」です!