pimon 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,7 +2,6 @@ source :rubygems
2
2
 
3
3
  gem 'capistrano'
4
4
  gem 'haml'
5
- gem 'redis'
6
5
  gem 'sinatra', :require => 'sinatra/base'
7
6
  gem 'sinatra-websocket', '~> 0.2.0'
8
7
  gem 'thin', '~> 1.5.0'
@@ -10,7 +9,6 @@ gem 'thin', '~> 1.5.0'
10
9
  gem 'pry', :group => [:development, :test]
11
10
 
12
11
  group :test do
13
- gem 'mock_redis', '~> 0.5.0'
14
12
  gem 'rack-test'
15
13
  gem 'rspec', '~> 2.11.0'
16
14
  gem 'simplecov', :require => false
data/Gemfile.lock CHANGED
@@ -19,7 +19,6 @@ GEM
19
19
  highline (1.6.15)
20
20
  jruby-pageant (1.1.1)
21
21
  method_source (0.8)
22
- mock_redis (0.5.2)
23
22
  multi_json (1.3.6)
24
23
  net-scp (1.0.4)
25
24
  net-ssh (>= 1.99.1)
@@ -38,7 +37,6 @@ GEM
38
37
  rack
39
38
  rack-test (0.6.2)
40
39
  rack (>= 1.0)
41
- redis (3.0.2)
42
40
  rspec (2.11.0)
43
41
  rspec-core (~> 2.11.0)
44
42
  rspec-expectations (~> 2.11.0)
@@ -75,10 +73,8 @@ PLATFORMS
75
73
  DEPENDENCIES
76
74
  capistrano
77
75
  haml
78
- mock_redis (~> 0.5.0)
79
76
  pry
80
77
  rack-test
81
- redis
82
78
  rspec (~> 2.11.0)
83
79
  simplecov
84
80
  simplecov-rcov
data/README.md CHANGED
@@ -6,23 +6,18 @@
6
6
 
7
7
  ## Description
8
8
  Pimon is a simple server monitor designed for the Raspberry Pi.
9
- It uses redis lists to keep the latest observed statistics and also uses
10
- highcharts to display some nice charts on your web browser.
11
9
 
12
10
  ## What do I need to get it to work?
13
11
  1. Clone this repo: git clone git://github.com/pedrocarrico/pimon.git
14
- 2. Install redis an configure it to run on a socket on /tmp/redis.sock
15
- 3. bundle
16
- 4. bin/pimon start # run the sinatra app
17
- 5. go to http://localhost:3000 and PROFIT!
12
+ 2. bundle
13
+ 3. bin/pimon start # run the sinatra app
14
+ 4. go to http://localhost:3000 and PROFIT!
18
15
  Optionally you may install it as a gem and run it, please check "Installing as a gem" further down.
19
16
 
20
17
  ## Configuration
21
18
  Configuration is done through a YAML file, you may check some examples on the config directory.
22
19
 
23
- 1. redis - location of the redis socket
24
20
  2. chart - colors for each chart
25
- 3. queues - redis list names for the series in the charts
26
21
  4. stats_collector - configure number of stats and time period between them
27
22
 
28
23
  ## Installing as a gem
data/config/default.yml CHANGED
@@ -1,5 +1,3 @@
1
- redis:
2
- socket: /tmp/redis.sock
3
1
  chart:
4
2
  cpu:
5
3
  color: '#D2691E'
@@ -11,13 +9,6 @@ chart:
11
9
  color: '#FF9B04'
12
10
  swap:
13
11
  color: '#3CB371'
14
- queues:
15
- time: pimon_time
16
- cpu: pimon_cpu
17
- disk: pimon_disk
18
- mem: pimon_mem
19
- swap: pimon_swap
20
- temp: pimon_temp
21
12
  stats_collector:
22
13
  number_of_stats: 6
23
- time_period_in_min: 1
14
+ time_period_in_secs: 30
data/config/test.yml CHANGED
@@ -2,8 +2,6 @@ basic_auth:
2
2
  enabled: true
3
3
  username: pimon
4
4
  password: pimon
5
- redis:
6
- socket: /thou/shalt/not/use/redis/on/test/environment
7
5
  chart:
8
6
  cpu:
9
7
  color: '#D2691E'
@@ -1,7 +1,3 @@
1
- basic_auth:
2
- enabled: true
3
- redis:
4
- socket: /thou/shalt/not/use/redis/on/test/environment
5
1
  chart:
6
2
  cpu:
7
3
  color: '#D2691E'
@@ -11,12 +7,6 @@ chart:
11
7
  color: '#87CEFA'
12
8
  swap:
13
9
  color: '#3CB371'
14
- queues:
15
- time: pimon_time
16
- cpu: pimon_cpu
17
- disk: pimon_disk
18
- mem: pimon_mem
19
- swap: pimon_swap
20
10
  stats_collector:
21
11
  number_of_stats: 6
22
12
  time_period_in_min: 10
data/lib/pimon.rb CHANGED
@@ -18,12 +18,11 @@ class Pimon < Sinatra::Base
18
18
  set :sockets, []
19
19
 
20
20
  configure :development, :production do
21
- require 'redis'
22
21
  filename = "#{File.dirname(__FILE__)}/../config/default.yml"
23
22
  config = PimonConfig.create_new(ENV['PIMON_CONFIG'] || filename)
24
23
 
25
24
  EventMachine::next_tick do
26
- settings.timer = EventMachine::add_periodic_timer(config.stats[:time_period_in_min] * 60) do
25
+ settings.timer = EventMachine::add_periodic_timer(config.stats[:time_period_in_secs]) do
27
26
  settings.stats_checker.collect_stats
28
27
  @stats = settings.stats_checker.show_stats
29
28
 
@@ -32,20 +31,20 @@ class Pimon < Sinatra::Base
32
31
  end
33
32
 
34
33
  set :config, config
35
- set :stats_checker, StatsCollector.new(config, Redis.new(:path => config.redis[:socket]))
34
+ set :stats_checker, StatsCollector.new(config)
36
35
  set :timer, nil
37
36
 
37
+ settings.stats_checker.collect_stats
38
+ @stats = settings.stats_checker.show_stats
38
39
  end
39
40
 
40
41
  configure :test do
41
- require 'mock_redis'
42
42
 
43
43
  config = PimonConfig.create_new("#{File.dirname(__FILE__)}/../config/test.yml")
44
44
 
45
45
  set :config, config
46
- set :stats_checker, StatsCollector.new(config, MockRedis.new)
46
+ set :stats_checker, StatsCollector.new(config)
47
47
  set :timer, nil
48
-
49
48
  end
50
49
 
51
50
  get '/' do
@@ -3,45 +3,17 @@ require 'yaml'
3
3
 
4
4
  class PimonConfig
5
5
  def self.create_new(filename)
6
- config = self.new(filename)
7
-
8
- return config if config.valid?
9
- end
10
-
11
- def basic_auth
12
- if is_basic_auth_enabled? && has_authentication_details?
13
- [@config[:basic_auth][:username], @config[:basic_auth][:password]]
14
- else
15
- nil
16
- end
6
+ return self.new(filename)
17
7
  end
18
8
 
19
9
  def chart
20
10
  @config[:chart]
21
11
  end
22
12
 
23
- def is_basic_auth_enabled?
24
- @config[:basic_auth][:enabled]
25
- end
26
-
27
- def queues
28
- @config[:queues]
29
- end
30
-
31
- def redis
32
- @config[:redis]
33
- end
34
-
35
13
  def stats
36
14
  @config[:stats_collector]
37
15
  end
38
16
 
39
- def valid?
40
- raise "Basic auth enabled with no authentication details" if is_basic_auth_enabled? && !has_authentication_details?
41
- raise "Redis has no socket details" unless has_redis_details?
42
- true
43
- end
44
-
45
17
  private
