hey Product Blog

こだわりを持ったお商売を支えるプラットフォーム「STORES」の開発チームによる技術ブログです。

DatadogのApp Analyticsについて

はじめに

STORES でECサービスのSREエンジニアをしている角田と申します。

hey アドベントカレンダー 2020 の12日目の記事です!
今回は STORES でサービス監視に利用しているDatadogの機能についてです。

Datadog には App Analytics という機能があります。 App AnalyticsはAPM拡張機能なのですが、得られる情報や見た目もよく似ています。

以下では、

  • App Analyticsを使うと何が出来るようになるのか?
  • 料金は大丈夫なのか?

をお伝えしたいと思います。

APM

念の為のおさらいですが、APMApplication Performance Monitoring の略で、その名の通りアプリケーションのパフォーマンスを監視できる機能です。

APMを有効化すると Flame GraphSpan List が見られるようになり、

  • アプリケーションのどの処理にどの程度時間がかかっているのか?
  • DBや外部サービス等へのアクセスが何回程度行われるのか?

といったことを確認することが出来ます。

Flame Graph

f:id:kakuda-stores:20201210114114p:plain
APM Flame Graph

Span List

f:id:kakuda-stores:20201210114341p:plain
APM Span List

App Analytics

App Analyticsを有効にすると Analytics という画面にデータが表示されるようになります。

  • 簡単なグラフやランキング作成
  • Service横断でのパフォーマンス分析
    • ServiceAPMの設定で指定する事が出来る観測単位で、適宜分割すると監視しやすくなります
      • STORES ではいくつかサービスがあるので、その単位で分割しています

などが出来ます。

App Analytics / Graph

f:id:kakuda-stores:20201210113928p:plain
App Analytics / Graph

App Analytics / Search

f:id:kakuda-stores:20201210113958p:plain
App Analytics / Search

何が違うのか?

より詳細な検索

App Analyticsを有効化するとAPMだけで利用するよりも詳細な検索が出来るようになります。

App AnalyticsはAPMのデータ( Trace/Span )を検索しやすい状態にした Indexed Span というデータを作って利用します。 Indexed Spanは検索インデックスの様なもので、処理時間やURLパスなどで集計する事が出来ます。

上に挙げた App Analytics / Search の画面のサイドバーで利用できるパラメータが確認できます。 色んな条件で検索してみてみるとそれだけで楽しいので1度触ってみてください。

より詳細なメトリクスの利用

Indexed Spanはメトリクスとしても利用できます。

APMだけでもいくつかのメトリクスが利用可能ですが、Service全体のスループットや特定アクションのエラーレートといった比較的マクロなものだけです。 ですがIndexed Spanがメトリクスとして使えると、

  • 処理が2秒を超えるリクエストが一定数以上に増えた時にアラートを出して、素早く調査改善を行う
  • エラーが多いアクションのランキングを作って、サービスの信頼性向上につなげる

といった細やかな監視、改善が出来るようになります。

実際に STORES では処理時間ワーストランキングを作成しSLI低下時の調査や性能改善に利用しています。

気をつけること

App Analyticsの利用で気をつけるべきは料金です。

APM 料金

リクエスト数に対して課金されるので、サービスの規模が拡大するにつれて無視できなくなります。 また全てのServiceでIndexed Spanが必要という訳でもありません。

Indexed SpanのSpan Filtering

料金が気になる場合にはIndexed Spanを作る割合を減らすことが出来ます。 これを Span Filterring と言い、全体のリクエストに対してIndexed Spanを生成する割合を指定します。

f:id:kakuda-stores:20201210114023p:plain
App Analytics Span Filtering Config

この設定をすると、APM(Trace/Span)は確認できるが、App Analyticsは確認できないというデータができます。

STORES の場合、

  • リクエスト数は膨大だがエラーは少ないサービスは 30%
  • リクエスト数はそこまででは無いがクリティカルなサービスは 100%

の様に調整することで、料金を抑えつつ必要な情報を確認できる状態にしています。

尚、Span Filteringをした場合に表示される統計情報は、減らされたデータからUp-Scaleしたものと実際の値の両方を見ることができます。

f:id:kakuda-stores:20201210114042p:plain
App Analytics Up Scale Toggle

まとめ

  • App AnalyticsはAPMに比べて
    • より細やか検索や集計が出来る
    • より細やかな監視、改善がしやすくなる
  • App Analyticsの料金はSpan Filteringで適宜調整が出来る

以上です。 サービスの細やかな監視や、信頼性向上のために、ぜひ皆さんもApp Analyticsを積極的に使ってみてください!