はじめに
この記事は、New Relic Advent Calendar 2023のシリーズ3の17日目の記事です。
この記事では、NewRelicのAPMをElixir/Phoenixに適用する情報についてまとめています。
サンプル実装のURLはこちらです。
phoenixのセットアップ
デモとなるphoenixを以下の手順でセットアップします。ここではDBはsqlite3を利用しています。
$ mix phx.new demo --database sqlite3
$ cd demo
$ mix setup
データベースを確認するために、簡単なユーザー管理画面を作成します。
mix phx.gen.html ...
でusers関連リソースを作成します。
$ mix phx.gen.html Account User users name:string age:integer
$ mix ecto.migrate
ルーティングがないので、lib/demo_web/router.exで以下のルーティングを追加します。
scope "/", DemoWeb do
pipe_through :browser
get "/", PageController, :home
resources "/users", UserController # ここを追加!
end
以上で準備完了です。mix phx.server
でサーバーを起動してlocalhost:4000/users
にアクセスすると以下の画面が表示されます。
これで準備は完了です。
NewRelicAgentの組み込み
それでは、phoenixにNewRelicを国混んでいきます。elixirのnewrelicエージェントライブラリはこちらです。
mix.exsに、elixir_agentを追加します。
defp deps do
[
...略...
{:plug_cowboy, "~> 2.5"},
{:new_relic_agent, "~> 1.0"} # これを追加!
]
end
次に、ライセンスキーをconfigに設定します。
config/config.exsに以下を追加します。
config :new_relic_agent,
app_name: "AC2023 DEMO",
license_key: "ここにライセンスキーを設定"
mix deps.get
でライブラリを取得して、サーバーを再起動すると、NewRelicにデータを飛ばすようになります。
$ mix deps.get
$ mix phx.server
セットアップは以上です!
とても簡単です。
何が見れるの?
elixir_agentで取得できる情報(telemetry)は以下になります。
また、APMにBEAMの項目があるので、VMの状態もチェックすることができます。
まとめ
この記事で、PhoenixにNewRelicを導入する方法を紹介しました。
phoenixアプリであれば簡単に(ほぼ実装なしで)NewRelicを導入できるので、まだAPMを導入していない方は、ぜひ試してみてください。