46
18
 
47
19
  def initialize(filename)
@@ -53,17 +25,4 @@ class PimonConfig
53
25
  raise e
54
26
  end
55
27
  end
56
-
57
- def has_authentication_details?
58
- @config[:basic_auth].has_key?(:username) && @config[:basic_auth].has_key?(:password)
59
- end
60
-
61
- def has_redis_details?
62
- # Thou shalt not use a live redis in test environment
63
- is_test_environment? || (@config.has_key?(:redis) && @config[:redis].has_key?(:socket))
64
- end
65
-
66
- def is_test_environment?
67
- @config[:environment] == 'test'
68
- end
69
28
  end
@@ -0,0 +1,11 @@
1
+ require 'pimon/probe/probe'
2
+
3
+ class Probe::TimeCheck < Probe
4
+ def self.check
5
+ Time.now.strftime("%Y-%m-%d %H:%M:%S")
6
+ end
7
+
8
+ def self.symbol
9
+ :time
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ class Stats
2
+
3
+ def initialize(queues)
4
+ @stats = {}
5
+ queues.each do |queue|
6
+ @stats[queue] = []
7
+ end
8
+ end
9
+
10
+ def index(queue, index)
11
+ @stats[queue][index]
12
+ end
13
+
14
+ def push(queue, value)
15
+ @stats[queue].push(value)
16
+ end
17
+
18
+ def shift(queue)
19
+ @stats[queue].shift
20
+ end
21
+
22
+ def range(queue)
23
+ @stats[queue]
24
+ end
25
+ end
@@ -4,45 +4,52 @@ require 'pimon/probe/cpu_usage'
4
4
  require 'pimon/probe/disk_usage'
5
5
  require 'pimon/probe/memory_usage'
6
6
  require 'pimon/probe/swap_usage'
7
+ require 'pimon/probe/time_check'
7
8
  require 'pimon/probe/temperature'
9
+ require 'pimon/stats'
8
10
 
9
11
  class StatsCollector
10
- def initialize(config, redis)
12
+ def initialize(config)
11
13
  @config = config
12
- @redis = redis
13
- @probes = [Probe::CpuUsage, Probe::MemoryUsage, Probe::SwapUsage, Probe::DiskUsage, Probe::Temperature]
14
+ @probes = [
15
+ Probe::TimeCheck,
16
+ Probe::CpuUsage,
17
+ Probe::MemoryUsage,
18
+ Probe::SwapUsage,
19
+ Probe::DiskUsage,
20
+ Probe::Temperature
21
+ ]
22
+ @stats = Stats.new(@probes.map(&:symbol).concat([:time]))
14
23
  end
15
24
 
16
25
  def collect_stats
17
26
  pop_old_stats
18
27
 
19
- @redis.rpush(@config.queues[:time], Time.now.strftime("%Y-%m-%d %H:%M:%S"))
20
28
  @probes.each do |probe|
21
- @redis.rpush(@config.queues[probe.symbol], probe.check)
29
+ @stats.push(probe.symbol, probe.check)
22
30
  end
23
31
  end
24
32
 
25
33
  def last_update
26
- time = @redis.lindex(@config.queues[:time], @config.stats[:number_of_stats] - 1)
34
+ time = @stats.index(:time, @config.stats[:number_of_stats] - 1)
27
35
 
28
36
  DateTime.parse(time) if time
29
37
  end
30
38
 
31
39
  def show_stats
32
- time = @redis.lrange(@config.queues[:time], 0, -1)
40
+ time = @stats.range(:time)
33
41
 
34
42
  stats = {
35
- :time => { :stats => time.map { |t| (/\d\d:\d\d:\d\d/.match(t))[0] } },
36
- :refresh_interval_in_millis => @config.stats[:time_period_in_min] * 60 * 1000
43
+ :time => { :stats => time.map { |t| (/\d\d:\d\d:\d\d/.match(t))[0] } }
37
44
  }
