見出し画像

負荷テストツールVegeta学習2:Vegetaを書いてみる


はじめに


こんにちは、DevOps推進部2グループの李です。前回はVegetaの概要とインストールの方法について紹介しました。実際にVegetaのコードの書き方について詳しく説明していきたいと思います。VegetaはコマンドプロンプトとPowerShellのどちらでも開発できますが、本記事ではPowerShellを使用したいと思います。

下記が今回使用するソフトウェアです。

今回は連載2回目としてコマンドの書き方と実行方法を紹介したいと思います。

連載目次

テスト対象


今回のテスト対象は、無償で利用可能なオープンソースの天気APIです。このAPIを利用すると、世界中のさまざまな場所の天気情報を取得できます。さらに、ログインや認証が不要で手軽に利用できます。詳細については、以下のURLで提供されているドキュメントをご参照ください。

公式サイト:https://open-meteo.com/

初めてのVegeta


Vegetaのコードを実際に書く前に、まず「vegeta_practice」という名前のフォルダを任意の場所に作成してください。その後、PowerShell ISEを開き、作成したフォルダを開いて以下のコードを入力してください。

echo "GET https://open-meteo.com/" | vegeta attack -rate=10 -duration=5s -workers=10 -output results.bin

vegeta report results.bin

上記コードの解説:

echoの後ろにアクセス目標サイトとアクセス方法を記載して、「vegeta attack」はアクセスを開始するVegetaのコマンドで、以下のオプションを指定しています:

  • -rate=10: リクエストレートを1秒あたり10リクエストに設定します。

  • -duration=5s:負荷テストを5秒間続けます。

  • -workers=10:10の並行ユーザを使用してアクセスを実行します。

  • --output results.bin:結果を results.bin ファイルに保存します。

2行目のvegeta report は、指定された負荷テストの結果を表示するVegetaのコマンドです。results.bin ファイルは、アクセスの結果が保存されたバイナリファイルです。 このコマンドを実行すると、指定されたURLに対して1秒あたり10リクエストを行う負荷テストが5秒間実行され、その結果が results.bin ファイルに保存されます。

レポートを出力


「vegeta report results.bin」を使用するとサマリーが表示されますが、reportの後にtypeパラメータを追加すると、さまざまなタイプのレポートを生成できます。たとえば、2行目の「vegeta report results.bin」を以下のように修正すると、ヒストグラムが表示されます。

vegeta report -type='hist[0,100ms,200ms,300ms,400ms,500ms,600ms,700ms,800ms]' results.bin

以下は、コードの各部分の説明です。 vegeta report: 負荷テストの結果を表示するVegetaのコマンドです。

  • -type='hist[0,100ms,200ms,300ms,400ms,500ms,600ms,700ms,800ms]': 表示形式を指定するオプションで、ヒストグラムを指定しています。このヒストグラムは、応答時間の範囲ごとにリクエストのカウントを示します。

  • hist[0,100ms,200ms,300ms,400ms,500ms,600ms,700ms,800ms] は、ヒストグラムのビン(範囲)を定義しています。例えば、0から100ミリ秒の範囲、100から200ミリ秒の範囲、といった具体的な範囲を指定しています。

このコマンドを実行すると、指定されたヒストグラム形式で結果が表示されます。各範囲ごとにリクエストのカウントが表示され、サーバーの応答時間に関する分布が視覚的に分かります。

ヒストグラム以外にも、さまざまな出力方法がありますので、気になる方はぜひ試してみてください。

  • -type=text:デフォルトの出力形式で、秒間リクエスト、スループット、レスポンス時間などの情報が表示されます。

  • -type=json:情報をJSON形式で出力します。

  • -type=hist:ヒストグラムを出力します。

  • -type=hdrplot:各リクエストの結果を一覧で表示します。

グラフを出力


テキストベースの出力以外にも、直接HTMLファイルにグラフを出力することができます。先に示したコードを改行し、3行目に以下のコードを挿入してください。

vegeta plot -title="Response time" results.bin > plot.html

上記のコードは、Vegetaツールを使用して実行した負荷テストの結果データを可視化するためのコマンドです。以下は、コードの各部分の説明です。

  • vegeta plot: 負荷テストの結果データをプロットするVegetaのコマンドです。

  • -title="Response time": プロットのタイトルを指定するオプションです。この場合、「Response time」というタイトルが指定されています。

  • results.bin: 負荷テストの結果が保存されたバイナリファイルです。

  • plot.html: プロットした結果を plot.html というHTMLファイルに保存するリダイレクションです。

このコードを実行すると、Vegetaはresults.binに保存されたデータを使用してプロットを生成し、その結果をHTMLファイルに保存します。生成されたHTMLファイルはグラフで実行結果を確認できます。

次回のお知らせ


今回はVegetaの基本的な書き方について紹介しました。いかがですか?VegetaはPowerShellでコマンドを直接操作することができ、思ったより簡単です!興味がある方は是非Vegetaのドキュメントを確認してみてください。 次回はVegetaのパラメータについて紹介したいと思います。

最後までお読みいただきありがとうございました。また次回の記事でお会いしましょう!

参考資料:


  1. 無料天気API:https://open-meteo.com/

  2. Vegetaのドキュメント:https://github.com/tsenart/vegeta


執筆者プロフィール:李 嘉興
社会人になって以来、数年間システムエンジニアとして多数のプロジェクトの開発(要件定義~リリース)を経験したのち、2021年7月にSHIFTに入社。システムエンジニアの仕事と全く違う分野の自動化とCICDを経験しつつ、未来のキャリアのため日々奮闘中。

お問合せはお気軽に
https://service.shiftinc.jp/contact/

SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/

SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/

SHIFTの導入事例
https://service.shiftinc.jp/case/

お役立ち資料はこちら
https://service.shiftinc.jp/resources/

SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/

PHOTO:UnsplashClément Hélardot