Panmind Usage Tracker
What is it?
- A
Rack::Middleware
that sends selected parts of the request environment to an UDP socket - An
EventMachine
daemon that opens an UDP socket and sends out received data to a database
Does it work?
Yes, we are using it in production. If you can help in complete the test suite, it is much appreciated :-).
Deploying
-
Add the usage_tracker gem to your Gemfile and require the middleware
gem 'usage_tracker', :require => 'usage_tracker/middleware'
-
Configure the middleware and plug it into your application:
UsageTracker::Middleware.config(:host => '192.168.1.20', :port => '8840') Your::Application.config.middleware.use UsageTracker::Middleware
-
Install the gem on the target machine and run it with this command:
$ usage_tracker [environment]
If you run it into a Rails.root it will log and write pids in canonical dirs.
environment
is optional and will default to "development" if no command line option nor the RAILS_ENV environment variable are set.or can be put under Upstart using the provided configuration file located in
config/usage_tracker_upstart.conf
. Check it out and modify it to suit your needs.The daemon logs to
usage_tracker.log
if the log directory exists and rotates its logs when receives the USR1 signal. -
The daemon writes its pid into usage_tracker.pid
-
The daemon can be configured to work with couchdb or mongodb adapter. Look at the sample configuration file for hints.
-
If the daemon cannot start, e.g. because of unavailable database or listening address, it will print a diagnostig message to STDERR, log to usage_tracker.log and exit with status of 1.
-
The daemon exits gracefully if it receives the INT or the TERM signals.
Testing
Our will is to test the Evented code in isolation using rspec and em-rspec gem. Tests are still incomplete. You can start the running:
bundle exec rspec spec
All required gems for testing should be installed running:
bundle install
About the middleware, it's probably better for you to test that in your own app's integration test suite.