ezmetrics 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ezmetrics.rb +14 -12
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 92da4bdfb62dd5fdfffb963b9ac7bd495ee23f79
4
- data.tar.gz: d92a3bef8073d80cb09c0f08d5d80e5ae7d8ce80
3
+ metadata.gz: 475ced129635b18e5c1239c72b6458b88f5733b9
4
+ data.tar.gz: bc2c498c2d5b6773f7cbc995f10c8e8d1c8f1e25
5
5
  SHA512:
6
- metadata.gz: fae80b74ebf4249fc595fa162d5af72acabd2370bd4c917970896e072c3a5fbded5a6465c8a5f80bf0e05d947e30e969a5a81074eefbb05d797debfc1335d538
7
- data.tar.gz: 450a7093e3c63c604452892cbb1f61ebb372f313a5d155247beae834afecafca2143a2bc90ec941e57b8edeee8c3ca2f1da56f9a8eb3a8da587891503dd57852
6
+ metadata.gz: 45f9625c446f68a92e501d0f3d815b64c3751c76170a16da2b887a9e45fb3b3c267fa03f526e667f821e06e633e1df2e42641e4f3553aa9fa6f46300aa0e5ec5
7
+ data.tar.gz: a5ec929272536f76d9e9527e1b63d9a3d7ec2850f470e46eeadf5b13947af6b2558f676aa687ffaca28e39d1f7070c8eff0f4c27f730fc46455bfba49711638b
data/lib/ezmetrics.rb CHANGED
@@ -2,11 +2,12 @@ require "redis" unless defined?(Redis)
2
2
  require "json" unless defined?(JSON)
3
3
 
4
4
  class EZmetrics
5
- attr_reader :redis, :last_minute_metrics, :requests, :redis_key
5
+ attr_reader :redis, :interval_seconds, :interval_metrics, :requests, :redis_key
6
6
 
7
- def initialize
8
- @redis = Redis.new
9
- @redis_key = "ez-metrics"
7
+ def initialize(interval_seconds=60)
8
+ @interval_seconds = interval_seconds.to_i
9
+ @redis = Redis.new
10
+ @redis_key = "ez-metrics"
10
11
  end
11
12
 
12
13
  def log(payload)
@@ -17,7 +18,7 @@ class EZmetrics
17
18
  status: payload[:status].to_i
18
19
  }
19
20
 
20
- current_second = Time.now.sec
21
+ current_second = Time.now.to_i
21
22
  status_group = "#{payload[:status].to_s[0]}xx"
22
23
  this_second_metrics = redis.get("#{redis_key}:#{current_second}")
23
24
 
@@ -45,17 +46,18 @@ class EZmetrics
45
46
  this_second_metrics["statuses"][status_group] = 1
46
47
  end
47
48
 
48
- redis.setex("#{redis_key}:#{current_second}", 59, JSON.generate(this_second_metrics))
49
+ redis.setex("#{redis_key}:#{current_second}", interval_seconds, JSON.generate(this_second_metrics))
49
50
  rescue => error
50
51
  display_error(error)
51
52
  end
52
53
 
53
54
  def show
54
- @last_minute_metrics = redis.mget((0..59).to_a.map { |second| "#{redis_key}:#{second}" }).compact.map { |m| JSON.parse(m) }
55
+ interval_start = Time.now.to_i - interval_seconds
56
+ @interval_metrics = redis.mget((interval_start..Time.now.to_i).to_a.map { |second| "#{redis_key}:#{second}" }).compact.map { |m| JSON.parse(m) }
55
57
 
56
- return empty_metrics unless last_minute_metrics.any?
58
+ return empty_metrics unless interval_metrics.any?
57
59
 
58
- @requests = last_minute_metrics.map { |h| h["statuses"]["all"] }.compact.sum
60
+ @requests = interval_metrics.map { |h| h["statuses"]["all"] }.compact.sum
59
61
 
60
62
  {
61
63
  duration: {
@@ -87,15 +89,15 @@ class EZmetrics
87
89
  private
88
90
 
89
91
  def avg(metrics)
90
- (last_minute_metrics.map { |h| h[metrics.to_s] }.sum.to_f / requests).round
92
+ (interval_metrics.map { |h| h[metrics.to_s] }.sum.to_f / requests).round
91
93
  end
92
94
 
93
95
  def max(metrics)
94
- last_minute_metrics.map { |h| h[metrics.to_s] }.max.round
96
+ interval_metrics.map { |h| h[metrics.to_s] }.max.round
95
97
  end
96
98
 
97
99
  def count(group)
98
- last_minute_metrics.map { |h| h["statuses"][group.to_s] }.sum
100
+ interval_metrics.map { |h| h["statuses"][group.to_s] }.sum
99
101
  end
100
102
 
101
103
  def display_error(error)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ezmetrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolae Rotaru