この記事について

こんにちは!!

日々New Relicと奮闘しているアイレットの伊波です!

今回は、ちょっと変わった監視を実装したのでここで共有させていただきます。

端的に説明すると、

Amazon CloudWatch Logsに出力されるエラーログの割合を、New Relicで監視してみようという内容です。

すこしでも興味があれば最後まで読んでいただけると幸いです!

実装内容

簡単ではありますがイメージ図を書いてみました。

Amazon CloudWatch Logsに出力されるされるログをサブスクリプションフィルター(Lambda)を使用してNew Relicに転送します。

サブスクリプションフィルターのフィルター文字列には「Result」と設定しておきます。

New Relicに転送されたログを全量として、その内「Result = Error」が含まれるログが全量の何%含まれているのかを監視したいと想定します。

実際に作ってみよう

ということで上記で説明した内容を実装していきます。

1.Amazon CloudWatch Logsの設定

①まずはテスト用のロググループを作成します。

同時にテスト用のログストリームも作成しました。

②次にサブスクリプションフィルターを設定します。ここでは「Result」という文字列で設定しています。

※転送用のLambdaは実装されている前提で進めていきます。実装方法は以下の公式ドキュメントをチェック!

https://docs.newrelic.com/jp/docs/logs/forward-logs/aws-lambda-sending-cloudwatch-logs/

2.New Relicにログを転送してみよう

①今回は「Result = OK」と「Result = Error」の2通りのログを転送します。

「Result = OK」を9件、「Result = Error」を1件転送し、New Relicで10%と表示されれば想定通りとなります。

②テスト用のログストリームにログを書き込む

先ほど作成したログストリームにテストログを書き込みました。

③New RelicのLogsで確認する

無事、New Relicに転送されていることが確認できました!

3.NRQLを作成してみよう

①New Relicで「Result = Error」のログが含まれる割合を求めるNRQLを作成します

今回のケースでは以下のようにNRQLを作成しました。

FROM Log SELECT percentage(count(*), WHERE message Like '%Result = Error%' AND aws.logGroup = 'test-iha') AS 'Error Percent' Where aws.logGroup = 'test-iha'

参考ドキュメント:https://docs.newrelic.com/jp/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions/#func-percentage

②New RelicのQuery builderの機能を使って実際にNRQLを実行してみます

すると想定通り10%となることを確認できました!

4.Conditionを作成してみよう

①先程作成したNRQLをQueryの部分に設定します

②その他の項目を設定

今回は詳しく触れませんが、閾値や評価期間などを要件に沿って設定します。

実装方法は以上となります!!

さいごに

New Relicには様々な機能があります。

私はまだほんの一部しか使用したことがないので、たくさん検証してお客様のニーズにお答えできるように日々精進していきたいと思いました。

New Relicは奥が深くて楽しいですね!

ここまで読んで頂きありがとうございました。