All Projects → nakabonne → Ali

nakabonne / Ali

Licence: mit
Generate HTTP load and plot the results in real-time

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Ali

Devdash
🍱 Highly Configurable Terminal Dashboard for Developers and Creators
Stars: ✭ 939 (-69.26%)
Mutual labels:  tui, monitoring
Gatling Dubbo
A gatling plugin for running load tests on Apache Dubbo(https://github.com/apache/incubator-dubbo) and other java ecosystem.
Stars: ✭ 131 (-95.71%)
Mutual labels:  benchmarking, load-testing
Kmon
Linux Kernel Manager and Activity Monitor 🐧💻
Stars: ✭ 1,142 (-62.62%)
Mutual labels:  tui, monitoring
Processhacker
A free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware.
Stars: ✭ 6,285 (+105.73%)
Mutual labels:  monitoring, benchmarking
Bottom
Yet another cross-platform graphical process/system monitor.
Stars: ✭ 3,182 (+4.16%)
Mutual labels:  tui, monitoring
Karate
Test Automation Made Simple
Stars: ✭ 5,497 (+79.93%)
Mutual labels:  load-testing, testing-tools
Profiling Nodejs
🌌 Collection of articles and tools to efficiently profile Node.js
Stars: ✭ 93 (-96.96%)
Mutual labels:  monitoring, benchmarking
Locust
Scalable user load testing tool written in Python
Stars: ✭ 17,763 (+481.44%)
Mutual labels:  benchmarking, load-testing
Shadowreader
Serverless load testing for replaying website traffic. Powered by AWS Lambda.
Stars: ✭ 138 (-95.48%)
Mutual labels:  benchmarking, load-testing
Sltbench
C++ benchmark tool. Practical, stable and fast performance testing framework.
Stars: ✭ 137 (-95.52%)
Mutual labels:  benchmarking, testing-tools
Awesome Test Automation
A curated list of awesome test automation frameworks, tools, libraries, and software for different programming languages. Sponsored by http://sdclabs.com
Stars: ✭ 4,712 (+54.24%)
Mutual labels:  load-testing, testing-tools
Rabbitmq Perf Test
A load testing tool
Stars: ✭ 197 (-93.55%)
Mutual labels:  benchmarking, load-testing
Tcpcopy
An online request replication tool, also a tcp stream replay tool, fit for real testing, performance testing, stability testing, stress testing, load testing, smoke testing, etc
Stars: ✭ 4,028 (+31.85%)
Mutual labels:  load-testing, testing-tools
Flightsim
A utility to generate malicious network traffic and evaluate controls
Stars: ✭ 525 (-82.82%)
Mutual labels:  monitoring, testing-tools
Vegeta
HTTP load testing tool and library. It's over 9000!
Stars: ✭ 18,780 (+514.73%)
Mutual labels:  benchmarking, load-testing
Awesome K6
A curated list of resources on automated load- and performance testing using k6 🗻
Stars: ✭ 78 (-97.45%)
Mutual labels:  load-testing, testing-tools
Openrunner
Computest Openrunner: Benchmark and functional testing for frontend-heavy web applications
Stars: ✭ 16 (-99.48%)
Mutual labels:  benchmarking, testing-tools
Gosivy
Real-time visualization tool for Go process metrics
Stars: ✭ 284 (-90.7%)
Mutual labels:  tui, monitoring
Kubebox
⎈❏ Terminal and Web console for Kubernetes
Stars: ✭ 1,855 (-39.28%)
Mutual labels:  tui, monitoring
Goaccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
Stars: ✭ 14,096 (+361.41%)
Mutual labels:  tui, monitoring

ali

Release Go Reference

A load testing tool capable of performing real-time analysis, inspired by vegeta and jplot.

Screenshot

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.

Installation

Binary releases are available through here.

Via Homebrew

brew install nakabonne/ali/ali

Via MacPorts

sudo port selfupdate
sudo port install ali

Via APT

wget https://github.com/nakabonne/ali/releases/download/v0.7.3/ali_0.7.3_linux_amd64.deb
apt install ./ali_0.7.3_linux_amd64.deb

Via RPM

rpm -ivh https://github.com/nakabonne/ali/releases/download/v0.7.3/ali_0.7.3_linux_amd64.rpm

Via Pacman

pacman -S ali

Via APK

After enabling the community repo:

apk add ali

Via Go

Note that you may have a problem because it downloads an untagged binary.

go get github.com/nakabonne/ali

Via Docker

docker run --rm -it nakabonne/ali ali

Usage

Quickstart

ali http://host.xz

Replace 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 (rate=50, duration=10s).

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.
      --cacert string              PEM ca certificate file
      --cert string                PEM encoded tls certificate file to use
  -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 stringArray         A request header to be sent. Can be used multiple times to send multiple headers.
      --insecure                   Skip TLS verification
      --key string                 PEM encoded tls private key file to use
      --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.
      --query-range duration       The results within the given time range will be drawn on the charts (default 30s)
  -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)
      --redraw-interval duration   The time interval to redraw charts (default 250ms)
      --resolvers string           Custom DNS resolver addresses; comma-separated list.
  -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)

Examples:
  ali --duration=10m --rate=100 http://host.xz

Author:
  Ryo Nakao <[email protected]>

Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".

Examples

For basic usage:

ali --rate=500 --duration=5m http://host.xz

For an infinite attack:

ali --duration=0 http://host.xz

For an attack with the POST method:

ali --body-file=/path/to/foo.json --method=POST http://host.xz

Charts

Press l (or h) to switch the displayed chart. On all charts, you can click and drag to select a region to zoom into.

Latency

Screenshot

The X-axis represents the request counts and the Y-axis represents latencies in milliseconds.

Percentiles

Screenshot

You can see how the 50th, 90th, 95th, and 99th percentiles are changing.

Bytes

TBA

Histogram

TBA

Features

Plot in real-time

Screenshot

Visualize the attack progress

This will help you during long tests.

Screenshot

Mouse support

With the help of mum4k/termdash can be used intuitively.

Screenshot

Acknowledgements

This project would not have been possible without the effort of many individuals and projects but especially vegeta for the inspiration and powerful API. Besides, 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].