consul-templaterb 1.5.5 → 1.5.6

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
  SHA256:
3
- metadata.gz: ed586b6f530661c89df4f8f31dd1f4960742b1fcfd9ea2aed2af44da9f059c05
4
- data.tar.gz: d0eb5d09751bd5a8eafac6bf67febce94601ceae65f03ede0f576627f1d179ef
3
+ metadata.gz: 304b95f065eeb5380e20568ab0d157b011b02e2990bcad5badffdc9cdbd74463
4
+ data.tar.gz: e3e520457339beea59c4d0caf4f21b42457ad67fb163d5f2a93ce227b0bb5602
5
5
  SHA512:
6
- metadata.gz: 865873980923a237af55f5809eb8a9ebb484279897c5dd3f37c6b7a8a19a780ed1bde203a566883f921fb14c4dc8c3e750abdf10807f86546c47d681da7a9483
7
- data.tar.gz: 96dfd1d681f5760897609a6ec69b66fde406745ee4fb718d94e8faa566f97581637e08bd57fc91dc520be109221d426da0e9c6d327480e04fc8f0ae5b5dafdbc
6
+ metadata.gz: 6cf440dbc49f9f9834eae4fee2f8377e7dbcd06362ca8a7bf4ca0525d62ac5e426c2069f571a76e82081db10a43c55faea2c4a31050015cb4b5e060905d81017
7
+ data.tar.gz: 83a6958a169229cbb598a93440852f824e5cc8c65c6e2b751146e36e5371e8c6cc8bafd3bedfd2862e2323d2047eaa01ad6abc86c54bfbf4543034f61082b8e4
data/CHANGELOG.md CHANGED
@@ -2,7 +2,14 @@
2
2
 
3
3
  ## (UNRELEASED)
4
4
 
5
- ## 1.5.4 (September 27, 2018)
5
+ ## 1.5.6 (September 30, 2018)
6
+
7
+ IMPROVEMENTS:
8
+
9
+ * Added methods to get timestamps on each endpoint
10
+ * Use timestamps in [Prometheus template](samples/metrics.erb) to get more precise metrics
11
+
12
+ ## 1.5.5 (September 27, 2018)
6
13
 
7
14
  IMPROVEMENTS:
8
15
 
@@ -3,21 +3,25 @@ require 'consul/async/utilities'
3
3
  module Consul
4
4
  module Async
5
5
  class EndPointStats
6
- attr_reader :successes, :errors, :start, :body_bytes
6
+ attr_reader :successes, :errors, :start, :body_bytes, :last_error, :last_success
7
7
 
8
8
  def initialize
9
9
  @start = Time.now.utc
10
10
  @successes = 0
11
11
  @errors = 0
12
12
  @body_bytes = 0
13
+ @last_error = @start
14
+ @last_success = @start
13
15
  end
14
16
 
15
17
  def on_response(res)
18
+ @last_success = Time.now.utc
16
19
  @successes += 1
17
20
  @body_bytes = body_bytes + res.http.response.bytesize
18
21
  end
19
22
 
20
23
  def on_error(_http)
24
+ @last_error = Time.now.utc
21
25
  @errors += 1
22
26
  end
23
27
 
@@ -34,6 +38,10 @@ module Consul
34
38
  def body_bytes_human
35
39
  Utilities.bytes_to_h(body_bytes)
36
40
  end
41
+
42
+ def last_success_or_error
43
+ [@last_error, @last_success].max
44
+ end
37
45
  end
38
46
  end
39
47
  end
@@ -1,5 +1,5 @@
1
1
  module Consul
2
2
  module Async
3
- VERSION = '1.5.5'.freeze
3
+ VERSION = '1.5.6'.freeze
4
4
  end
5
5
  end
data/samples/metrics.erb CHANGED
@@ -50,15 +50,15 @@
50
50
  %>
51
51
  # HELP consul_datacenters_count A gauge of number of datacenters available
52
52
  # TYPE consul_nodes_count gauge
53
- consul_datacenters_count <%= datacenters().count %>
53
+ consul_datacenters_count <%= datacenters().count %> <%= datacenters().endpoint.stats.last_success_or_error.to_i * 1000 %>
54
54
 
55
55
  # HELP consul_nodes_count A gauge of number of nodes in the cluster
56
56
  # TYPE consul_nodes_count gauge
57
- consul_nodes_count <%= nodes().count %>
57
+ consul_nodes_count <%= nodes().count %> <%= nodes().endpoint.stats.last_success_or_error.to_i * 1000 %>
58
58
 
59
59
  # HELP consul_services_count A gauge of the number of services
60
60
  # TYPE consul_services_count gauge
61
- consul_services_count <%= service_count %>
61
+ consul_services_count <%= service_count %> <%= services(tag: service_tag_filter).endpoint.stats.last_success_or_error.to_i * 1000 %>
62
62
 
63
63
  # HELP consul_service_count A gauge of number instances of service with their current state
64
64
  # TYPE consul_service_count gauge
@@ -71,20 +71,22 @@ consul_services_count <%= service_count %>
71
71
 
72
72
  <%
73
73
  json_backends = {}
74
+ now = Time.now.utc.to_i * 1000
74
75
  backends.each_pair do |service_name, service_info|
76
+ last_update = service_info[:stats].last_success_or_error.to_i * 1000
75
77
  service_info[:state].each_pair do |state_name, state_count|
76
- %>consul_service_count{service="<%= service_name %>",state="<%= state_name %>"} <%= state_count %>
78
+ %>consul_service_count{service="<%= service_name %>",state="<%= state_name %>"} <%= state_count %> <%= last_update %>
77
79
  <%
78
80
  end
79
81
  current_stats = service_info[:stats]
80
- %>consul_service_stats_requests_total{service="<%= service_name %>",type="success"} <%= current_stats.successes %>
82
+ %>consul_service_stats_requests_total{service="<%= service_name %>",type="success"} <%= current_stats.successes %> <%= last_update %>
81
83
  <%
82
84
  if current_stats.errors > 0
83
- %>consul_service_stats_requests_total{service="<%= service_name %>",type="errors"} <%= current_stats.errors %>
85
+ %>consul_service_stats_requests_total{service="<%= service_name %>",type="errors"} <%= current_stats.errors %> <%= last_update %>
84
86
  <%
85
87
  end
86
- %>consul_service_stats_requests_bytes{service="<%= service_name %>"} <%= service_info[:stats].body_bytes %>
87
- consul_service_stats_requests_bytes_per_sec{service="<%= service_name %>"} <%= service_info[:stats].bytes_per_sec %>
88
+ %>consul_service_stats_requests_bytes{service="<%= service_name %>"} <%= service_info[:stats].body_bytes %> <%= last_update %>
89
+ consul_service_stats_requests_bytes_per_sec{service="<%= service_name %>"} <%= service_info[:stats].bytes_per_sec %> <%= now %>
88
90
 
89
91
  <%
90
92
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: consul-templaterb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.5
4
+ version: 1.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - SRE Core Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-27 00:00:00.000000000 Z
11
+ date: 2018-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-http-request