Tier Metric Correlator

Tier Metric Correlator を使用すると、階層内のすべてのノードの負荷とパフォーマンスの異常値を識別できます。コンテナまたはサーバで実行されるノードのクラスタで構成されている階層があるとします。すべてのノードが同じ負荷条件下で同じように動作すると想定します。このクラスタで異常値をどのようにモニタできますか。Tier Metric Correlator を使用すると、次の疑問に答えることができます。

  • すべてのノードが予想されるパフォーマンスの範囲内で動作しているか、または一部のノードで異常値(低速コール、ストール、およびエラー)が発生しているか。
  • どの時間枠で、およびどのノードでこれらの異常値が発生しているか。
  • 異常値は特定のノードクラスタ(たとえば、カナリアリリースを実行しているクラスタ)に関連しているか。
  • リソースの問題(高い CPU I/O やページングなど)がこれらの異常値に関係しているか。
  • コールは階層内のすべてのノードに均等に分配されているか。

このページでは、次の 2 つの使用例について説明します。

  • 階層メトリック相関を使用して、階層内のすべてのノード間でコールがバランスよく分配されているかどうかを迅速に特定する。
  • 階層メトリック相関を使用して、カナリア展開シナリオをモニタしてトラブルシューティングする。この例では、ノードクラスタ間でパフォーマンスを簡単に比較する方法、トランザクションの異常値があるノードを特定する方法、およびリソースの問題がこれらの異常値を引き起こしているかどうかを判断する方法を示します。

主なコンセプト

トランザクションの異常値

メトリック相関の最初のステップは、階層のトランザクションの異常値(応答時間がその階層の正常の範囲を大きく逸脱した低速コール、非常に低速なコール、および停止したコールの数)を特定することです。トランザクションの異常値ヒートマップにより、これらの異常値のレートと階層内のすべてのノード間での異常値の分布を視覚化します。

ヒートマップは、追加ディメンションがある時系列グラフです。各棒の色の強さは、すべてのノードでの異常値の分布を示します。色合いが暗いほど、より多くのノードに異常値があります。グラフでは、棒の色がグレー(異常値が少ない)とオレンジ色(異常値が多い)のグラデーションとなっています。

階層におけるトランザクションの異常値

ヒートマップを使用すると、階層内のすべてのノードのパフォーマンスの正常範囲と異常値を簡単に特定できます。この例では、すべてのノードが 2 つの範囲に分類されています。

ヒートマップ

このヒートマップでは、パフォーマンスメトリックがノードの 50% に対して著しく高い 2 つの時間枠が強調表示されます。

ヒートマップ時間枠

相関メトリック

相関メトリックヒートマップを使用すると、トランザクションの異常値と特定のリソースメトリックを相関させることができます。[Correlate Metrics] パネルを使用すると、対象のトランザクションの異常値に関連する(および関連しない)パフォーマンスメトリックを簡単に識別できます。この例は、次の 3 つのヒートマップを示しています。

  1. トランザクションの異常値
  2. 相関メトリック
  3. 非相関メトリック(異常値なし)

相関メトリック

ノードとサーバのトラブルシューティング

一連のトランザクションの異常値を選択すると、[Selected Nodes] グラフと [Impacted Servers] グラフにより、階層内のすべてのノード間でのこれらの異常値の分布が示されます。これにより、これらの異常値が特定のノードクラスタに関連するかどうかを簡単に判断できます。円グラフをダブルクリックして、ノードまたはサーバのトラブルシューティングを行います。

円グラフ

ユースケースの例

負荷分散の比較

この例では、開発運用エンジニアが、トランザクションコールが階層内のすべてのノードに均等に分配されているか確認します。エンジニアは [Tiers & Nodes] ビューにアクセスし、階層を右クリックして [Correlate Metrics] を選択します。[Calls Per Minute] ヒートマップを確認することで、エンジニアはパフォーマンスの範囲が 1 分あたり 20 ~ 22 コールであることをただちに確認できますが、一部のノードでは、特定の間隔でレートが高くなっています。エンジニアは関連するロードバランサを調べ、簡単な設定ミスが原因で、デバイスがコールを特定の時間に不均等に分配していることを発見しました。ヒートマップを使用することで、軽微な問題がチームのミッションクリティカルなアプリケーションに大きな影響を与える前に、その問題を特定して修正できます。

負荷分散の比較

カナリアデプロイテスト

開発運用エンジニアが、4 階層の e-コマースアプリケーションを担当しているとします。[Order] 階層には、バージョン 1.0 のサービスを実行する 5 つのノードがあります。エンジニアは、1 つのノードに「カナリア」(バージョン 1.1 のサービス)を展開しています。エンジニアはすべてのノードに 1.1 を展開する前に、このノードでパフォーマンスの低下が発生しているかどうかを判断したいと考えています。

