Synthetic Transaction Monitoring

背景

Wikipedia は合成モニタリングを次のように定義しています:

(…) シミュレーションまたはスクリプト記録を使用して行うモニタリング手法。 顧客やエンドユーザーがサイト、アプリケーション、または他のソフトウェア(あるいはhardware)で行うアクションや経路をシミュレートするために、行動スクリプト(またはパス)が作成されます。 これらの経路は、機能性、可用性、応答時間の測定などのパフォーマンスに対して指定された間隔で継続的に監視されます。

合成取引モニタリング(STM)は、スクリプトやいわゆる「ロボット」を使用してアプリケーションを継続的に監視します。

STMが必要な場合:

  • 誰もアプリケーションを使用していない場合でも、アプリケーションの可用性を監視し、問題や停止の場合にはアラートを受け取ります。

  • パフォーマンスベースラインを定義します。

  • 全体のアプリケーション(メインドメイン)、特定のページ、または取引を監視します。

概要

問題

業務用アプリケーションやそれを支える技術スタックは、アプリケーション、ネットワーク、またはインフラストラクチャの変更によって中断することがあり、停止は従業員がそれを使用しようとしたときにのみ気づかれます。 これにより、迅速にインシデントが増加し、従業員の生産性が低下する可能性があります。

解決策

従業員がまだテストしていない技術とアプリケーションのスタック全体をテストするために、実際の従業員が行う行動をエミュレートするスクリプトを定期的に実行できるようにします。

専用アラートのおかげで、チケットが発生する前、または従業員に影響が及ぶ前に、重要な問題を特定し解決することで、積極的に対策を講じることができます。

主な機能:

  • アプリケーションの可用性とパフォーマンス、およびその基盤技術スタックのすべての要素についての積極的な監視とアラートを行います。

  • 実際のユーザー エクスペリエンスと合成データを比較して、視覚的に分析および報告するためのダッシュボードがあります。

構成

エンドポイント

合成スクリプトを実行したいエンドポイントを1つまたは複数選択します。

専用エンドポイント

これらのエンドポイントは合成スクリプトの実行専用にするべきで、他のシステムユーザーへの影響を避けます。 これにより、共用エンドポイント上で他のプロセスが実行されていることによる遅さのスパイクなど、偽陽性を避けることもできます。

代表

測定したいものに応じて選択してください。 従業員が使用するOS、CPU、またはメモリに関して代表的なデバイスを使用することが通常最善です。

地理

ロケーションも測定したいものに応じます。 たとえば、特定のロケーションのユーザーが遅さを頻繁に訴える場合、それに焦点を当てます。 彼らが接続するデータセンターまたはゲートウェイが遠くにある場合、そこにあるデバイスを選択します。

Nexthink Collectorおよびブラウザ拡張機能をインストールしてデータを収集するには、そのendpointが必要です。

スクリプト

スクリプトは使用事例に合わせて記述およびカスタマイズする必要があります。

注意: このRemote Actionは、入力パラメータで設定されたURLs経由でMicrosoft Edgeを通じてURLsの実行を呼び出します。30秒後にMicrosoft Edgeは閉じられます。 従業員の業務を妨げないように、このRemote Actionをどのデバイスに展開するかを慎重に検討してください。

考慮事項:

  • これらのツールに慣れている場合、SeleniumやChromiumを使用して、より良い制御と自動化能力を得ることができます。 Chromiumでは、ブラウザを起動するたびにNexthinkブラウザ拡張機能を読み込み、有効にする必要があります。

  • 使用ケースに基づいて実行頻度を選択できます。

  • アプリケーションにログインする必要がある場合、合成モニタリング用に使用する特定のアカウントで2要素認証を無効にしてください。 また、アプリケーションを正しく認証し、追加の認証が必要ないことを確認することができます。

データの収集

  1. Nexthink Collectorと拡張機能をインストールします。

  2. ページの読み込みと取引を比べます。

注意: スクリプトがページ読み込みを引き起こさないアクションを実行する場合、それらをApplication Experienceで取引として構成することを確認してください。 結果をよりよく分析するために、主要なページを設定することをお勧めします。

データの視覚化

解決したい使用ケースに応じて、Live Dashboardを構築することをお勧めします。 リアルタイムアラート用に、結果を実際のユーザーデータまたは他の使用ケースと比較します。

左側と右側の列で同じNQLクエリを使用します。 合成スクリプトには、合成テストが実行されているendpointでフィルタリングします。実ユーザーデータには、それらを除外するだけです。

例1

指標: ページ読み込み時間

NQLクエリ(合成):

Code
web.page_views
| where http://application.name  == "ABC"
| where device.name == "synthetic"
| summarize pageLoadTime = page_load_time.overall.avg()

NQLクエリ(正確なユーザーデータ):

Code
web.page_views
| where http://application.name  == "ABC"
| where device.name != "synthetic"
| summarize pageLoadTime = page_load_time.overall.avg()

例2

指標: ページ読み込み数

NQLクエリ(合成):

Code
web.page_views
| where http://application.name  == "ABC"
| where device.name == "synthetic"
| summarize numberOfPageLoads = number_of_page_views.sum()

NQLクエリ(正確なユーザーデータ):

Code
web.page_views
| where http://application.name  == "ABC"
| where device.name != "synthetic"
| summarize numberOfPageLoads = number_of_page_views.sum()

例3

指標: トランザクションごとのトランザクション期間の棒グラフ

NQLクエリ(合成):

Code
web.transactions
| where http://application.name  == "ABC"
| where device.name == "synthetic"
| where status == COMPLETED
| summarize transaction_time = duration.avg() by transaction.name
| sort transaction_time desc

NQLクエリ(正確なユーザーデータ):

Code
web.transactions
| where http://application.name  == "ABC"
| where device.name != "synthetic"
| where status == COMPLETED
| summarize transaction_time = duration.avg() by transaction.name
| sort transaction_time desc

アラート

アラートは通常、合成モニタリングの最も重要な使用例です。

例1

目的: 高いエラー率に関するアラート

頻度: 15分

NQLクエリ:

Code
application.applications
 | with web.page_views during past 1h
 | where http://application.name  == "ABC"
 | where device.name == "synthetic"
 | where is_soft_navigation == false
 | compute total_number_of_page_views = number_of_page_views.sum()

 | with web.errors during past 1h
 | compute error_n = error.number_of_errors.sum()
 | where total_number_of_page_views> 10
 | where error_n> 10
 | summarize total_errors = error_n.sum(), total_navigations =  total_number_of_page_views.sum(),
   percentage_error_ratio = error_n.sum() * 100 / total_number_of_page_views.sum() by
   http://application.name

例2

目的: ページ読み込み時間が遅い場合のアラート

頻度: 15分

NQLクエリ:

Code
application.applications
| with web.page_views during past 1h
| where http://application.name  == "ABC"
| where device.name == "synthetic"
| where experience_level == frustrating
| compute number_of_slow_pages_count = count()
| with web.page_views during past 1h
| compute number_of_pages_count = count()
| where number_of_pages_count > 10
| summarize number_of_slow_pages = number_of_slow_pages_count.sum(), number_of_pages = number_of_pages_count.sum(),ratio_of_slow_pages = number_of_slow_pages_count.sum() *100 / number_of_pages_count.sum() by http://application.name 
| where ratio_of_slow_pages > 1

Last updated