弊社ブログ "ノーコードで任意のデータソースのデータを統合する(New Relic Flex)" では、任意のデータソースのデータを統合するNew Relic Flexをご紹介しました。New Relic Flexにより、エージェントがデフォルトで収集するデータの枠を超えてシステムの重要なデータを統合し、システムのオブザーバビリティをさらに高めることが可能となりました。
Flex機能は、New Relic InfrastructureエージェントにバンドルされるためOSへエージェントをインストールするか、もしくはコンテナで動作させるのが基本です。一方、AWS EC2のようなサーバーやコンテナへの導入がシステム構成や何らかの事情によって難しい場合の代替案としてサーバーレス(AWS Lambda)上でFlexだけを動かすということも可能です。このブログではその手順を説明します。
以下が手順です。Flex自体はオープンソースとして公開されていますので詳細はリポジトリを参照ください。また、サーバーレスの手順の詳細についても同様にリポジトリを参照ください。
- サーバーレスフレームワークのインストール
- アカウントIDの取得
- APIキーの取得する
- serverless.yamlの設定
- 最新のバイナリを “/pkg” フォルダに配置
- Flex定義ファイルを “/pkg/flexConfigs/” フォルダに配置
- Lambda関数のデプロイ
- データの確認
1. サーバーレスフレームワークのインストール
今回、AWS Lambdaを使ってFlexを動作させるのでLambda関数をデプロイするためにサーバーレスフレームワークをインストールします。最終的にデプロイされるLambda関数の実態や環境変数が同じであれば、サーバーレスフレームワークを利用することは必須でなく、このステップはオプションとなります。インストール方法については、公式サイトを参照してください。
例)> npm install -g serverless
2. アカウントIDの取得
Lambda関数で取得したデータをNew Relicに転送するために対象のアカウントIDを確認しておきます。アカウントIDの確認方法についてはオンラインドキュメントを参照ください。
3. APIキーの取得する
New Relicへのデータ登録時に利用するAPIキー(Insights insert key)を取得する。 APIキーの取得方法はオンラインドキュメントを参照ください。
4. serverless.yamlの設定
サーバーレスの設定をします。リポジトリに登録されているサンプルのserverless.yamlをベースにすると良いでしょう。AWSリージョン、ステップ#2, #3で取得したアカウントIDやAPIキーを設定します。

5. 最新のバイナリを “/pkg” フォルダに配置
リポジトリから最新版のアーカイブファイルをダウンロードします(64bit版)。取得したアーカイブファイルを解凍し、解凍したフォルダ直下にある最新版のバイナリ(nri-flex)をpkgフォルダの直下に配置します。この時点でフォルダ構成は以下の通りになっているはずです。

6. Flex定義ファイルを “/pkg/flexConfigs/” フォルダに配置
Flexを使って取得したいデータに合わせて定義ファイルを作成し、/pkg/flexConfigs/直下に配置します。Flexの定義ファイルの記述方法はリポジトリのREADMEを参照してください。また、多くのサンプルがありますのでこちらも参考にしてください。この時点でのフォルダ構成は以下の通りです。

なお、今回はサンプルの定義ファイルとしてリポジトリにあるものをそのまま使ってみます。このサンプルでは、https://jsonplaceholder.typicode.com/todos/1
にアクセスした結果として得られるJSONデータを登録するものです。定義ファイルは以下の通りになっています。

7. Lambda関数のデプロイ
Lambda関数をデプロイします。この例ではサーバーレスフレームワークを利用しているので、sls deploy
で実施します。サーバーレスフレームワークを利用しない場合はそれぞれ適した方法でデプロイしてください。
8. データの確認
今回の例ではEventBridgeのスケジューラーで定期実行されるのでデプロイ直後から定期的にデータ取得が行われます。一定時間経過したら、New RelicのQuery Builderにてデータが登録されていることを確認します。

無事にデータが登録されていることが確認できました。あとは、通常のデータと同様にダッシュボードで可視化したり、クエリを使ったアラートの設定をして活用していくことができます。
まとめ
今回は、サーバーレス(AWS Lambda)でFlexを動作させ、独自のデータソースのデータを統合する方法を説明しました。非常に簡単に統合できることが実感できたのではないでしょうか。是非お試しいただき、重要なデータを統合し、オブザーバービリティを向上させましょう!
Flex機能については以下のブログでも詳しく紹介していますのでぜひ参考にしてください。
注意事項
- 今回の方法はAWS Lambdaを利用しますが、Lambdaの性質上、実行できないAPI(OSのコマンド実行など)が存在します。
- VPC内リソースにアクセスしてデータ取得するようなケースでは、AWS LambdaもVPC内に配置したり、VPC内のAWS Lambdaから外部(New Relic)への通信をするための設定が必要になります。
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.