38
45
 
39
46
  @probes.each do |probe|
40
47
  stats[probe.symbol] =
41
48
  {
42
- :stats => @redis.lrange(@config.queues[probe.symbol], 0, -1).map(&:to_i),
49
+ :stats => @stats.range(probe.symbol).map(&:to_i),
43
50
  :color => @config.chart[probe.symbol][:color],
44
51
  :unit => probe.unit
45
- }
52
+ } unless probe.symbol == :time
46
53
  end
47
54
 
48
55
  stats.to_json
@@ -51,12 +58,11 @@ class StatsCollector
51
58
  private
52
59
 
53
60
  def pop_all_queues
54
- @redis.lpop(@config.queues[:time])
55
- @probes.each { |probe| @redis.lpop(@config.queues[probe.symbol]) }
61
+ @probes.each { |probe| @stats.shift(probe.symbol) }
56
62
  end
57
63
 
58
64
  def pop_old_stats
59
- queue_size = @redis.llen(@config.queues[:time])
65
+ queue_size = @stats.range(:time).length
60
66
 
61
67
  if queue_size >= @config.stats[:number_of_stats]
62
68
  (queue_size - @config.stats[:number_of_stats] + 1).times { pop_all_queues }
data/lib/pimon/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pimon
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.5'
3
3
  end
data/pimon.gemspec CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |s|
10
10
  s.email = [ 'pedro.carrico@gmail.com' ]
11
11
  s.homepage = 'http://pimon.pedrocarrico.net/'
12
12
  s.summary = 'Pimon - Raspberry Pi server monitor'
13
- s.description = 'Pimon is a simple server monitor designed for the Raspberry Pi. It uses redis lists to keep the latest observed statistics and also uses highcharts to display some nice charts on your web browser.'
14
- s.post_install_message = 'Before running Pimon be sure to have a redis instance up and running and listening on /tmp/redis.sock'
13
+ s.description = 'Pimon is a simple server monitor designed for the Raspberry Pi.'
14
+ s.post_install_message = 'Thank you for using Pimon :-)'
15
15
 
16
16
  s.required_ruby_version = '>= 1.9'
17
17
 
@@ -21,14 +21,11 @@ Gem::Specification.new do |s|
21
21
  s.require_paths = ['lib']
22
22
 
23
23
  s.add_runtime_dependency 'haml', '~> 3.1.7'
24
- s.add_runtime_dependency 'redis', '~> 3.0.1'
25
24
  s.add_runtime_dependency 'sinatra', '~> 1.3.2'
26
25
  s.add_runtime_dependency 'sinatra-websocket', '~> 0.2.0'
27
26
  s.add_runtime_dependency 'thin', '~> 1.5.0'
28
27
 
29
28
  s.add_development_dependency 'rack-test', '~> 0'
30
- s.add_development_dependency 'mock_redis', '~> 0.5.0'
31
- s.add_development_dependency 'rspec', '~> 2.11.0'
32
29
  s.add_development_dependency 'simplecov'
33
30
  s.add_development_dependency 'simplecov-rcov'
34
31
  s.add_development_dependency 'timecop'
@@ -4,13 +4,8 @@ describe 'PimonConfig' do
4
4
  context 'when created for the test environment' do
5
5
  subject { PimonConfig.create_new("#{File.dirname(__FILE__)}/../config/test.yml") }
6
6
 
7
- its(:basic_auth) { should == ['pimon', 'pimon'] }
8
7
  its(:chart) { should == { :cpu => { :color => '#D2691E' }, :disk => { :color => '#CDC673' }, :mem => { :color => '#87CEFA' }, :temp => {:color=>"#FF9B04"}, :swap => { :color => '#3CB371' } } }
