よっしー
こんにちは。よっしーです(^^)
今日は、k6のメトリクス情報についてご紹介します。
背景
Dockerで構築したWebアプリの開発環境において、k6を実行した際に出力されるメトリクス情報について調査したときの結果を備忘として残しました。
開発環境のソースは下記のリポジトリにあります。
組み込みメトリクス
すべてのk6テストは、組み込みおよびカスタムメトリクスを生成します。また、各サポートされているプロトコルには、それに固有のメトリクスもあります。
標準の組み込みメトリクス
k6は、テストがどのプロトコルを使用しているかに関係なく、常に以下のメトリクス(メトリック名 タイプ 説明)を収集します。
vus
(ゲージ):- 現在のアクティブな仮想ユーザーの数を示します。
vus_max
(ゲージ):- 最大可能な仮想ユーザーの数を示します。VUリソースは事前に割り当てられており、負荷のスケーリングアップ時のパフォーマンスへの影響を回避するためです。
iterations
(カウンター):- 仮想ユーザーがJavaScriptスクリプト(デフォルトの関数)を実行する回数の集計数を示します。
iteration_duration
(トレンド):- セットアップとティアダウンにかかった時間を含む、完全なイテレーションを完了するための時間を示します。特定のシナリオのイテレーション関数の実行時間を計算するためのワークアラウンドも提供されています。
dropped_iterations
(カウンター):- VUが不足しているために開始されなかったイテレーションの数を示します(到達率実行ユーザーの場合)または時間切れのために開始されなかったイテレーションの数を示します(イテレーションベースの実行ユーザーの場合)。ドロップされたイテレーションに関する情報についても言及されています。
data_received
(カウンター):- 受信したデータの量を示します。個々のURLのデータを追跡する方法についての例も提供されています。
data_sent
(カウンター):- 送信されたデータの量を示します。個々のURLのデータを追跡する方法についての例も提供されています。
checks
(レート):- 成功したチェックのレートを示します。成功したチェックの割合を示します。
これらのメトリクスは、k6テストの実行中にさまざまな側面をモニタリングし、テストの進行状況やパフォーマンスを評価するのに役立ちます。
メトリクスのタイプ
メトリクスは、大まかに以下の4つのタイプに分類されます:
- カウンター(Counters)は値を合計します。
- ゲージ(Gauges)は最小値、最大値、最新値を追跡します。
- レート(Rates)は非ゼロの値が発生する頻度を追跡します。
- トレンド(Trends)は複数の値に対する統計情報を計算します(平均、モード、パーセンタイルなど)。
HTTP固有の組み込みメトリクス
これらのメトリクスは、テストがHTTPリクエストを行った場合にのみ生成されます。
注意 すべてのhttp_req_*メトリクスについて、タイムスタンプはリクエストの終了時に生成されます。つまり、タイムスタンプはk6がレスポンス本体の終了を受け取るか、リクエストがタイムアウトしたときに発生します。
http_reqs
(カウンター):- k6が生成した合計のHTTPリクエスト数を示します。
http_req_blocked
(トレンド):- リクエストを開始する前に、TCP接続スロットを待機してブロックされた時間を示します。浮動小数点数で表されます。
http_req_connecting
(トレンド):- リモートホストとのTCP接続の確立にかかった時間を示します。浮動小数点数で表されます。
http_req_tls_handshaking
(トレンド):- リモートホストとのTLSセッションのハンドシェイクにかかった時間を示します。
http_req_sending
(トレンド):- データをリモートホストに送信するのにかかった時間を示します。浮動小数点数で表されます。
http_req_waiting
(トレンド):- リモートホストからの応答を待機している時間を示します(”time to first byte”または”TTFB”とも呼ばれます)。浮動小数点数で表されます。
http_req_receiving
(トレンド):- リモートホストからの応答データを受信するのにかかった時間を示します。浮動小数点数で表されます。
http_req_duration
(トレンド):- リクエスト全体の合計時間を示します。これは、http_req_sending + http_req_waiting + http_req_receiving と等しいです(つまり、リモートサーバーがリクエストを処理して応答するまでの時間を示し、初期のDNSルックアップ/接続時間を含みません)。浮動小数点数で表されます。
http_req_failed
(レート):- setResponseCallbackに従って失敗したリクエストのレートを示します。失敗したリクエストの割合を示します。
これらのメトリクスは、k6がHTTPリクエストを送信する際のさまざまな段階の情報を提供し、テストのパフォーマンスやレスポンス時間などを評価するのに役立ちます。
おわりに
今日は、k6のメトリクス情報についてご紹介しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント