4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Sentry (App Monitoring Service) でさくっと Web API のボトルネックを探せた感動を共有したい

Posted at

はじめに

エラー監視の文脈で紹介されることが多い Sentry (https://sentry.io/ 以降、Sentry) ですが、Performance Monitoring の機能を利用してさくっと Web API の ボトルネックを探せた感動を共有したいです 🤗

"さくっと" には前提があります。
詐欺にならないように App Monitoring Service と記載しましたが、 OSS の紹介を期待して読み始めた皆さん、ごめんさい 🙇🙇‍♀️

"さくっと" の前提 😈

Sentry の契約

プランはこちらです。
私の場合、自社で Team プランに入っていましたが、一番下のプランから Performance Monitoring の機能が使えるみたいです。

HTTP Frame Work が Sentry に対応しており、かつ モニタリングに対応したバージョンの SDK に対応している

対応言語・プラットフォームはこちらです。
私の場合 プロジェクトの FastAPI (Python Frame Work) のバージョンに依存した SDK だと Monitoring データの蓄積が始まらなかったので、FastAPI をバージョンアップする必要がありました。

SDK を install してトラック用コードを埋め込む

FastAPI の場合は本当にこれだけのコードを書くだけで Monitoring データの蓄積が始まりました。

import sentry_sdk


sentry_sdk.init(
    dsn="https://examplePublicKey@o0.ingest.sentry.io/0",
    traces_sample_rate=1.0,
)

ボトルネックをどのように探すのか

Performance Monitoring の画面に表示されている event_id (リクエスト単位のid) をクリックすると以下のような画面が表示され、http 通信・DB のどこに時間がかかっているかのタイムラインを表示してくれます。

スクリーンショット 2022-10-06 23.42.46.png

上記スクリーンショットでわかるように、 ORM で 1 + N な問い合わせが速度低下の原因になっていることを確認できました。

所感

たった数行のコードを追加するだけで、発行されているSQLも含めた情報を出してくれることに驚きました。前提さえ揃っていればいればすぐにボトルネックの当てがつくので、是非試していただきたいです。

以上、共有でした。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?