特徴
✔️ プロトコルにとらわれない - 現在、HTTP、HTTPS、HTTP/2をサポートしています。その他のプロトコルも予定しています。
✔️ シナリオベース - JSON ファイルでフローを作成します。コードは1行もありません。
✔️ 異なる負荷タイプ - 異なる負荷タイプでシステムの限界をテストします。
インストール
ddosifyはDocker、Homebrew Tap、およびリリースページからコンパイル済みのバイナリをダウンロードして、macOS、Linux、Windowsで利用できます。
Docker
docker run -it --rm ddosify/ddosify
Homebrew Tap (macOS and Linux)
brew install ddosify/tap/ddosify
apk, deb, rpm packages
# For Redhat based (Fedora, CentOS, RHEL, etc.)
rpm -i https://github.com/ddosify/ddosify/releases/download/v0.1.1/ddosify_amd64.rpm
# For Debian based (Ubuntu, Linux Mint, etc.)
wget https://github.com/ddosify/ddosify/releases/download/v0.1.1/ddosify_amd64.deb
dpkg -i ddosify_amd64.deb
# For Alpine
wget https://github.com/ddosify/ddosify/releases/download/v0.1.1/ddosify_amd64.apk
apk add --allow-untrusted ddosify_amd64.apk
便利なスクリプトを使う(macOS、Linux)
- このスクリプトでは、ddosify のバイナリを /usr/local/bin に移動するために root または sudo の権限が必要です。
- スクリプトは、オペレーティングシステム(macOSまたはLinux)とアーキテクチャ(arm64、x86、amd64)を検出して、リリースページから適切なバイナリをダウンロードしようとします。
- デフォルトでは、スクリプトは最新バージョンのddosifyをインストールします。
- 問題がある場合は、一般的な問題を確認してください。
- 必要なパッケージ: curl と sudo
ソースからインストールする(macOS、Linux、Windows)
go install -v go.ddosify.com/ddosify@latest
簡単なスタート
このセクションでは、Ddosifyの使い方を簡単に説明しています。
1.簡易負荷テスト
ddosify -t target_site.com
上記のコマンドでは、デフォルト値である10秒間に100回のリクエストを行う負荷テストを実行します。
2.いくつかの機能を使う
ddosify -t target_site.com -n 1000 -d 20 -p HTTPS -m PUT -T 7 -P http://proxy_server.com:80
Ddosify は、プロキシ http://proxy_server.com:80 を通じて https://target_site.com に、1 リクエストあたり 7 秒のタイムアウトで 20 秒間に合計 1000 の PUT リクエストを送信します。
3.シナリオベースの負荷テスト
ddosify -config config_examples/config.json
Ddosify はまず、プロキシ http://proxy_host.com:proxy_port を通じて、基本的な認証情報 test_user:12345 を用いて、HTTP/2 の POST リクエストを https://test_site1.com/endpoint_1 に送信し、タイムアウトを 3 秒に設定する。レスポンスを受け取ると、HTTPS GET リクエストが、config_examples/payload.txt ファイルに含まれるペイロードとともに https://test_site1.com/endpoint_2 に送信され、2秒のタイムアウトが設定される。このフローは、5秒間に20回繰り返され、レスポンスが標準出力に書き込まれます。
詳細
ロードテストの設定は、CLIオプションまたはコンフィグファイルで行うことができます。コンフィグファイルは、CLIよりも多くの機能をサポートしています。例えば、CLIオプションでは、シナリオベースの負荷テストを作成することはできません。
CLIフラグ
ddosify [FLAG]
Flag | Description | Type | Default | Required? |
---|---|---|---|---|
-t | Target website URL. Example: https://ddosify.com | string | - | Yes |
-n | Total request count | int | 100 | No |
-d | Test duration in seconds. | int | 10 | No |
-p | Protocol of the request. Supported protocols are HTTP, HTTPS. HTTP/2 support is only available by using a config file as described. More protocols will be added. | string | HTTPS | No |
-m | Request method. Available methods for HTTP(s) are GET, POST, PUT, DELETE, UPDATE, PATCH | string | GET | No |
-b | The payload of the network packet. AKA body for the HTTP. | string | - | No |
-a | Basic authentication. Usage: -a username:password | string | - | No |
-h | Headers of the request. You can provide multiple headers with multiple -h flag. | string | - | No |
-T | Timeout of the request in seconds. | int | 5 | No |
-P | Proxy address as host:port. -P http://user:pass@proxy_host.com:port' | string | - | No |
-o | Test result output destination. Other output types will be added. | string | stdout | No |
-l | Type of the load test. Ddosify supports 3 load types. | string | linear | No |
-config | Config File of the load test. | string | - | No |
-version | Prints version, git commit, built date (utc), go information and quit | - | - | No |
Load Types
Linear
ddosify -t target_site.com -l linear
結果:
注:指定された期間に対してリクエスト数が少なすぎる場合、テストが予想よりも早く終了する可能性があります。Incremental
ddosify -t target_site.com -l incremental
結果:
Waved
ddosify -t target_site.com -l waved
結果:
コンフィグファイル
コンフィグファイルは、Ddosifyの全ての機能を使用するためのものです。
コンフィグファイルで使用可能な機能
- シナリオ作成
- ファイルからのペイロード
- キープアライブの有効化/無効化ロジックなどの追加接続設定
- HTTP2のサポート
使い方
ddosify -config <json_config_path>
config_examples/config.jsonには、サンプルの設定ファイルがあります。このファイルには、使用できるすべてのパラメータが含まれています。各パラメータの詳細です。
request_count
optionalこれは、-nフラグと同等のものです。違いは、シナリオに複数のステップがある場合、この値はステップの反復回数を表すことです。
load_type
optionalこれは
-l
フラグと同じです。duration
optionalこれは
-d
フラグに該当します。proxy
optionalこれは
-P
フラグと同じです。output
optionalこれは
-o
フラグと同じです。steps
mandatoryこのパラメータで、シナリオを作成することができます。Ddosifyは、指定されたステップをそれぞれ実行します。与えられたファイルの例では、ステップID:1のレスポンスを受信した直後にステップID:2が実行されます。実行の順番は、コンフィグファイル内のステップの順番と同じです。
id
mandatory各ステップには、一意の整数IDが必要です。
url
mandatoryこれは
-t
フラグと同じです。protocol
optionalこれは
-p
フラグと同じです。method
optional-m
フラグと同じです。headers
optionalkey:value形式のヘッダのリスト。
payload
optional-b
と同義payload_file
optional長いペイロードが必要な場合は、
payload
の代わりにこのパラメータを使用することをお勧めします。auth
optionalベーシック認証
"auth": { "username": "test_user", "password": "12345" }
others
optionalこのパラメータには、使用するプロトコルの接続詳細を設定するための動的なキーと値のペアを入力します。
"others": { "keep-alive": true, // Default false "disable-compression": false, // Default true "h2": true, // Enables HTTP/2. Default false. "disable-redirect": true // Default false }