3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

この記事は、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にアクセスすると以下の画面が表示されます。

スクリーンショット 2023-12-20 14.56.27.png

これで準備は完了です。

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

スクリーンショット 2023-12-20 15.05.59.png

スクリーンショット 2023-12-20 15.06.18.png

セットアップは以上です!
とても簡単です。

何が見れるの?

elixir_agentで取得できる情報(telemetry)は以下になります。

また、APMにBEAMの項目があるので、VMの状態もチェックすることができます。

スクリーンショット 2023-12-20 15.21.01.png

スクリーンショット 2023-12-20 15.24.09.png

まとめ

この記事で、PhoenixにNewRelicを導入する方法を紹介しました。

phoenixアプリであれば簡単に(ほぼ実装なしで)NewRelicを導入できるので、まだAPMを導入していない方は、ぜひ試してみてください。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?