こんにちは、エンジニアの id:sukechannnn です。
私の所属するチームではいま新規事業の開発をしており、そろそろリリースが近づいてきました。リリースが近づいてきたということは監視ツールを入れないといけません。
私たちはHerokuを使うことを選んだので、Herokuで使うのに良い感じな監視ツールが必要でした。
また、このアプリケーションは GraphQL を使ってAPIを開発しているので、graphql-ruby が対応している監視ツールだと嬉しいです。
さらに、ジョブには Sidekiq (ActiveJob) を使っており、重要な仕事を任せているため勝手に死なれると困ります。
これらのことから、私たちのチームにとって最適な監視ツールは何なのかを費用面も含めて調べてみました。
結論
Herokuでお金出して使うなら New Relic が良さそう。
候補だったツール
- New Relic
- Datadog
- Mackerel
弊社で知見のあるSaaSの監視ツールがこれら3つだったので、それに絞りました。scoutというツールはGraphQLも対応していて面白そうだと思ったのですが、情報が少なかったので今回は見送りました。
調べたツール
- New Relic
- Datadog
MackerelはGraphQLのモニタリングが現状できないのとHerokuを監視するアドオンがないのとで、今回は候補から外しました。
以下、調べた内容になります。
New Relic
How to install
アドオンを入れてプランを設定し、Gemをインストールして設定ファイルを追加するだけ。設定ファイルの設定はほとんど不要。
New Relic で何ができるか
APMの概要を掴むのに良い日本語の記事。 サーバーの監視に必要なことは一通りできる。また、死活監視も無料で追加できる(後述)。
SidekiqやRedisの監視も自動でやってくれる。 各ジョブの状態がある程度分かるようなので、ジョブの謎の死にも気づける可能性が高まる。
- https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/sidekiq-instrumentation
- https://docs.newrelic.com/docs/agents/ruby-agent/instrumented-gems/redis-instrumentation
フロントエンドの性能監視も付いてくる。 モニタリングに必要なスクリプトは APM agent が自動で注入しておいてくれるらしい。なので設定は不要。
死活監視は New Relic Synthetics (Lite、無料) を使うのが良さそう。
インフラ監視用の New Relic Infrastructure もあるが、別料金。
お値段
監視対象のdynoによって値段が変わる。詳しくはこちら
Herokuだと普通に使うよりも圧倒的に安い(特に最初は)。
3dynosで$49のプランがあるので、最初は app x 1 + worker x 2
で使うことになりました。
dynoのプランを上げると、例えば Performance(M) を使うとdyno x 8
と計算されるので注意が必要。
Calculating Usage New Relic bills on maximum monthly average dynos, which means that the quota for each plan is based on average number of standard (1X) dynos used. For higher dyno types you multiply 2x for 2X dynos, 8x for PM Dynos and 12x for PL Dynos. For example, if you are using ten 1X dynos, five 2X dynos, one PM (8X) dyno, and one PL (12X) dyno that would be (10 x 1) + (5 x 2) + (1 x 8) + (1 x 12) = 40 dynos, which means you should be on the Banner plan.
Datadog
日本語のガイドがある。
How to install
Build Pack でagentを直接インスタンスにインストールする必要がある。 AddOnではないので、外部のリソースを使うことができない(agentが消費するメモリーを負担する必要がある)。 連携の豊富さが売りのDatadogだが、Herokuには連携していなかった...。
- https://elements.heroku.com/buildpacks/datadog/heroku-buildpack-datadog
- https://github.com/DataDog/heroku-buildpack-datadog
Datadogで何ができるか
基本はNew Relicと似たような感じ。 こちらは元々インフラの監視からスタートしているので、そちらに強みがあるが、APMとしての機能も備えている。
Sidekiqの監視がデフォルトでできるのかは良くわからない。Gemはあるが、あまり使われている形跡がない。
死活監視はできるがちょっと面倒。専用のホストを用意する必要がある。別のサービスを使ったほうが良さそう。
お値段
1つのホストにつき、年払いだと$15、月払いだと$18。 Herokuの場合だと1 dyno = 1 host になるのかはよくわからない。1 agent = 1 host ならそうなる(要確認)。
所感
調べてみた感じ、New Relicはフルマネージドで、Datadogはカスタムして使っていく感じ(Mackerelに近い)という印象を受けました。 私たちのチームでは、Herokuとの相性を考えてNew Relicを使うのが良さそうです。 今までNew Relicは高いという認識しかなかったけど、調べてみると本当によくできているし、デフォルトで欲しいメトリクスが取れるようになっているので、そもそもかゆいところが無いという感じで素晴らしいです。使ってみた感想をそのうち上げれたらと思います!