LoginSignup
4
1

More than 5 years have passed since last update.

AppSignalでElixirアプリの監視やパフォーマンス分析を行う

Last updated at Posted at 2017-01-16

Elixirアプリのエラーとパフォーマンスの監視にAppSignalを試してみました。まだβ版とのことなので利用の際は注意がです。Elixirのアプリだけでなく、Rubyのアプリでも利用が可能です。

どんなことができるの?

Web GUI上でElixirアプリのエラーとパフォーマンスの監視ができます。似たようなサービスではNew Relicとかが有名ですよね。ElixirではNew RelicよりApp Signalの方が導入が簡単そうだったのでこちらを試すことにしました。

AppSiganlでは、もう少し具体的には以下のようなことができます。

エラー監視

  • エラー一覧(Issue List)があり、1つ1つのIssueをOpenしたりCloseしたりできる。
    • githubと連携すると自動的にgithubの方にissueを投げてくれる。
  • エラーは頻度の多い順に見ることができ、それぞれのエラーについてバックトレースやRequest Pathなど、解決のために必要な情報がしっかりと含まれている。

パフォーマンス分析

  • コントローラー(アクション)ごとに、どのぐらい実行に時間がかかっているか、何度呼び出されているかを一覧で見ることができ、どのアクションが最もパフォーマンスにインパクトを与えているかを確認できる。
  • パフォーマンスの問題についてもエラー監視と同様にOpen / Closeが可能。
  • DBのスロークエリ一覧と詳細の確認

そのほかにもカスタムメトリクスの作成、デプロイ履歴の確認、ホストごとの分析などの機能があります。

また、前述のgithubとの連携に加え、Slackなどの外部サービスとの連携は非常に便利ですね。AppSignalのWeb GUIはReactで書かれており動作が軽快なのも地味に良いです。

料金

Rubyで使う場合は30日超えると料金が発生するようですが、おそらくElixirの方は(β版のうちは)30日超えて使用しても無料です。

インストール

では早速導入していきます。今回、試すにあたってPhoenixアプリを使っていますが、Phoenix以外の場合の導入方法についても触れていきます。Getting Startedに書いてある通り、以下のようにインストールできます。

mix.exsに依存を追加します。

mix.exs
def application do
  [applications: [:appsignal]]
end

def deps do
  [{:appsignal, "~> 0.9"}]
end

Phoenixアプリの場合、lib/my_app/endpoint.exAppsignal.Phoenixモジュールを使うように以下のように追記します。

lib/my_app/endpoint.ex
use Appsignal.Phoenix

また、config/config.exsに以下を追記します。

config/config.exs
config :my_app, MyApp.Endpoint,
  instrumenters: [Appsignal.Phoenix.Instrumenter]

テンプレートの描画にどのぐらい時間がかかっているかを計測するためには、同様に次のconfigを追加します。

config/config.exs
config :phoenix, :template_engines,
  eex: Appsignal.Phoenix.Template.EExEngine,
  exs: Appsignal.Phoenix.Template.ExsEngine

DBのクエリのログも同様にして、次のようにconfigを追加します。

config/config.exs
config :my_app, MyApp.Repo,
  loggers: [Appsignal.Ecto]

設定

AppSignalに登録して、Add ApplicationからAPIキーを入手しconfig.exsに追記します。

config/config.exs
config :appsignal, :config,
  name: :my_first_app,
  push_api_key: "your-hex-appsignal-key"

プロダクション環境では次のように設定します。

config/prod.secret.exs
config :appsignal, :config,
  name: :my_first_app,
  push_api_key: "your-hex-appsignal-key",
  env: :prod,
  revision: Mix.Project.config[:version]

テスト環境では次のように無効にしておくと良いです。

config/test.exs
config :appsignal, :config,
  active: false

ログに残してはいけない情報は、次のようにPhoenixの設定をします。デフォルトでは["password"]となっています。

config/config.exs
config :phoenix, :filter_parameters, ["password", "secret"]

Phoenixを使っていない場合は、AppSignalの設定で同様のことができます。

config/config.exs
config :appsignal, :filter_parameters, ["password", "secret"]

以上で導入は終わりです。

おわり

あまり深堀りした内容ではないですが、一旦導入までで。また何かあれば追記します。

4
1
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
4
1