ali comes with an embedded terminal-based UI where you can plot the metrics in real-time, so lets you perform real-time analysis on the terminal.
Binary releases are available through here.
brew install nakabonne/ali/ali
wget https://github.com/nakabonne/ali/releases/download/v0.5.1/ali_0.5.1_linux_amd64.deb apt install ./ali_0.5.1_linux_amd64.deb
curl -OL https://github.com/nakabonne/ali/releases/download/v0.5.1/ali_0.5.1_linux_amd64.rpm rpm -i ./ali_0.5.1_linux_amd64.rpm
yay -S ali
Note that you may have a problem because it downloads an untagged binary.
go get github.com/nakabonne/ali
docker run --rm -it nakabonne/ali ali
http://host.xz with the target you want to issue the requests to.
Press Enter when the UI appears, then the attack will be launched with default options.
ali -h Usage: ali [flags] <target URL> Flags: -b, --body string A request body to be sent. -B, --body-file string The path to file whose content will be set as the http request body. --buckets Histogram buckets in comma-separated value (example: "10ms, 100ms, 500ms". -c, --connections int Amount of maximum open idle connections per target host (default 10000) --debug Run in debug mode. -d, --duration duration The amount of time to issue requests to the targets. Give 0s for an infinite attack. (default 10s) -H, --header strings A request header to be sent. Can be used multiple times to send multiple headers. --local-addr string Local IP address. (default "0.0.0.0") -M, --max-body int Max bytes to capture from response bodies. Give -1 for no limit. (default -1) -W, --max-workers uint Amount of maximum workers to spawn. (default 18446744073709551615) -m, --method string An HTTP request method for each request. (default "GET") --no-http2 Don't issue HTTP/2 requests to servers which support it. -K, --no-keepalive Don't use HTTP persistent connection. -r, --rate int The request rate per second to issue against the targets. Give 0 then it will send requests as fast as possible. (default 50) -t, --timeout duration The timeout for each request. 0s means to disable timeouts. (default 30s) -v, --version Print the current version. -w, --workers uint Amount of initial workers to spawn. (default 10)
Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
h) to switch the displayed chart. On all charts, you can click and drag to select a region to zoom into.
The X-axis represents the request counts and the Y-axis represents latencies in milliseconds.
You can see how the 50th, 90th, 95th, and 99th percentiles are changing.
This will help you during long tests.
With the help of mum4k/termdash can be used intuitively.
This project would not have been possible without the effort of many individuals and projects but especially vegeta for the inspiration and powerful API.
ali is built with termdash (as well as termbox-go) for the rendering of all those fancy graphs on the terminal.
They clearly stimulated an incentive to creation. A big "thank you!" goes out to all those who helped.