mil-rack_apm 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f58da6bf14587d6dcfa3a18f0c3f96e3ebf40ca0
4
- data.tar.gz: 7915d2d7fcaf143d37427a56d3180f70175aa2c0
3
+ metadata.gz: d1be2a80e1a87635650acee6937618c72f44aa23
4
+ data.tar.gz: 03e321c9c0769718e168be3a618e8233ca97903c
5
5
  SHA512:
6
- metadata.gz: 450a34d3949d00b579dc7f0e282a295bfda3c60e8c814bda7cb94dc72d0eb6548b99cb4d1b70320e500b98b6c5138fa2e17f9ad5c0afa92f6f9cbc5f142c8514
7
- data.tar.gz: fb75af9695aa76798403147142aa4890dc902b3896950a06124ae927807cef926956f4339f4c567174fb1ce8502816eed3adabbe4aa46e2edbf43c00ee127e4b
6
+ metadata.gz: d687477d7702f8bfe3ecf1490595912cd126166c63ea71c5954ade0c5d65e85073b8475d3526afdb84f0891648a52f26482e8e801cf86c792a86f1d75e6fc25e
7
+ data.tar.gz: 0fc3ca9ccd0c03ee7386bbec603d91c5cba65c1009607d2d75716665e33c10ab148a8ab8de443b3e66f3c5c6e4506a56d87a23f46fdb79127f58a6862088c214
@@ -2,22 +2,30 @@ module Mil
2
2
  module RackApm
3
3
  class Data
4
4
 
5
- def initialize(app)
5
+
6
+ def initialize(app, skip_path = [])
6
7
  @app = app
8
+ skip_path = [skip_path] if skip_path.class == String
9
+ @skip_path = skip_path
7
10
  end
8
11
 
9
12
  def call(env)
10
13
  start_time = time_now
11
14
  status, header, body = @app.call(env)
12
- request_time = (time_now - start_time) * 1000
13
- unless env['REQUEST_PATH'] =~ /.*?\.(png|css|jpg|js|ico|jpeg|gif|bmp)$/
14
- q_path = path_split_to env['REQUEST_PATH']
15
- i = "mili-#{env['REQUEST_METHOD']}-#{q_path}"
16
- t = "milt-#{env['REQUEST_METHOD']}-#{q_path}"
17
- redis.incr i
18
- redis.incrbyfloat t, ('%0.3f' % request_time)
15
+ begin
16
+ request_time = (time_now - start_time) * 1000
17
+ return status, header, body if skip_path? env['REQUEST_PATH']
18
+ unless env['REQUEST_PATH'] =~ /.*?\.(png|css|jpg|js|ico|jpeg|gif|bmp)$/
19
+ q_path = path_split_to env['REQUEST_PATH']
20
+ i = "mili-#{env['REQUEST_METHOD']}-#{q_path}"
21
+ t = "milt-#{env['REQUEST_METHOD']}-#{q_path}"
22
+ redis.incr i
23
+ redis.incrbyfloat t, ('%0.3f' % request_time)
24
+ end
25
+ [status, header, body]
26
+ rescue => e
27
+ [status, header, body]
19
28
  end
20
- [status, header, body]
21
29
  end
22
30
 
23
31
  def redis
@@ -44,6 +52,14 @@ module Mil
44
52
  end
45
53
  end
46
54
 
55
+ def skip_path?(path)
56
+ return false if @skip_path.empty?
57
+ @skip_path.each do |p|
58
+ return true if path =~ /^#{p}.*/
59
+ end
60
+ false
61
+ end
62
+
47
63
  def path_split_to(path)
48
64
  m = path.split '/'
49
65
  m.map! do |t|
@@ -31,6 +31,25 @@ $(document).ready(function(){
31
31
  }
32
32
  });
33
33
 
34
+ $('.delete_key').click(function(){
35
+ if(confirm("Are you delete the key?")){
36
+ var url = window.location.href.split('?')[0];
37
+ var obj = $(this);
38
+ $.ajax({
39
+ method: "DELETE",
40
+ url: url +"/delete_key",
41
+ data: { key: obj.attr('key') },
42
+ success: function(message){
43
+ if('ok' == message){
44
+ obj.parents('tr').remove();
45
+ }else{
46
+ alert('delete error!');
47
+ }
48
+ }
49
+ })
50
+ }
51
+ })
52
+
34
53
  })
35
54
 
36
55
  var update_data = function(){
@@ -1,5 +1,5 @@
1
1
  module Mil
2
2
  module RackApm
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -46,14 +46,17 @@
46
46
  <div class="col-md-offset-1 col-md-10 table-responsive">
47
47
  <table class="table table-hover" id="table_data">
48
48
  <tr class="active no_data" >
49
- <th>REQUEST METHOD</th><th>PATH</th><th>COUNT</th><th>Mean Time</th>
49
+ <th>REQUEST METHOD</th><th>PATH</th><th>COUNT</th><th>Mean Time</th><th>Action</th>
50
50
  </tr>
51
51
  <% @data.each do |data| %>
52
52
  <tr class="<%= tr_css data[:request_method] %>">
53
- <th class="request_method"><%= data[:request_method] %></th>
54
- <th class="path"><%= data[:path].nil? ? '/' : data[:path] %></th>
55
- <th class="count"><%= data[:count] %></th>
56
- <th class="times"><%= '%0.3f' % (data[:times].to_f / data[:count].to_f) %>ms</th>
53
+ <td class="request_method"><%= data[:request_method] %></td>
54
+ <td class="path"><%= data[:path].nil? ? '/' : data[:path] %></td>
55
+ <td class="count"><%= data[:count] %></td>
56
+ <td class="times"><%= '%0.3f' % (data[:times].to_f / data[:count].to_f) %>ms</td>
57
+ <td>
58
+ <a href="javascript:void(0)" class="btn btn-danger btn-xs delete_key" key="<%= "#{data[:request_method]}-#{data[:path]}"%>" role="button">删除</a>
59
+ </td>
57
60
  </tr>
58
61
  <% end %>
59
62
  </table>
@@ -46,6 +46,14 @@ module Mil
46
46
  @data = data.default_data
47
47
  erb :index
48
48
  end
49
+
50
+ delete '/delete_key' do
51
+ if data.delete_key params[:key]
52
+ 'ok'
53
+ else
54
+ 'error'
55
+ end
56
+ end
49
57
  end
50
58
  end
51
59
  end
@@ -10,13 +10,19 @@ module Mil
10
10
 
11
11
  #[{key: xx, count: 1, times: 23},{key: xx, count: 1, times: 23}]
12
12
  def default_data
13
- keys = @redis.keys 'mili-*'
13
+ keys = red.keys 'mili-*'
14
14
  count_array = redis_key_count keys
15
15
  sort_array = sort_desc count_array
16
16
  data = array_set_data sort_array
17
17
  data
18
18
  end
19
19
 
20
+ def delete_key(key)
21
+ keys = red.keys "*-#{key}"
22
+ count = red.del keys
23
+ count.to_i > 0
24
+ end
25
+
20
26
  private
21
27
 
22
28
  def red
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mil-rack_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - millim