Probe is a command line tool that does one thing: interrogates a service to determine if it is alive/ready.
Whether the probe result corresponds to aliveness or readiness depends on how the service handles connections and/or requests on the specified address.
Probe supports http, http, and tcp. The scheme is specified by the fully qualified address.
TCP probing simply opens a connection to the supplied address and port and then closes it.
HTTP probing opens a connection to the supplied address, port, and path, makes an HTTP GET request, reads the response, and closes the connection.
HTTPS probing acts like HTTP probing, except with TLS/SSL certification.
HTTP and HTTPS attempts expect a successful response status code (>= 200 and < 400).
Open and close a TCP connection:
probe tcp://example.com:80
Make an HTTP GET request:
probe http://example.com/
Make an HTTPS GET request:
probe https://example.com/
0
- Success1
- Runtime Error2
- Input Validation Error
The error description will be printed to STDERR.
Probe can optional retry attempts (e.g. --max-attempts=2
).
Related Options:
--max-attempts
- Maximum number of attempts to make (unlimitted: -1) (default 1)--retry-delay
- Delay between attempts. Valid time units: ns, us (or µs), ms, s, m, h. (default 1s)
Retry 5 times with a half second delay between each attempt:
probe --max-attempts=5 --retry-delay=0.5s http://example.com/
Probe can optionally time out (e.g. --timeout=5s
).
Related Options:
--timeout
- Time after which the attempt(s) will be interrupted. Valid time units: ns, us (or µs), ms, s, m, h. (default -1ns)--attempt-timeout
- Time after which each individual attempt will be interrupted. Valid time units: ns, us (or µs), ms, s, m, h. (default -1ns)
Retry for 30 seconds with a two second delay between each attempt and five second timeout for each attempt:
probe --timeout=30s --max-attempts=-1 --retry-delay=2s --attempt-timeout=5s http://example.com/
Probe uses Go's DNS resolver, which can be configured by environment variable to force Go-based or C-based resolution.
See http://golang.org/pkg/net/#hdr-Name_Resolution for more details.
If the Go-based resolver is used, there is no built-in DNS caching, which may or may not be desirable.
Find platform-specific download URL to the latest release.
Linux Example:
curl -sL https://github.com/karlkfi/probe/releases/download/v0.3.0/probe-0.3.0-linux_amd64.tgz | sudo tar zxf - -C /usr/local/bin/
Go get can be used to install the bleeding edge revision (HEAD):
go get github.com/karlkfi/probe
Homebrew can be used to install the latest released version using a formula from the karlkfi/homebrew-terminal tap:
brew tap karlkfi/homebrew-terminal
brew install probe
After checking out the Git repo, Probe can be compiled with Make.
Build locally (Requires Go (Golang)):
make
Build the linux binary in docker (Requires Docker):
make build-docker
Build the Linux and Mac binaries in docker (Requires Docker):
make build-docker-cross
Build the docker builder (Requires Docker):
make builder
Package binaries:
for f in pkg/*; do cd $f && tar -zcvf probe-${VERSION}-$(basename $f).tgz probe; cd ../..; done
- Add SSL certificate validation options (currently ignores cert validity).
- Add configurable DNS caching
Copyright 2015 Karl Isenberg
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.