カナリアデプロイテスト

エンジニアはコントローラを開き、目的のアプリケーションの [Tiers & Nodes ] ビューにアクセスし、[Order] 階層を右クリックし、[Correlate Metrics] を選択します。Tier Metric Correlator が表示されます。

[Transaction Outliers] ヒートマップによって、一部のコールが異常([Errors]、[Slow Calls]、[Very Slow Calls]、または [Stalled Calls])であることが示されます。応答時間がその階層のパフォーマンスの範囲よりも大幅に高いものが異常です。

階層メトリックコリレータ

エンジニアの最初の疑問は、これらの異常が「カナリアノード」(ORD-N1)に関係しているかどうかです。エンジニアはこれらの一連の異常をドラッグして選択します。[Node Distribution in Selection] 円グラフ(右)によって、すべての異常がカナリアノードに関連していることが示されます。明らかに、新しいコードは、古いコードと同様に実行されていません。

円グラフによる階層メトリック

次の質問は、これらの異常の原因となっているリソースの問題があるかです。エンジニアは、相関メトリックヒートマップを調べて、カナリアノードの異常と相関するメトリックを探します。ほとんどのヒートマップは相関なしを示します。たとえば、[CPU Busy%] は、すべてのノードが 0 ~ 20% のパフォーマンスの範囲内に収まることを示しています。

相関メトリックヒートマップ

ただし、[CPU I/O Wait 95th Percentile(%)] ヒートマップは強力な相関を示しています。すべてのメトリックの異常がカナリアノードで発生していて、一方で他のすべてのノードはパフォーマンスの範囲内に収まっています。

階層メトリックコリレータ

また、[Pages paged out 95th Percentile (pages)] ヒートマップも、カナリアノードで見られるトランザクションの異常との強力な相関関係を示しています。わずか数回のクリックで、カナリアノードのパフォーマンスが低下していること、ノードに CPU I/O の問題があること、および CPU I/O の問題がページングに関連していること(これはディスクの問題を示します)をただちに確認できます。

Pages Paged Out 95th Percentile

不要な情報を減らし、相関関係に注目するために、エンジニアは関係しないすべてのメトリックをオフにします。次のステップは、基盤となるサーバを調査してトラブルシューティングすることです。カナリアノードにドリルダウンするために、[Server Distribution in Selection] 円グラフ(右下)をダブルクリックします。

選択チャートのサーバー分布

カナリアノードのサーバダッシュボードが表示されます。エンジニアが [ボリューム(Volumes)] タブを選択し、I/O 操作とキューの待機時間に多くの急増があることを発見します。カナリアコードを階層全体に展開する準備はまだできていないと判断したため、カナリアコードを再調査し、問題を修正し、再テストする必要があります。

カナリアコード

Enabling Tier Metric Correlation

You enable Tier Metric Correlation per account on the Controller. If you are using a SaaS Controller, contact customer support. If you are using an on-premises Controller:

  1. Log in to the Controller administration console using theroot user password: http://<controller host>:<port>/controller/admin.jsp
  2. Access the Accounts page, and select the account for which you want to enable this feature.
  3. Select Add Property in the accounting settings and add: ENABLE_SIM_HEATMAPS = true
To correlate percentile metrics, you must enable percentile metric reporting on both the Controller and the Machine Agent. By default, reporting isdisabledon the Controller andenabledon the Agent.
  • To enable/disable reporting on the Controller, log in to the Controller administration console and set the sim.machines.percentile.percentileMonitoringAllowed property. See Controller Settings for Machine Agents
  • To enable/disable reporting on the Agent, open the <machine_agent_home>/extensions/ServerMonitoring/conf/ServerMonitoring.yml file and set the percentileEnabled property. See Machine Agent Settings for Server Visibility

Workflow Description

These steps outline the workflow description:

  • Access the Tiers & Nodes view for the application of interest.

  • Right-click the tier and select Correlate Metrics. The Tier Metric Correlator displays.
  • Identify transaction outliers for the tier – calls flagged as Slow, Very Slow, Stalls, or Errors (see Monitor the Performance of Business Transactions).
  • Drag the cursor to select the outliers of interest. The pie charts on the right show the distribution of these outliers by node and server.
  • Identify any correlated metrics for the outliers. Unselect checkboxes for non-correlated metrics .
  • Identify and troubleshoot the nodes and servers where the outliers are occurring. Double-click a pie slice to open the dashboard view. You can use the correlated metrics to guide your troubleshooting.

Workflow Description for Correlate Metrics