New Relic Flex を SAMで管理してLambdaで動かす
はじめに
こんにちは!NE株式会社の tatsuo48 です。
みなさん、NewRelicをつかってオブザーバビリティ(可観測性)
ガンガン上げていますか?
今回はオブザーバビリティ(可観測性)
を上げるのに役立つツール「Flex」についてのご紹介と、SAMを使ったLambdaへのデプロイについてお話しします。
Flexとは?
まずは公式情報をペタリ。
簡単にいうと、「設定ファイルを1枚書くだけでさまざまなデータソースのデータをNewRelicに送れる便利ツール」です。
例えば、以下のようにMySQLとの統合であれば、データ取得のクエリを書くだけであとは自動的にクエリを定期実行して取得したデータをNewRelicに送ってくれます!
mysql-database-example.yml
Lambdaで動かす
そんなFlexですが、公式の使い方にもある通り通常はインフラエージェントに内包されたものを利用します。
Flex comes bundled with the New Relic infrastructure agent. To install the infrastructure agent, see Install the infrastructure agent.
ですが、これがもしLambdaのようなServerless環境で使えたらサーバの管理もいらないですし便利ですよね?
ということで動かしてみました!
実際のSAMの設定ファイルおよびバイナリは以下のリポジトリにサンプルを作りましたので見てみてください。
ここではポイントだけ説明します。
nri-flexのバイナリを配置
-
https://github.com/newrelic/nri-flex/releases からファイルをダウンロードして解凍します。
nri-flex
というバイナリがあるのでnri-flex/nri-flex
のように配置します。- Lambda 命令セットアーキテクチャの通りご自身の設定に合わせて正しいアーキテクチャのバイナリを使ってください。
nri-flex/flexConfigs/mysql.yml
について
-
db_conn: newrelic:$$DB_PASSWORD@tcp(localhost:3306)/sys
というように$$
を使うことで環境変数を参照します。- 後述しますが、DBのパスワードなどの秘匿値は環境変数に設定して渡すようにすると良いでしょう
template.yaml
について
-
INSIGHTS_URL
にはデータの送信先となるエンドポイントを指定します。-
https://insights-collector.newrelic.com/v1/accounts/{{your account ID}}/events
となります。
-
-
(これはどちらかというとSAM,CloudFormationのTIPSですが、)以下のように書くことでSecrets Managerの値をSAMデプロイ時に取得して環境変数に入れることができます。
Environment:
Variables:
DB_PASSWORD: "{{resolve:secretsmanager:DB_PASSWORD}}"
※Lambdaの環境変数に入るので、AWSコンソールで確認できることにはご注意ください。
-
INSIGHTS_API_KEY
という環境変数名でライセンスキーを渡します。 -
CodeUriなどは以下のように入れ込んだバイナリを指定するようにします。
Properties:
CodeUri: nri-flex/
Handler: nri-flex
おわりに
お読みいただきありがとうございました。
みなさんもNewRelicを使ってガンガンオブザーバビリティ(可観測性)
上げていきましょ〜〜!
参考資料
-
New Relic Flexによる独自データソースのデータ統合(サーバーレス編)
- 今回の記事は、このブログのSAM版です。
- NR齊藤さんありがとうございます!
Discussion