New Relic で取得したデータや独自に集計したパフォーマンスログを Re:dash で可視化する

こんにちは、エンジニアの foostan です。 freee では法人向けの決算や申告まわりの開発を主に行っています。

先日「【AWS・New Relic・freee】合同セミナー AWSで実現するクラウド・ネイティブ ITサービス」というイベントに登壇して来ましたのでまずはその報告をさせて頂きます。

私の発表内容の概要は以下のとおりです。

freeeのクラウドサービス活用術とパフォーマンス改善活動のご紹介

freeeでは会計freeeや給与計算freeeなどのクラウドサービスを開発・運営していますが、実際にはAWSやNew Relicといった様々なクラウドサービスを活用しています。freeeでのクラウドサービス活用術として、いくつか事例を交えながら紹介したいと思います。またサーバのレスポンスタイムの改善にフォーカスして、どのように行っているかをより具体的に、技術的な観点と組織的な観点でご紹介いたします。

発表で使用したスライドが少々長いので、本ブログでは事例をひとつピックアップしてご紹介します。 なお、パフォーマンス改善活動については昨年のアドベントカレンダーに投稿しましたので、よろしければこちらも御覧ください。

qiita.com

パフォーマンスログを Re:dash で可視化する

freee ではパフォーマンスを測る指標として New Relic で取得したデータや独自に集計したログを用いており、それらを Re:dash で閲覧できます。

f:id:foostan:20170621012225p:plain

New Relic のデータを Re:dash で可視化する

New Relic のデータは保存期間が短く、APMBrowser の場合は PRO 版にしても最大で 90 日までです。 また Insights を利用すると独自のグラフとダッシュボードを作成することが出来ますが、こちらは最大で 8 日までです*1

パフォーマンスを中長期的に監視したい場合これだけの期間しか見れないとなると少々物足りません。 またダッシュボードを作るにしても New Relic 以外から取得したデータも一緒に見たい場合は Insights では実現できません。

そこで freee では New Relic のデータを API で取得し、そのデータを Redshift に取り込んで Re:dash で可視化できる仕組みを作りました。 技術的に難しい点はあまりなく既存のツールやサービスの組み合わせだけで実現できました。

具体的には以下のようなグラフなどを作成し、日々の改善に利用しています。

f:id:foostan:20170621020048p:plain

独自に集計したパフォーマンスログを Re:dash で可視化する

サービスをご利用して頂いている事業所毎に扱うデータ量は異なるため、それに伴いパフォーマンスも事業所毎で異なってきます。 freee では Controller/Action *2 毎のプロセスタイムをログとして取っていますが、パフォーマンスを監視/改善するにあたって事業所のIDを付与しています。 またそのログは fluentd 経由で S3 に保存され、最終的に Redshift に取り込まれて Re:dash で可視化できるようになっています。

具体的には以下のように事業所の特徴毎に分類してパフォーマンスを監視しています。

f:id:foostan:20170621021727p:plain

最後に

イベントではクラウドサービスの活用事例の紹介ということでいくつか挙げさせて頂きましたが、どれもトリッキーな使い方はしておらず、シンプルな組み合わせで利用しています。 会場にいらした方々やこれを見ている方々にとって少しでもご参考になれば幸いです。

freee では既存のサービスを組み合わせて効率化したり、パフォーマンスを改善するのが好きな仲間を募集しています!

発表で使用したスライドはこちらになります。

*1:https://newrelic.nissho-ele.co.jp/price (代理店などにより多少異なります)

*2:Ruby on Rails の Controller/Action のこと