9
- its(:is_basic_auth_enabled?) { should be_true }
10
- its(:queues) { should == { :time => 'pimon_time', :cpu => 'pimon_cpu', :disk => 'pimon_disk', :mem => 'pimon_mem', :temp => 'pimon_temp', :swap => 'pimon_swap' } }
11
- its(:redis) { should == { :socket => '/thou/shalt/not/use/redis/on/test/environment' } }
12
8
  its(:stats) { should == { :number_of_stats => 6, :time_period_in_min => 10 } }
13
- its(:valid?) { should be_true }
14
9
  end
15
10
 
16
11
  context 'when created with an invalid environment' do
@@ -18,10 +13,4 @@ describe 'PimonConfig' do
18
13
  expect{ PimonConfig.create_new('invalid') }.to raise_error(Errno::ENOENT)
19
14
  end
20
15
  end
21
-
22
- context 'when created with a broken environment configuration with basic_auth enabled but no username/password' do
23
- it 'should raise an error' do
24
- expect{ PimonConfig.create_new("#{File.dirname(__FILE__)}/../config/test_broken.yml") }.to raise_error(RuntimeError)
25
- end
26
- end
27
16
  end
@@ -4,9 +4,9 @@ require 'spec_helper'
4
4
  require 'json'
5
5
 
6
6
  describe 'StatsCollector' do
7
- context 'when new with a valid config and redis' do
7
+ context 'when new with a valid config' do
8
8
  before do
9
- @stats_collector = StatsCollector.new(PimonConfig.create_new("#{File.dirname(__FILE__)}/../config/test.yml"), MockRedis.new)
9
+ @stats_collector = StatsCollector.new(PimonConfig.create_new("#{File.dirname(__FILE__)}/../config/test.yml"))
10
10
  end
11
11
  subject { @stats_collector }
12
12
 
@@ -22,14 +22,13 @@ describe 'StatsCollector' do
22
22
 
23
23
  its(:show_stats) {
24
24
  should == {
25
- :time => { :stats => [] },
26
- :refresh_interval_in_millis => 600000,
27
- :cpu => { :stats => [], :color => '#D2691E', :unit => '%' },
28
- :mem => { :stats => [], :color => '#87CEFA', :unit => '%' },
29
- :swap => {:stats => [], :color => '#3CB371', :unit => '%' },
30
- :disk => {:stats => [], :color => '#CDC673', :unit => '%' },
31
- :temp => {:stats => [], :color => '#FF9B04', :unit => 'ºC' }
32
- }.to_json
25
+ :time => { :stats => [] },
26
+ :cpu => { :stats => [], :color => '#D2691E', :unit => '%' },
27
+ :mem => { :stats => [], :color => '#87CEFA', :unit => '%' },
28
+ :swap => {:stats => [], :color => '#3CB371', :unit => '%' },
29
+ :disk => {:stats => [], :color => '#CDC673', :unit => '%' },
30
+ :temp => {:stats => [], :color => '#FF9B04', :unit => 'ºC' }
31
+ }.to_json
33
32
  }
34
33
 
35
34
  context 'when collected some stats' do
@@ -49,13 +48,13 @@ describe 'StatsCollector' do
49
48
 
50
49
  its(:show_stats) {
51
50
  should == {
52
- :time => { :stats => ['12:00:00', '12:00:00', '12:00:00', '12:00:00', '12:00:00', '12:00:00']},
53
- :refresh_interval_in_millis => 600000, :cpu => {:stats => [50, 50, 50, 50, 50, 50], :color => '#D2691E', :unit => '%'},
54
- :mem => { :stats => [78, 78, 78, 78, 78, 78], :color =>'#87CEFA', :unit => '%'},
55
- :swap=>{ :stats => [50, 50, 50, 50, 50, 50], :color => '#3CB371', :unit => '%'},
56
- :disk=>{ :stats => [25, 25, 25, 25, 25, 25], :color => '#CDC673', :unit => '%'},
57
- :temp=>{ :stats => [40, 40, 40, 40, 40, 40], :color => '#FF9B04', :unit => 'ºC'}
58
- }.to_json
51
+ :time => { :stats => ['12:00:00', '12:00:00', '12:00:00', '12:00:00', '12:00:00', '12:00:00']},
52
+ :cpu => {:stats => [50, 50, 50, 50, 50, 50], :color => '#D2691E', :unit => '%'},
53
+ :mem => { :stats => [78, 78, 78, 78, 78, 78], :color =>'#87CEFA', :unit => '%'},
54
+ :swap=>{ :stats => [50, 50, 50, 50, 50, 50], :color => '#3CB371', :unit => '%'},
55
+ :disk=>{ :stats => [25, 25, 25, 25, 25, 25], :color => '#CDC673', :unit => '%'},
56
+ :temp=>{ :stats => [40, 40, 40, 40, 40, 40], :color => '#FF9B04', :unit => 'ºC'}
57
+ }.to_json
59
58
  }
