consul-templaterb 1.26.1 → 1.26.2

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: 91552da1b0e2061c69095c958665896efc6de84ae6c5374a1b66d1c9550a3297
4
- data.tar.gz: 8bdf67de550a4e2cb7d621ccad117e1e0841b3a0a49bcefb5c914e63daeddb41
3
+ metadata.gz: fc35b5803af2e05001323f77e18be90ec85baa05dd621030a83127cf1b5fd9f1
4
+ data.tar.gz: f7d3e25054dcd6c1b022e5c4bf58ea902c5c95676aafa936512659eaec3de9a1
5
5
  SHA512:
6
- metadata.gz: 24a9e291106b8e32ddef2bdc3d5e87ded36122c84dd1f0547fb034410d606609dd0041d011cd4eeb58da7b38a579888fb5901e877814d49926ef7a0722020d15
7
- data.tar.gz: d3b1b5578cfdc3ee7c594916fc53e22692506d1bc0faaafd91ca21891665732528e95a384766548c90c75bcec0b515f856d1236ffbd18572911363d6ab8f836b
6
+ metadata.gz: e1e053e41716e64177917ef8a3ef1360ba82995758bb7dacfafd3bc7fb7a8f5774f107c62cbb7c4340189ea59cab15db936fc27854f6fab1ba487466ad0add3f
7
+ data.tar.gz: 95c0584f456239478395ceb0d2678e2ec1c7165f2148371f272ab23780148ed6498f419bc8104933d14cd155fcf20403c2b66521e604a3d2f4232bb8373f69c2
@@ -2,6 +2,18 @@
2
2
 
3
3
  ## (UNRELEASED)
4
4
 
5
+ NEW FEATURES:
6
+
7
+ ## 1.26.2 (April 15, 2020)
8
+
9
+ BUGFIX:
10
+
11
+ * Fixed broken Dockerfile (was missing the new `decorator.js.erb` file). Fixes #61 (Thanks to @ simongareste)
12
+
13
+ NEW FEATURES:
14
+
15
+ * Added `consul_members_count` metric in [samples/metrics.erb](samples/metrics.erb)
16
+
5
17
  ## 1.26.1 (March 27, 2020)
6
18
 
7
19
  BUGFIX:
data/Dockerfile CHANGED
@@ -12,4 +12,4 @@ ENV LANG C.UTF-8
12
12
  ENV CONSUL_HTTP_ADDR http://consul-relay.service.consul.preprod.crto.in:8500
13
13
 
14
14
  ENTRYPOINT ["/usr/local/bin/bundle", "exec", "consul-templaterb"]
15
- CMD ["--template", "samples/consul-ui/consul-keys-ui.html.erb", "--template", "samples/consul-ui/consul-nodes-ui.html.erb", "--template", "samples/consul-ui/consul-services-ui.html.erb", "--template", "samples/consul-ui/consul-timeline-ui.html.erb", "--template", "samples/consul-ui/consul_keys.json.erb", "--template", "samples/consul-ui/consul_nodes.json.erb", "--template", "samples/consul-ui/consul_services.json.erb", "--template", "samples/consul-ui/timeline.json.erb", "--template", "samples/consul-ui/consul-services-ui.html.erb:samples/consul-ui/index.html:touch samples/consul-ui/ready", "--sig-reload=NONE", "--exec=nginx -c /usr/src/app/docker-nginx-conf/nginx.conf"]
15
+ CMD ["--template", "samples/consul-ui/consul-keys-ui.html.erb", "--template", "samples/consul-ui/decorators.js.erb", "--template", "samples/consul-ui/consul-nodes-ui.html.erb", "--template", "samples/consul-ui/consul-services-ui.html.erb", "--template", "samples/consul-ui/consul-timeline-ui.html.erb", "--template", "samples/consul-ui/consul_keys.json.erb", "--template", "samples/consul-ui/consul_nodes.json.erb", "--template", "samples/consul-ui/consul_services.json.erb", "--template", "samples/consul-ui/timeline.json.erb", "--template", "samples/consul-ui/consul-services-ui.html.erb:samples/consul-ui/index.html:touch samples/consul-ui/ready", "--sig-reload=NONE", "--exec=nginx -c /usr/src/app/docker-nginx-conf/nginx.conf"]
@@ -1,5 +1,5 @@
1
1
  module Consul
2
2
  module Async
