Graphping is a tool to ping a list of endpoints and send the results to statsd
It allows you to create graphs of latency in a similar manner to smokeping
Graphping is written in Go and takes advantages of many of Go's features:
- Built in concurrency
- Fast
- Easy to build/install
Graphping requires a few options to run. Here's the basic usage:
NAME: graph-ping - Ping a list of endpoints and send the resulting metrics to statsd USAGE: main [global options] command [command options] [arguments...] VERSION: 0.1 AUTHOR(S): Lee Briggs COMMANDS: help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --config-file value, -c value Path to configuration file --statsd value, -s value Address of statsd listener --verbose Output metrics in logs --help, -h show help --version, -v print the version Graphping requires a config file declaring the endpoints you wish to ping. The config format is hcl meaning you can either provide a human readable HCL config file or a JSON config file. An example HCL file looks like this:
interval = 10 # A global interval. Can be overwritten per target group prefix = "graphping" # A global prefix for statsd metrics # Declare a target group with a name target_group "search_engines" { # a custom ping interval for this group interval = 2 # A prefix for the statsd metric for this group prefix = "search" # A name for the target. This becomes the statsd metric target "google" { address = "www.google.co.uk" } target "bing" { address = "www.bing.com" } } # You can specify multiple target groups target_group "news_sites" { prefix = "uk" target "bbc" { address = "www.bbc.co.uk" } } You need to specify the address of the statsd listener you want to send metrics to. This is in string format, including port number.
For example:
graphping -c /path/to/config/file.hcl -s 127.0.0.1:8125 The project uses glide for dependencies. So:
Install it into your gopath and then run glide install
From here, you can build it:
go build main.go - I am still learning Go, so there may be some absolute nonsense in here. Pull requests are very welcome
- Thanks to my colleague @cspargo for his initial idea and the first prototype of the code
