{"ts":1794235501.323290,"level":"info","r":1,"file":"scli.go","line":124,"msg":"Starting","command":"Fortio OTEL variant","version":"1.76.0+dirty go1.27.3 amd64 linux","go-max-procs":64}
Fortio OTEL variant 1.76.0+dirty usage:
fortio command [flags] target
where command is one of: load (load testing), server (starts ui, rest api,
http-echo, redirect, proxies, tcp-echo, udp-echo and grpc ping servers),
tcp-echo (only the tcp-echo server), udp-echo (only udp-echo server),
report (report only UI server), redirect (only the redirect server),
proxies (only the -M and -P configured proxies), grpcping (gRPC client),
or curl (single URL debug), or nc (single tcp or udp:// connection),
or script (interactive grol script mode or script file),
or version (prints the full version and build details).
where target is a URL (http load tests) or host:port (grpc health test),
or tcp://host:port (tcp load test), or udp://host:port (udp load test).
or 1 of the special arguments
/usr/bin/fortio {help|envhelp|version|buildinfo}
flags:
-H key:value
Additional HTTP header(s) or gRPC metadata. Multiple key:value pairs can be passed using multiple -H.
-L Follow redirects (implies -std-client) - do not use for load test
-M value
HTTP multi proxy to run, e.g -M "localport1 baseDestURL1 baseDestURL2" -M ...
-P value
TCP proxies to run, e.g -P "localport1 dest_host1:dest_port1" -P "[::1]:0 www.google.com:443" ...
-X string
HTTP method to use instead of GET/POST depending on payload/content-type
-a Automatically save JSON result with filename based on labels & timestamp (default true)
-abort-on int
HTTP status code that if encountered aborts the run. e.g., 503 or -1 for socket errors.
-access-log-file path
file path to log all requests to. Maybe have performance impacts
-access-log-format format
format for access log. Supported values: [json, influx] (default "json")
-allow-initial-errors
Allow and don't abort on initial warmup errors
-b3multi
Set to use b3 multi header propagation instead of traceparent (default true)
-b3single
Set to use b3 single header propagation instead of traceparent
-base-url URL
base URL used as prefix for data/index.tsv generation. (when empty, the URL from the first request is used)
-c int
Number of connections/goroutine/threads (default 4)
-cacert Path
Path to a custom CA certificate file to be used for the TLS client connections, if empty, use https:// prefix for standard internet/system CAs
-calc-qps
Calculate the qps based on number of requests (-n) and duration (-t)
-cert Path
Path to the certificate file to be used for client or server TLS
-compression
Enable HTTP compression
-config-dir directory
Config directory to watch for dynamic flag changes
-config-port port
Config port to open for dynamic flag UI/api
-connection-reuse min:max
Range min:max for the max number of connections to reuse for each thread, default to unlimited. e.g. 10:30 means randomly choose a max connection reuse threshold between 10 and 30 requests.
-content-type string
Sets HTTP content type. Setting this value switches the request method from GET to POST.
-curl
Just fetch the content once
-curl-stdout-headers
Restore pre 1.22 behavior where HTTP headers of the fast client are output to stdout in curl mode. now stderr by default.
-data-dir Directory
Directory where JSON results are stored/read (default ".")
-dns-method method
When a name resolves to multiple ip, which method to pick: cached-rr for cached round-robin, rnd for random, first for first answer (pre 1.30 behavior), rr for round-robin. (default cached-rr)
-echo-debug-path URI
http echo server URI for debug, empty turns off that part (more secure) (default "/debug")
-echo-server-default-params value
Default parameters/querystring to use if there isn't one provided explicitly. E.g "status=404&delay=3s"
-gomaxprocs int
Setting for runtime.GOMAXPROCS, < 1 doesn't change the default
-grpc
Use gRPC (health check by default, add -ping for ping) for load testing
-grpc-compression
Enable gRPC compression
-grpc-max-streams uint
MaxConcurrentStreams for the gRPC server. Default (0) is to leave the option unset.
-grpc-method string
Fully-qualified gRPC method to call (Service/Method). Service must have reflection enabled.
-grpc-ping-delay duration
gRPC ping delay in response
-grpc-port port
grpc server port. Can be in the form of host:port, ip:port or port or /unix/domain/path or "disabled" to not start the gRPC server. (default "8079")
-h2
Attempt to use HTTP/2.0 / h2 (instead of HTTP/1.1) for both TLS and h2c (default true)
-halfclose
When not keepalive, whether to half close the connection (only for fast http)
-health
gRPC ping client mode: use health instead of ping
-healthservice string
which service string to pass to health check
-http-port port
http-echo server port. Can be in the form of host:port, ip:port, port or /unix/domain/path or "disabled". (default "8080")
-http1.0
Use HTTP/1.0 (instead of HTTP/1.1)
-httpbufferkb kbytes
Size of the buffer (max data size) for the optimized HTTP client in kbytes (default 128)
-httpccch
Check for Connection: Close Header
-https-insecure
Long form of the -k flag
-init code
grol code to run before the script (for instance to set some arguments)
-jitter
set to true to de-synchronize parallel clients' by 10%
-json path
JSON output to provided file path or '-' for stdout (empty = no json output, unless -a is used)
-k Do not verify certs in HTTPS/TLS/gRPC connections
-keepalive
Keep connection alive (only for fast HTTP/1.1) (default true)
-key Path
Path to the key file matching the -cert
-labels string
Additional config data/labels to add to the resulting JSON, defaults to target URL and hostname
-log-errors
Log HTTP non-2xx/418 status codes as they occur (default true)
-logger-file-line
Filename and line numbers emitted in JSON logs, use -logger-file-line=false to disable (default true)
-logger-force-color
Force color output even if stderr isn't a terminal
-logger-goroutine
GoroutineID emitted in JSON/color logs, use -logger-goroutine=false to disable (default true)
-logger-json
Log in JSON format, use -logger-json=false to disable (default true)
-logger-no-color
Prevent colorized output even if stderr is a terminal
-logger-timestamp
Timestamps emitted in JSON logs, use -logger-timestamp=false to disable (default true)
-loglevel level
log level, one of [Debug Verbose Info Warning Error Critical Fatal] (default Info)
-max-echo-delay value
Maximum sleep time for delay= echo server parameter. dynamic flag. (default 1.5s)
-maxpayloadsizekb Kbytes
MaxPayloadSize is the maximum size of payload to be generated by the EchoHandler size= argument. In Kbytes. (default 256)
-mtls
Require client certificate signed by -cacert for client connections
-multi-mirror-origin
Mirror the request URL to the target for multi proxies (-M) (default true)
-multi-serial-mode
Multi server (-M) requests one at a time instead of parallel mode
-n int
Run for exactly this number of calls instead of duration. Default (0) is to use duration (-t). Default is 1 when used as gRPC ping count.
-nc-dont-stop-on-eof
in netcat (nc) mode, don't abort as soon as remote side closes
-no-reresolve
Keep the initial DNS resolution and don't re-resolve when making new connections (because of error or reuse limit reached)
-nocatchup
set to exact fixed qps and prevent fortio from trying to catchup when the target fails to keep up temporarily (default true)
-offset duration
Offset of the histogram data
-p string
List of pXX to calculate (default "50,75,90,99,99.9")
-payload string
Payload string to send along
-payload-file path
File path to be use as payload (POST for HTTP), replaces -payload when set.
-payload-size int
Additional random payload size, replaces -payload when set > 0, must be smaller than -maxpayloadsizekb. Setting this switches HTTP to POST.
-ping
gRPC load test: use ping instead of health
-pprof
Enable pprof HTTP endpoint in the Web UI handler server
-profile file
write .cpu and .mem profiles to file
-proxy-all-headers
Determines if only tracing or all headers (and cookies) are copied from request on the fetch2 ui/server endpoint (default true)
-qps float
Queries Per Seconds or 0 for no wait/max qps (default 8)
-quiet
Quiet mode, sets loglevel to Error (quietly) to reduces the output
-r float
Resolution of the histogram lowest buckets in seconds (default 0.001)
-redirect-port port
Redirect all incoming traffic to https:// URL (need ingress to work properly). Can be in the form of host:port, ip:port, port or "disabled" to disable the feature. (default "8081")
-resolve IP
Resolve host name to this IP
-resolve-ip-type type
Resolve type: ip4 for ipv4, ip6 for ipv6 only, use ip for both (default ip4)
-runid int
Optional RunID to add to JSON result and auto save filename, to match server mode
-s int
Number of streams per gRPC connection (default 1)
-sequential-warmup
http(s) runner warmup done sequentially instead of parallel. When set, restores pre 1.21 behavior
-server-idle-timeout value
Default IdleTimeout for servers (default 30s)
-static-dir path
Deprecated/unused path.
-stdclient
Use the slower net/http standard client (slower but supports h2/h2c) (default true)
-stream
Stream payload from stdin (only for fortio curl mode)
-sync URL
index.tsv or s3/gcs bucket XML URL to fetch at startup for server modes.
-sync-interval duration
Refresh the URL every given interval (default, no refresh)
-t duration
How long (duration) to run the test or 0 to run until ^C (default 5s)
-tcp-port port
tcp-echo server port. Can be in the form of host:port, ip:port, port or /unix/domain/path or "disabled". (default "8078")
-timeout duration
Connection and read timeout value (for HTTP) (default 3s)
-udp-async
if true, udp echo server will use separate go routine to reply
-udp-port port
udp-echo server port. Can be in the form of host:port, ip:port, port or "disabled". (default "8078")
-udp-timeout duration
Udp timeout (default 750ms)
-ui-path URI
HTTP server URI for UI, empty turns off that part (more secure) (default "/fortio/")
-uniform
set to true to de-synchronize parallel clients' requests uniformly (default true)
-unix-socket path
Unix domain socket path to use for physical connection
-user user:password
User credentials for basic authentication (for HTTP). Input data format should be user:password
Error: unknown command "--help"
Options (102)
| Option | Description | Source |
|---|---|---|
-H key:value | Additional HTTP header(s) or gRPC metadata. | help |
-L | Follow redirects (implies -std-client) - do not use for load test | help |
-M value | HTTP multi proxy to run, e.g -M "localport1 baseDestURL1 baseDestURL2" -M ... | help |
-P value | TCP proxies to run, e.g -P "localport1 dest_host1:dest_port1" -P "[::1]:0 www.google.com:443" ... | help |
-X string | HTTP method to use instead of GET/POST depending on payload/content-type | help |
-a | Automatically save JSON result with filename based on labels & timestamp (default true) | help |
-abort-on int | HTTP status code that if encountered aborts the run. | help |
-access-log-file path | file path to log all requests to. | help |
-access-log-format format | format for access log. | help |
-allow-initial-errors | Allow and don't abort on initial warmup errors | help |
-b3multi | Set to use b3 multi header propagation instead of traceparent (default true) | help |
-b3single | Set to use b3 single header propagation instead of traceparent | help |
-base-url URL | base URL used as prefix for data/index.tsv generation. | help |
-c int | Number of connections/goroutine/threads (default 4) | help |
-cacert Path | Path to a custom CA certificate file to be used for the TLS client connections, if empty, use https:// prefix for standard internet/system CAs | help |
-calc-qps | Calculate the qps based on number of requests (-n) and duration (-t) | help |
-cert Path | Path to the certificate file to be used for client or server TLS | help |
-compression | Enable HTTP compression | help |
-config-dir directory | Config directory to watch for dynamic flag changes | help |
-config-port port | Config port to open for dynamic flag UI/api | help |
-connection-reuse min:max | Range min:max for the max number of connections to reuse for each thread, default to unlimited. | help |
-content-type string | Sets HTTP content type. | help |
-curl | Just fetch the content once | help |
-curl-stdout-headers | Restore pre 1.22 behavior where HTTP headers of the fast client are output to stdout in curl mode. | help |
-data-dir Directory | Directory where JSON results are stored/read (default ".") | help |
-dns-method method | When a name resolves to multiple ip, which method to pick: cached-rr for cached round-robin, rnd for random, first for first answer (pre 1.30 behavior), rr for round-robin. | help |
-echo-debug-path URI | http echo server URI for debug, empty turns off that part (more secure) (default "/debug") | help |
-echo-server-default-params value | Default parameters/querystring to use if there isn't one provided explicitly. | help |
-gomaxprocs int | Setting for runtime.GOMAXPROCS, < 1 doesn't change the default | help |
-grpc | Use gRPC (health check by default, add -ping for ping) for load testing | help |
-grpc-compression | Enable gRPC compression | help |
-grpc-max-streams uint | MaxConcurrentStreams for the gRPC server. | help |
-grpc-method string | Fully-qualified gRPC method to call (Service/Method). | help |
-grpc-ping-delay duration | gRPC ping delay in response | help |
-grpc-port port | grpc server port. | help |
-h2 | Attempt to use HTTP/2.0 / h2 (instead of HTTP/1.1) for both TLS and h2c (default true) | help |
-halfclose | When not keepalive, whether to half close the connection (only for fast http) | help |
-health | gRPC ping client mode: use health instead of ping | help |
-healthservice string | which service string to pass to health check | help |
-http-port port | http-echo server port. | help |
-http1.0 | Use HTTP/1.0 (instead of HTTP/1.1) | help |
-httpbufferkb kbytes | Size of the buffer (max data size) for the optimized HTTP client in kbytes (default 128) | help |
-httpccch | Check for Connection: Close Header | help |
-https-insecure | Long form of the -k flag | help |
-init code | grol code to run before the script (for instance to set some arguments) | help |
-jitter | set to true to de-synchronize parallel clients' by 10% | help |
-json path | JSON output to provided file path or '-' for stdout (empty = no json output, unless -a is used) | help |
-k | Do not verify certs in HTTPS/TLS/gRPC connections | help |
-keepalive | Keep connection alive (only for fast HTTP/1.1) (default true) | help |
-key Path | Path to the key file matching the -cert | help |
-labels string | Additional config data/labels to add to the resulting JSON, defaults to target URL and hostname | help |
-log-errors | Log HTTP non-2xx/418 status codes as they occur (default true) | help |
-logger-file-line | Filename and line numbers emitted in JSON logs, use -logger-file-line=false to disable (default true) | help |
-logger-force-color | Force color output even if stderr isn't a terminal | help |
-logger-goroutine | GoroutineID emitted in JSON/color logs, use -logger-goroutine=false to disable (default true) | help |
-logger-json | Log in JSON format, use -logger-json=false to disable (default true) | help |
-logger-no-color | Prevent colorized output even if stderr is a terminal | help |
-logger-timestamp | Timestamps emitted in JSON logs, use -logger-timestamp=false to disable (default true) | help |
-loglevel level | log level, one of [Debug Verbose Info Warning Error Critical Fatal] (default Info) | help |
-max-echo-delay value | Maximum sleep time for delay= echo server parameter. | help |
-maxpayloadsizekb Kbytes | MaxPayloadSize is the maximum size of payload to be generated by the EchoHandler size= argument. | help |
-mtls | Require client certificate signed by -cacert for client connections | help |
-multi-mirror-origin | Mirror the request URL to the target for multi proxies (-M) (default true) | help |
-multi-serial-mode | Multi server (-M) requests one at a time instead of parallel mode | help |
-n int | Run for exactly this number of calls instead of duration. | help |
-nc-dont-stop-on-eof | in netcat (nc) mode, don't abort as soon as remote side closes | help |
-no-reresolve | Keep the initial DNS resolution and don't re-resolve when making new connections (because of error or reuse limit reached) | help |
-nocatchup | set to exact fixed qps and prevent fortio from trying to catchup when the target fails to keep up temporarily (default true) | help |
-offset duration | Offset of the histogram data | help |
-p string | List of pXX to calculate (default "50,75,90,99,99.9") | help |
-payload string | Payload string to send along | help |
-payload-file path | File path to be use as payload (POST for HTTP), replaces -payload when set. | help |
-payload-size int | Additional random payload size, replaces -payload when set > 0, must be smaller than -maxpayloadsizekb. | help |
-ping | gRPC load test: use ping instead of health | help |
-pprof | Enable pprof HTTP endpoint in the Web UI handler server | help |
-profile file | write .cpu and .mem profiles to file | help |
-proxy-all-headers | Determines if only tracing or all headers (and cookies) are copied from request on the fetch2 ui/server endpoint (default true) | help |
-qps float | Queries Per Seconds or 0 for no wait/max qps (default 8) | help |
-quiet | Quiet mode, sets loglevel to Error (quietly) to reduces the output | help |
-r float | Resolution of the histogram lowest buckets in seconds (default 0.001) | help |
-redirect-port port | Redirect all incoming traffic to https:// URL (need ingress to work properly). | help |
-resolve IP | Resolve host name to this IP | help |
-resolve-ip-type type | Resolve type: ip4 for ipv4, ip6 for ipv6 only, use ip for both (default ip4) | help |
-runid int | Optional RunID to add to JSON result and auto save filename, to match server mode | help |
-s int | Number of streams per gRPC connection (default 1) | help |
-sequential-warmup | http(s) runner warmup done sequentially instead of parallel. | help |
-server-idle-timeout value | Default IdleTimeout for servers (default 30s) | help |
-static-dir path | Deprecated/unused path. | help |
-stdclient | Use the slower net/http standard client (slower but supports h2/h2c) (default true) | help |
-stream | Stream payload from stdin (only for fortio curl mode) | help |
-sync URL | index.tsv or s3/gcs bucket XML URL to fetch at startup for server modes. | help |
-sync-interval duration | Refresh the URL every given interval (default, no refresh) | help |
-t duration | How long (duration) to run the test or 0 to run until ^C (default 5s) | help |
-tcp-port port | tcp-echo server port. | help |
-timeout duration | Connection and read timeout value (for HTTP) (default 3s) | help |
-udp-async | if true, udp echo server will use separate go routine to reply | help |
-udp-port port | udp-echo server port. | help |
-udp-timeout duration | Udp timeout (default 750ms) | help |
-ui-path URI | HTTP server URI for UI, empty turns off that part (more secure) (default "/fortio/") | help |
-uniform | set to true to de-synchronize parallel clients' requests uniformly (default true) | help |
-unix-socket path | Unix domain socket path to use for physical connection | help |
-user user:password | User credentials for basic authentication (for HTTP). | help |