sebyx07 / stats-lite

Get system stats of your linux servers. CPU, RAM, HDD, extendable

Home Page:https://github.com/sebyx07/stats-lite

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

Get system stats of your linux servers. CPU, RAM, HDD, extendable

https://github.com/sebyx07/stats-lite

License:MIT License


Languages

Language:Ruby 99.2%Language:Shell 0.8%