オブザーバビリティ:ユニバーサルプロファイリングによるワークロードの最適化

概要

Elasticオブザーバビリティの概要

Elasticオブザーバビリティについて詳細に説明し、Elastic Cloudを使用してアプリケーションからカスタマーログを取り込み、表示、分析する方法について概要を紹介します。アプリケーションをモダナイズして自信を持ってクラウドを導入する方法をご覧ください。


最初の一歩

Elastic Cloudアカウントを作成する

cloud.elastic.coに移動して、アカウントを作成した後は、この動画に従い、世界中の50以上の対象リージョンのいずれかで最初のElastic Stackを立ち上げる方法についてご覧ください。

Create_Deployment_8.13.png

デプロイが完了したら、[オブザーバビリティ]タブで[ユニバーサルプロファイリングでワークロードを最適化する]を選択します。

olly_tiles.png

次に、開始するためにデータを追加するように求められます。[ユニバーサルプロファイリングの設定]を選択します。

universal-profiling-set-up.png

ユニバーサルプロファイリングエージェントを初めて使用する場合は、設定するように求められます。次の手順に従ってください。

kubernetes-universal-profiling-agent-install-start.png

以下は、Microsoft Azure AKSクラスターで上記のコマンドを実行した場合の例です。

kubernetes-universal-profiling-agent-install-in-azure-cloud-shell.png

データが表示され始めたら、左側のメニューの[ユニバーサルプロファイリング]の下にある[スタックトレース]に移動します。最も時間がかかっているものを確認するために、スタックトレースを表示します。チャートの上にマウスカーソルを置くと、個々のスレッドの波形が表示されます。

スタックトレースビューには、スレッド、ホスト、Kubernetesデプロイメント、コンテナーごとにグループ化されたスタックトレースグラフが表示されます。これを使用することで、スレッド間の予期しないCPUスパイクを検出し、より短い時間範囲にドリルダウンして、フレームグラフでさらに調査できます。

約3分以内にデータが表示されます。スタックトレースの読み方の詳細については、こちらのブログをご覧ください。

kubernetes-universal-profiling-after-agent-install.png


Elasticオブザーバビリティの使用

フレームグラフを解析する

次に、左側のメニューの[ユニバーサルプロファイリング]の下にある[フレームグラフ]に移動します。基本的に、プロファイリングはフレームグラフと同義です。これは、左から右に読み、最もコストのかかるコードまたは最もコストの高い関数を表しています。

フレームグラフページは、特にデバッグと最適化を行う際に最も多くの時間を費やす場所です。このブログを使用して、フレームグラフによるパフォーマンスのボトルネックと最適化の機会を特定することをお勧めします。探すべき3つの重要な要素条件は、幅、階層、および高さです。

  • 左から右に水平方向にスキャンし、CPUを集中的に使用する機能の幅に焦点を合わせます。
  • 垂直方向に調べてスタックを調べ、ボトルネックを見つけます。
  • そびえ立つスタックを探して、コード内の潜在的な複雑さを特定します。

kubernetes-universal-profiling-flame-graph-after-agent-install.png

探索を開始する際には、特定のスレッド、ホスト、デプロイ、またはコンテナーに制限することをお勧めします。検索バーに入力するだけで行えます。

注:Elasticユニバーサルプロファイリングは、ホスト上でデバッグシンボルを必要とせずに、カーネルからネイティブコード、高水準プログラミング言語まで、さまざまな言語を可視化する業界唯一の継続的なプロファイリングソリューションです。

universal_differential_flamegraph.png

グラフの分析時には、線が長いほど、CPU時間の観点から時間がかかっていることに注意してください。線の1つを選択すると、さらに詳細が記載されたポップアップが表示されます。関数は、その時点で実行されたコード行であり、合計CPU年間CO2年間ドルコストなどの他の重要な詳細も表示されます。

universal_differential_details.png

変更前と変更後のコードを比較する

差分フレームグラフを使用すると、本番環境に導入する前に、変更前と変更後のコードを比較できます。青緑色は改善を表し、赤色は回帰を表します。

下の画像の色を見ると、最適化されたコンテナーがより適切であることがわかります。

universal_differential_good.png

全体的なパフォーマンスの向上]のドロップダウン矢印を選択すると、全体的な改善値を確認できます。

universal_differential_good_value.png

次に、[サイドを入れ替える]アイコン(比較対象のコンテナー間のアイコン)で、反対方向を指す矢印を選択します。最適化する前にコンテナーのコードに戻すと、回帰が発生することがわかります。

universal_differential_bad.png

全体的なパフォーマンスの低下]のドロップダウン矢印を選択すると、全体的な回帰値を確認できます。

universal_differential_bad_value.png

次に、[監視に移動]を選択すると、すぐに大まかな分析情報が得られます。これらのチャートは、より多くのテストが行われるにつれてレンダリングを開始しますが、可用性、テストの実行期間、タイムラインをすばやく確認でき、ウォーターフォールチャートにドリルダウンすることもできます。ドリルインするには、[テスト実行の表示 ]の下のアイコンをクリックします。


次のステップ

Elastic Cloudでログを収集し、分析する方法を説明しました。Elasticを初めて使う場合は、まずは無料の14日間のトライアルをお試しください。

また、Elasticを導入するにあたり、環境全体でデプロイを行うときにユーザーとして管理すべき運用、セキュリティ、データの要素について理解しておいてください。


オブザーバビリティリソース