Splunk APMのAlwaysOn Profilingの概要 🔗
AlwaysOn Profilingはスタックトレースを継続的に収集するため、平均解決時間(MTTR)を短縮する方法として、コード内のどの行がシステムの速度低下やクラッシュを引き起こしているのかを検出できます。Splunk APMの一部として、AlwaysOn Profilingは、インストルメント済みアプリケーションによって生成されるスパンにコンテキストを提供します。
Splunk Observability Cloudにプロファイリングデータを取り込んだ後は、APMから直接スタックトレースを調査し、フレームグラフを使用して各コンポーネントのパフォーマンスを視覚化できます。ボトルネックと非効率性を視覚的に特定することで、AlwaysOn Profilingは、アプリケーションのコードの動作に対する理解を助けます。
以下は、Splunk APMのAlwaysOn Profilingを使用してできることの一部です:
アプリケーションの継続的なプロファイリングの実行。プロファイラーを有効にすると、常にオンになります。
コードパフォーマンスコンテキストの収集およびトレースデータとのリンク。
アプリケーションのメモリ使用量とガベージコレクションの調査。
サービスのパフォーマンスに影響を与えるコードのボトルネックの分析。
クラウドリソースのスケールアップの必要性を高める非効率性の特定。
以下は、AlwaysOn Profilingで特定できる典型的な問題の例です:
遅い、または非効率なデータベースクエリ
スレッドのロック
メモリリーク
異常なメモリ消費
スレッドプールの枯渇
ファイルシステムのボトルネック
外部サービスへのコールの遅延
シナリオ例については、Splunk AlwaysOn Profilingを使用したアプリケーションとサービスの監視シナリオ を参照してください。
メモリのプロファイリングを行うと、スタックトレースにメモリ割り当てデータを追加し、メモリメトリクスを見えるようにすることで、インストルメントしたサービスやアプリケーションのリークや異常な消費パターンを発見することができます。シナリオ:SashaがAlwaysOn Profilingを使用してメモリ使用量を分析する を参照してください。
Splunk Observability Cloudにプロファイリングデータを取り込んだら、フレームグラフを使って各コンポーネントのメモリ割り当て動作を視覚化できます。フレームグラフを理解し、使用する を参照してください。
メモリのプロファイリングによって、アプリケーションのメモリメトリクスも見えるようになるため、これを使ってグラフやダッシュボードを作成することができます。メモリプロファイリングのメトリクス を参照してください。
以下のプログラミング言語では、インストルメンテーションが利用できます:
言語 |
利用可能なインストルメンテーション |
ドキュメント |
---|---|---|
Java |
Splunk Distribution of OpenTelemetry Javaバージョン1.14.2以降 OpenJDKのバージョン15.0から17.0.8までは、メモリプロファイリングに対応していません。詳細はJDKバグシステムの https://bugs.openjdk.org/browse/JDK-8309862 を参照してください。 |
|
Node.js |
Splunk Distribution of OpenTelemetry JSバージョン2.0以降 |
|
.NET (OpenTelemetry) |
Splunk Distribution of OpenTelemetry .NET 1.3.0以上 AlwaysOn Profilingでは、.NETバージョン6.0以上がサポートされています。.NET Frameworkはサポートされていません。 |
|
.NET (SignalFx) |
SignalFx Instrumentation for .NETバージョン1.0.0以降 AlwaysOn Profilingでは、.NETバージョン6.0以上がサポートされています。.NET Frameworkはサポートされていません。 |
|
Python(ベータ版) |
Splunk Distribution of OpenTelemetry Pythonバージョン 1.15以上 CPUプロファイリングのみサポートされています。 |
最初に、アプリケーションまたはサービスを Splunk APM用にインストルメントし、AlwaysOn Profilingを有効にします。
手順については Splunk APMのAlwaysOn Profilingにデータを取り込む を参照してください。