Project

stats_lite

0.0
No release in over 3 years
Low commit activity in last 3 years
Get system information for linux hosts. Standalone or rails engine. Rufus scheduler included
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.1.4
~> 13.0.1
~> 3.9.0

Runtime

>= 3.0.0, < 5.0.0
>= 2.0.0, < 3.0.0
>= 2.0.0, < 3.0.0
 Project Readme

StatsLite

Simple way to get server information as json. Easy to extend with a config.rb file. Embeddable in Rails

Standalone usage

Requirements ruby, min version 2

sudo apt-get install -y ruby build-essential ruby-dev

Usage standalone, you might need to run some commands as sudo.

gem install stats_lite --no-ri --no-rdoc
stats-lite
curl http://localhost:9111

Add to startup, crontab

crontab -e
# then add
@reboot /usr/local/bin/stats-lite /home/deploy/.stats-lite/config.rb

demo

create a config.rb then stats-lite

# example config.rb
# basic usage

StatsLite.configure do |s|
  s.password "1234" # password protection
  s.port 9111 # listening port
end
# now it's protected by passowrd
curl http://localhost:9111?password=1234 

Rails usage

gem "stats_lite"

# routes.rb
mount StatsLite::App => "/server-stats" 

Advanced configuration

StatsLite.configure do |s, h|
  s.password ENV["STATS_LITE_PASS"] # defaults to nil, unprotected
  s.port ENV["STATS_LITE_PORT"] # defaults to 9111

  s.data -> (data) do # add more data
    data[:ruby_current_time] = Time.now # simple value
    data[:linux_time] = h.command("date") # bash command, supports {cache: true, expires_in: 60} 

    data[:slow_command] = h.fetch :slow_command, -> {
      sleep 1
      "slow command"
    }, expires_in: 5 # cached ruby value
  end

  s.app do |sinatra| # extend the app, add multiple routes, which are protected by the password
    sinatra.get("/another_route") do
      content_type :json

      { cpus: h.command("nproc", { cache: true }) }.to_json
    end
  end


  s.rack do   # use rack builder, it's also password protected from above^
    map "/rack" do
      run lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['OK']] }
    end
  end

  s.cron do |rufus| # uses the Rufus scheduler, more details here https://github.com/jmettraux/rufus-scheduler
    rufus.every "5s" do
      print "\n cron job"
    end
    rufus.every "1h" do
      print "\n hourly cron job"
    end
  end
end