2つの新機能をプレビュー版としてリリースできることを大変嬉しく思います。トレーシングとメトリクスです。これらの2つの機能により、様々なパフォーマンス問題を効果的に監視し、トラブルシューティングすることができます。ぜひお試しいただき、ご意見をお聞かせください!
開発者は「なぜ私のアプリケーションは遅いのか?」という問いに答えたいと考えています。現代のソフトウェアシステムは分散化され複雑であるため、顧客体験に影響を与える問題を診断することはますます困難になっています。
これらの懸念を念頭に置いて、新しいトレーシングとメトリクスの機能を設計しました。これらの機能により、Prismaはより観測しやすくなり、監視やデバッグが容易になります。
トレーシングでPrismaの全操作の詳細なインサイトを取得
Prismaのトレーシング機能は、Prisma Clientが実行するすべてのクエリについて、各クエリの実行にかかった時間を含め、詳細なビューを提供します。これは、パフォーマンス問題のデバッグ、ボトルネックの特定、データベース操作の動作理解に役立ちます。
トレースをウォーターフォール図として視覚化
以下のようなJaegerやHoneycombなどのトレーシングツールを使用すると、トレースをウォーターフォール図として視覚化できます。
PrismaトレーシングはOpenTelemetryに準拠
トレーシングは、アプリケーション内でリクエストがどのように流れるかを追跡するのに役立つ強力なツールです。これは、各リクエストが複数のサービスにまたがる分散システムをデバッグする際に特に役立ちます。トレーシングの全機能を活用するには、アプリケーション全体にエンドツーエンドで実装する必要があります。
Prismaのトレーシング機能はOpenTelemetryに完全に準拠しているため、エンドツーエンドのアプリケーション追跡設定にシームレスに統合できます。これにより、トレースデータをJaeger、Zipkin、Honeycomb、Datadogなど、OpenTelemetry互換のあらゆるトレーシングシステムにエクスポートできます。
トレーシングを始めるには、トレーシングのドキュメントをご覧ください。
メトリクスでシステムの健全性とパフォーマンスを監視
メトリクスは、Prismaがデータベースとどのようにやり取りしているかを監視できる新機能です。メトリクスは、Prismaとデータベース接続の状態に関する情報を提供する一連のカウンター、ゲージ、およびヒストグラムを公開します。公開されるメトリクスには、以下が含まれます。
- 実行されたPrisma Clientクエリの合計数 (
prisma_client_queries_total
) - 実行されたSQLまたはMongoDBクエリの合計数 (
prisma_datasource_queries_total
) - アクティブなデータベース接続数 (
prisma_pool_connections_open
) - 実行されたすべてのPrisma Clientクエリの期間を含むヒストグラム (
prisma_client_queries_duration_histogram_ms_bucket
) - ...その他多数!
注: 公開されているメトリクスの完全なリストはメトリクスドキュメントで確認できます。
Prismaは、しばしばユーザーに代わって魔法のようにデータベースとやり取りするブラックボックスのように感じられることがあります。Prismaの内部動作の透明性の欠如は、問題が発生した場合に課題となることがあります。メトリクスを使用することで、Prismaが内部で何をしているかについてより良い可視性を提供し、問題をはるかに簡単に診断およびトラブルシューティングできるようにすることを目指しています。
メトリクスは外部監視システムと統合可能
メトリクスは、アプリケーションによって直接分析できるほか、PrometheusやStatsDのような外部監視システムや時系列データベースに送信することもできます。これらの外部システムとの統合により、以下の機能が標準で提供され、監視能力が大幅に向上します。
- 視覚化とダッシュボードによるリアルタイムパフォーマンス監視
- 履歴データのクエリと分析
- 障害とパフォーマンス低下に対する正確な自動アラート
例えば、人気の視覚化ツールであるGrafanaをメトリクスパイプラインに統合することで、詳細なダッシュボードやグラフを作成できます。
要約すると、メトリクスはアプリケーションの健全性を分析・監視するのに役立ちます。また、パフォーマンス問題や設定ミスを特定するのにも役立つため、迅速に必要な措置を講じることができます。
メトリクスを始めるには、メトリクスドキュメントをご覧ください。
トレーシング vs メトリクス — どちらをいつ使うべきか?
トレーシングは、各操作のライフサイクルに関する詳細な情報を取得するのに役立ちます。単一のリクエストが複数のサービスを通過する分散環境では、トレーシングは特に価値があります。
アプリケーションの健全性とパフォーマンスを監視するための集約された数値データが必要な場合は、メトリクスの使用を検討してください。
また、トレーシングとメトリクスは相補的な機能であることに留意することが重要です。これらを組み合わせて使用することで、システムの観測性を向上させることができます。
トレーシングとメトリクスを始める
トレーシングとメトリクスを始めるには
- トレーシングのドキュメントおよびトレーシングのチュートリアルをご覧ください。
- メトリクスのドキュメントおよびメトリクスのチュートリアルをご覧ください。
フィードバックを共有
皆様からのご意見をお待ちしております!これらの機能をぜひお試しいただき、ご感想をお聞かせください。
📊 トレーシングに関するフィードバックを共有してください。
📈 メトリクスに関するフィードバックを共有してください。
🚀 ミッションクリティカルなアプリケーションでこれらの機能を使用する予定がある場合は、お問い合わせいただき、ユースケースについてご相談ください。
次回の投稿をお見逃しなく!
Prismaニュースレターに登録