Feedforce Developer Blog

フィードフォース開発者ブログ

Heroku で監視ツール使うなら New Relic が良さそう

f:id:kielze:20180209154216p:plain

こんにちは、エンジニアの id:kielze です。

私の所属するチームではいま新規事業の開発をしており、そろそろリリースが近づいてきました。リリースが近づいてきたということは監視ツールを入れないといけません。

私たちは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の監視も自動でやってくれる。 各ジョブの状態がある程度分かるようなので、ジョブの謎の死にも気づける可能性が高まる。

フロントエンドの性能監視も付いてくる。 モニタリングに必要なスクリプトは 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には連携していなかった...。

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は高いという認識しかなかったけど、調べてみると本当によくできているし、デフォルトで欲しいメトリクスが取れるようになっているので、そもそもかゆいところが無いという感じで素晴らしいです。使ってみた感想をそのうち上げれたらと思います!