Starting with goiardi v0.10.4, goiardi can export metrics about itself via statsd. In turn, statsd can feed these metrics into a time series database like graphite. Once in graphite, one could visualize the data with something like grafana, or set up alerts with that data in bosun.

At this time, goiardi exports via statsd metrics covering the runtime (memory usage, garbage collection, goroutines), API timing, information about chef-client runs, the number of nodes, and search timing.

The available metrics via statsd currently are:

  • node.count - number of nodes currently in the system
  • runtime.goroutines - number of goroutines running
  • runtime.memory.allocated - allocated memory in bytes
  • runtime.memory.mallocs - number of mallocs
  • runtime.memory.frees - number of times memory’s been freed
  • runtime.memory.heap - size of heap memory in bytes
  • runtime.memory.stack - size of stack memory in bytes
  • runtime.gc.total_pause - how many nanoseconds goiardi has paused for garbage collection the whole time the process has been running.
  • runtime.gc.pause_per_sec - pauses per second
  • runtime.gc.pause_per_tick - pauses per interval sending metrics to statsd (currently 10 seconds)
  • runtime.gc.num_gc - number of garbage collections
  • runtime.gc.gc_per_sec - gc per second
  • runtime.gc.gc_per_tick - gc per statsd tick (as above, every 10 secodns)
  • runtime.gc.pause - timing of how long each gc pause lasts
  • api.timing.%s.%s, where “%s.%s” is the first part of the api endpoint path and the HTTP method (so, for example, a PUT to cookbooks would be api.timing.cookbooks.put) - timing of API endpoint requests
  • - Count of started chef-client runs
  • - Count of successful chef-client runs
  • - Count of failed chef-client runs
  • - Timing of how long
  • - Total resources in a run
  • - Total updated resources in a run
  • search.in_mem - timing of in-memory searches
  • - timing of Postgres-based searches