60
59
  end
61
60
  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
4
+ version: 0.1.5
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-14 00:00:00.000000000 Z
12
+ date: 2012-10-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: haml
@@ -27,22 +27,6 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: 3.1.7
30
- - !ruby/object:Gem::Dependency
31
- name: redis
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: 3.0.1
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 3.0.1
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: sinatra
48
32
  requirement: !ruby/object:Gem::Requirement
@@ -107,38 +91,6 @@ dependencies:
107
91
  - - ~>
108
92
  - !ruby/object:Gem::Version
109
93
  version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: mock_redis
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ~>
116
- - !ruby/object:Gem::Version
117
- version: 0.5.0
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ~>
124
- - !ruby/object:Gem::Version
125
- version: 0.5.0
126
- - !ruby/object:Gem::Dependency
127
- name: rspec
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ~>
132
- - !ruby/object:Gem::Version
133
- version: 2.11.0
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: 2.11.0
142
94
  - !ruby/object:Gem::Dependency
143
95
  name: simplecov
144
96
  requirement: !ruby/object:Gem::Requirement
@@ -187,9 +139,7 @@ dependencies:
187
139
  - - ! '>='
188
140
  - !ruby/object:Gem::Version
189
141
  version: '0'
190
- description: Pimon is a simple server monitor designed for the Raspberry Pi. It uses
191
- redis lists to keep the latest observed statistics and also uses highcharts to display
192
- some nice charts on your web browser.
142
+ description: Pimon is a simple server monitor designed for the Raspberry Pi.
193
143
  email:
194
144
  - pedro.carrico@gmail.com
195
145
  executables:
@@ -205,7 +155,6 @@ files:
205
155
  - README.md
206
156
  - Rakefile
207
157
  - WTFPL-LICENSE
208
- - bin/clean_redis_stats
209
158
  - bin/free.c
210
159
  - bin/makefile
211
160
  - bin/pimon
@@ -229,8 +178,10 @@ files:
229
178
  - lib/pimon/probe/swap_usage.rb
230
179
  - lib/pimon/probe/system_memory.rb
231
180
  - lib/pimon/probe/temperature.rb
181
+ - lib/pimon/probe/time_check.rb
232
182
  - lib/pimon/public/favicon.ico
233
183
  - lib/pimon/public/index.js
184
+ - lib/pimon/stats.rb
234
185
  - lib/pimon/stats_collector.rb
235
186
  - lib/pimon/version.rb
236
187
  - lib/pimon/views/index.haml
@@ -241,8 +192,7 @@ files:
241
192
  - spec/stats_collector_spec.rb
242
193
  homepage: http://pimon.pedrocarrico.net/
243
194
  licenses: []
244
- post_install_message: Before running Pimon be sure to have a redis instance up and
245
- running and listening on /tmp/redis.sock
195
+ post_install_message: Thank you for using Pimon :-)
246
196
  rdoc_options: []
247
197
  require_paths:
248
198
  - lib
@@ -1 +0,0 @@
1
- /Users/pecarrico/opt/redis/src/redis-cli -s /tmp/redis.sock del pimon_mem del pimon_swap del pimon_cpu del pimon_time del pimon_disk pimon_temp