3
- VERSION = '1.26.1'.freeze
3
+ VERSION = '1.26.2'.freeze
4
4
  end
5
5
  end
@@ -50,6 +50,25 @@ The content is statically created, so you can serve it using any HTTP server ver
50
50
  For development, you might use `python -m SimpleHTTPServer` in order to server the result
51
51
  on your browser.
52
52
 
53
+ ### Running it in production
54
+
55
+ Whatever your solution, be sure to have a index.html, so read next below on
56
+ how generating an index.html.
57
+
58
+ #### Running with web server
59
+
60
+ You can run it with your favoite web server, at Criteo we run it with nginx
61
+ which handles nicely cache and offer good performance.
62
+
63
+ In that case, consul-templaterb can start nginx with `--exec` or you can run it
64
+ as a daemon, in which case, consul-templaterb only generate the files.
65
+
66
+ #### Run it in Consul
67
+
68
+ You can run consul with `-ui-dir=/path/to/directory/of/consul-ui`, in such case
69
+ reaching consul on poort 8500 will redirect to the /ui/ path, displaying the UI
70
+ of your choice on http://consul-agent.example.org:8500/ui/.
71
+
53
72
  ### Generating index.html
54
73
 
55
74
  By default, the command `consul-templaterb -c http://localhost:8500 samples/consul-ui/*.erb``
@@ -0,0 +1,28 @@
1
+ <%=
2
+ all_catalog = nodes.map{ |n| [n['Node'], n] }.to_h
3
+ all_members = agent_members.sort{ |a,b| a['Name'] <=> b['Name'] }
4
+ members_by_state = {}
5
+ all_members.each do |m|
6
+ state = m.status
7
+ members = members_by_state[state] || 0
8
+ members_by_state[state] = members + 1
9
+ end
10
+ # Find all virtual nodes (eg: k8s-sync)
11
+ catalog_external_sources = nodes.select{|n| (n['Meta']||{})['external-source'] }.map{|n| n['Node']}
12
+ in_catalog_but_not_in_members = all_catalog.keys - all_members.map{ |m| m['Name'] }
13
+ not_virtual_not_in_members = in_catalog_but_not_in_members - catalog_external_sources
14
+ JSON.pretty_generate(
15
+ {
16
+ 'stats' => {
17
+ 'catalog' => all_catalog.count,
18
+ 'catalog_virtual' => in_catalog_but_not_in_members.count,
19
+ 'members' => all_members.count,
20
+ 'members_by_state': members_by_state,
21
+ 'catalog_external_sources' => catalog_external_sources,
22
+ },
23
+ 'errors': {
24
+ 'in_catalog_but_not_in_members' => in_catalog_but_not_in_members,
25
+ 'not_virtual_not_in_members' => not_virtual_not_in_members,
26
+ }
27
+ })
28
+ %>
@@ -21,6 +21,20 @@
21
21
  all_stats = {}
22
22
  service_count = 0
23
23
 
24
+ statuses = agent_members().map {|m| m.status}.reduce({}) do |sum, s|
25
+ v = sum[s] || 0
26
+ sum[s] = v + 1
27
+ sum
28
+ end
29
+ %>
30
+ # HELP consul_members_count A gauge of number of serf members with their count and their status('alive', 'leaving', 'left', 'failed')
31
+ # TYPE consul_members_count gauge
32
+ <%
33
+ statuses.each do |k, v|
34
+ %>
35
+ consul_members_count{serf="lan",status="<%= k %>"} <%= v %><%
36
+ end
37
+
24
38
  services(tag: service_tag_filter).each do |service_name, tags|
25
39
  if !services_blacklist.any? {|r| r.match(service_name)} && (instance_must_tag.nil? || tags.include?(instance_must_tag))
26
40
  service_count += 1
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.26.1
4
+ version: 1.26.2
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: 2020-03-27 00:00:00.000000000 Z
11
+ date: 2020-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-http-request
@@ -230,6 +230,7 @@ files:
230
230
  - samples/debug/compare_connect_services.txt.erb
231
231
  - samples/demos/compute_pricing.txt.erb
232
232
  - samples/find_all_invalid_dns_labels.json.erb
233
+ - samples/find_nodes_in_catalog_but_not_in_members.json.erb
233
234
  - samples/ha_proxy.cfg.erb
234
235
  - samples/haproxy_dns.cfg.erb
235
236
  - samples/hosts.erb