pimon 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -8
- data/bin/pimon +9 -2
- data/config/default.yml +0 -2
- data/config/deploy.rb +1 -23
- data/lib/pimon.rb +1 -11
- data/lib/pimon/version.rb +1 -1
- data/spec/pimon_spec.rb +3 -15
- metadata +2 -3
- data/config/production.yml +0 -27
data/README.md
CHANGED
@@ -20,11 +20,10 @@ Optionally you may install it as a gem and run it, please check "Installing as a
|
|
20
20
|
## Configuration
|
21
21
|
Configuration is done through a YAML file, you may check some examples on the config directory.
|
22
22
|
|
23
|
-
1.
|
24
|
-
2.
|
25
|
-
3.
|
26
|
-
4.
|
27
|
-
5. stats_collector - configure number of stats and time period between them
|
23
|
+
1. redis - location of the redis socket
|
24
|
+
2. chart - colors for each chart
|
25
|
+
3. queues - redis list names for the series in the charts
|
26
|
+
4. stats_collector - configure number of stats and time period between them
|
28
27
|
|
29
28
|
## Installing as a gem
|
30
29
|
```
|
@@ -38,6 +37,7 @@ Options:
|
|
38
37
|
-c, --config CONFIG YAML configuration file for pimon
|
39
38
|
-d, --daemonize Run Pimon daemonized in the background
|
40
39
|
-e, --environment ENVIRONMENT Application environment (default: "development", options: "development", "production")
|
40
|
+
-i, --interface INTERFACE Hostname or IP address of the interface to listen on (default: "localhost")
|
41
41
|
-p, --port PORT Port to use (default: 3000)
|
42
42
|
-P, --pid PIDFILE File to store PID (default: /tmp/pimon.pid)
|
43
43
|
```
|
@@ -83,9 +83,8 @@ this feature will probably be discontinued in the future.
|
|
83
83
|
|
84
84
|
## TODO
|
85
85
|
1. Improve disk stats, have a way of having custom mount points
|
86
|
-
2.
|
87
|
-
3.
|
88
|
-
4. Change configuration in realtime
|
86
|
+
2. Show uptime
|
87
|
+
3. Change configuration in realtime
|
89
88
|
|
90
89
|
## Copyright
|
91
90
|
Licensed under the [WTFPL](http://en.wikipedia.org/wiki/WTFPL "Do What The Fuck You Want To Public License") license.
|
data/bin/pimon
CHANGED
@@ -26,6 +26,12 @@ Options:
|
|
26
26
|
options[:environment] = environment
|
27
27
|
end
|
28
28
|
|
29
|
+
opts.on('-i INTERFACE',
|
30
|
+
'--interface INTERFACE',
|
31
|
+
'Hostname or IP address of the interface to listen on (default: "localhost")') do |interface|
|
32
|
+
options[:interface] = interface
|
33
|
+
end
|
34
|
+
|
29
35
|
opts.on('-p PORT',
|
30
36
|
'--port PORT',
|
31
37
|
'Port to use (default: 3000)') do |port|
|
@@ -53,10 +59,11 @@ begin
|
|
53
59
|
when 'start'
|
54
60
|
require 'thin'
|
55
61
|
port = options[:port] || 3000
|
62
|
+
interface = options[:interface] || 'localhost'
|
56
63
|
options[:environment] ? ENV['RACK_ENV'] = options[:environment] : ENV['RACK_ENV'] = 'development'
|
57
64
|
config = "#{File.dirname(__FILE__)}/../config/config.ru"
|
58
65
|
ENV['PIMON_CONFIG'] = options[:pimon_config] if options[:pimon_config]
|
59
|
-
puts "Pimon is starting at http
|
66
|
+
puts "Pimon is starting at http://#{interface}:#{port}"
|
60
67
|
puts "Running in #{ENV['RACK_ENV']} mode."
|
61
68
|
|
62
69
|
if ENV['PIMON_CONFIG']
|
@@ -65,7 +72,7 @@ begin
|
|
65
72
|
puts "Using default configuration"
|
66
73
|
end
|
67
74
|
|
68
|
-
server = Rack::Server.new(:config => config, :daemonize => options[:daemonize], :pid => pid_file, :Port => port, :server => 'thin')
|
75
|
+
server = Rack::Server.new(:config => config, :daemonize => options[:daemonize], :pid => pid_file, :Port => port, :server => 'thin', :Host => interface)
|
69
76
|
server.start
|
70
77
|
when 'stop'
|
71
78
|
if File.file?(pid_file)
|
data/config/default.yml
CHANGED
data/config/deploy.rb
CHANGED
@@ -19,7 +19,7 @@ after 'deploy:update_code', 'deploy:bundle_install'
|
|
19
19
|
|
20
20
|
namespace :deploy do
|
21
21
|
task :start, :roles => [:web, :app] do
|
22
|
-
run "cd #{deploy_to}/current &&
|
22
|
+
run "cd #{deploy_to}/current && PIMON_CONFIG=#{deploy_to}/shared/production.yml nohup thin -C config/thin/config.yml -R config/config.ru start"
|
23
23
|
end
|
24
24
|
|
25
25
|
task :stop, :roles => [:web, :app] do
|
@@ -28,36 +28,14 @@ namespace :deploy do
|
|
28
28
|
|
29
29
|
task :restart, :roles => [:web, :app] do
|
30
30
|
deploy.stop
|
31
|
-
deploy.check_basic_auth
|
32
31
|
deploy.start
|
33
32
|
end
|
34
33
|
|
35
34
|
task :cold do
|
36
35
|
deploy.update
|
37
|
-
deploy.check_basic_auth
|
38
36
|
deploy.start
|
39
37
|
end
|
40
38
|
|
41
|
-
desc "After deploying check if there's need for a new username/password for the basic_auth"
|
42
|
-
task :check_basic_auth, :roles => :app do
|
43
|
-
require "yaml"
|
44
|
-
set :username, proc { Capistrano::CLI.ui.ask("username : ") }
|
45
|
-
set :password, proc { Capistrano::CLI.password_prompt("password : ") }
|
46
|
-
set :shared_config, "#{deploy_to}/shared/production.yml"
|
47
|
-
|
48
|
-
if 'true' == capture("if [ -e #{shared_config} ]; then echo 'true'; fi").strip
|
49
|
-
run "cp #{shared_config} #{deploy_to}/current/config/production.yml"
|
50
|
-
else
|
51
|
-
production_config = YAML::load_file('config/production.yml')
|
52
|
-
production_config['basic_auth']['username'] = username
|
53
|
-
production_config['basic_auth']['password'] = password
|
54
|
-
|
55
|
-
put YAML::dump(production_config), shared_config, :mode => 0664
|
56
|
-
run "cp #{shared_config} #{deploy_to}/current/config/production.yml"
|
57
|
-
puts "DONE"
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
39
|
desc "run 'bundle install' to install Bundler's packaged gems for the current deploy"
|
62
40
|
task :bundle_install, :roles => :app do
|
63
41
|
run "cd #{deploy_to}/current && bundle install --without test development"
|
data/lib/pimon.rb
CHANGED
@@ -16,15 +16,7 @@ class Pimon < Sinatra::Base
|
|
16
16
|
set :public_folder, "#{File.dirname(__FILE__)}/pimon/public"
|
17
17
|
set :views, "#{File.dirname(__FILE__)}/pimon/views"
|
18
18
|
set :sockets, []
|
19
|
-
|
20
|
-
def self.configure_basic_auth
|
21
|
-
if settings.config.is_basic_auth_enabled?
|
22
|
-
use Rack::Auth::Basic, "Restricted Area" do |username, password|
|
23
|
-
[username, password] == config.basic_auth
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
19
|
+
|
28
20
|
configure :development, :production do
|
29
21
|
require 'redis'
|
30
22
|
filename = "#{File.dirname(__FILE__)}/../config/default.yml"
|
@@ -43,7 +35,6 @@ class Pimon < Sinatra::Base
|
|
43
35
|
set :stats_checker, StatsCollector.new(config, Redis.new(:path => config.redis[:socket]))
|
44
36
|
set :timer, nil
|
45
37
|
|
46
|
-
self.configure_basic_auth
|
47
38
|
end
|
48
39
|
|
49
40
|
configure :test do
|
@@ -55,7 +46,6 @@ class Pimon < Sinatra::Base
|
|
55
46
|
set :stats_checker, StatsCollector.new(config, MockRedis.new)
|
56
47
|
set :timer, nil
|
57
48
|
|
58
|
-
self.configure_basic_auth
|
59
49
|
end
|
60
50
|
|
61
51
|
get '/' do
|
data/lib/pimon/version.rb
CHANGED
data/spec/pimon_spec.rb
CHANGED
@@ -15,21 +15,9 @@ RSpec.configure do |config|
|
|
15
15
|
end
|
16
16
|
|
17
17
|
describe "Pimon" do
|
18
|
-
|
18
|
+
it "should be success" do
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
expect(last_response.status).to eq(401)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context "when authenticated" do
|
27
|
-
before { authorize 'pimon', 'pimon' }
|
28
|
-
|
29
|
-
it "should be success" do
|
30
|
-
|
31
|
-
get '/'
|
32
|
-
expect(last_response).to be_ok
|
33
|
-
end
|
20
|
+
get '/'
|
21
|
+
expect(last_response).to be_ok
|
34
22
|
end
|
35
23
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pimon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: haml
|
@@ -216,7 +216,6 @@ files:
|
|
216
216
|
- config/config_dev.ru
|
217
217
|
- config/default.yml
|
218
218
|
- config/deploy.rb
|
219
|
-
- config/production.yml
|
220
219
|
- config/test.yml
|
221
220
|
- config/test_broken.yml
|
222
221
|
- config/thin/config.yml
|
data/config/production.yml
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
basic_auth:
|
2
|
-
enabled: true
|
3
|
-
username: changed_on_deploy
|
4
|
-
password: changed_on_deploy
|
5
|
-
redis:
|
6
|
-
socket: /tmp/redis.sock
|
7
|
-
chart:
|
8
|
-
cpu:
|
9
|
-
color: '#D2691E'
|
10
|
-
disk:
|
11
|
-
color: '#CDC673'
|
12
|
-
mem:
|
13
|
-
color: '#87CEFA'
|
14
|
-
temp:
|
15
|
-
color: '#FF9B04'
|
16
|
-
swap:
|
17
|
-
color: '#3CB371'
|
18
|
-
queues:
|
19
|
-
time: pimon_time
|
20
|
-
cpu: pimon_cpu
|
21
|
-
disk: pimon_disk
|
22
|
-
mem: pimon_mem
|
23
|
-
swap: pimon_swap
|
24
|
-
temp: pimon_temp
|
25
|
-
stats_collector:
|
26
|
-
number_of_stats: 12
|
27
|
-
time_period_in_min: 5
|