System resource and profile information emission. A simple method of exposing system resources statistics through standard interfaces. Current interfaces are stdout, JSON over HTTP, and as a client to Mozilla Hekad.
You can utilize the scripts/build.sh to generate a binary assuming Go is installed.
Manual build & installation steps:
- Install Go v1.1+
- Install Git
- Install Mercurial (Needed to download the UUID package from Google)
- git clone https://github.com/bellycard/procd.git
- go get github.com/bellycard/toml
- go get code.google.com/p/go-uuid/uuid
- go get github.com/mozilla-services/heka/client
- go get github.com/mozilla-services/heka/message
- go build
- ./procd -config=procd.toml
Configuartion of Procd is based on a specified TOML configuration file. Defined outputs will have metrics and profile information emitted if specified.
This configuration will emit metric information in JSON format to STDOUT, localhost:5596, and to a local Hekad agent.
ticker_interval = 5 # Time (seconds) to poll resources and collect metrics
[output.stdout]
[output.http]
bind_address = "0.0.0.0:5596"
[output.heka]
server = "127.0.0.1:5565"
encoder = "protobuf"
sender = "tcp"
payload = false
hostname = "super.coolhost.com" # Optional. Overwrites os.Hostname() for Heka messages.
To view all resources: GET http://hostname:5596/v1/resources.json
To view CPU resources: GET http://hostname:5596/v1/resources/cpu.json
To view memory resources: GET http://hostname:5596/v1/resources/memory.json
To view disk resources: GET http://hostname:5596/v1/resources/disk.json
To ensure the application is operational: GET http://hostname:5596/ping
To view benchmark information: go test -bench=".*"
- Statsd output
- Currently only Linux /proc stats are collected. Profile information will be next.
- Only the Linux platform is supported. Other platforms, Darwin notibly, will be included.
Versioning adheres to Semantic Versioning 2.0.0.
Christian Vozar
Credit given to Mozilla's PushGo for Heka client code for which the Heka code is heavily based.
Copyright 2013 Belly, Inc. under the Apache 2.0 license.