consul-templaterb 1.25.2 → 1.27.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ <%
2
+ # This example show how to display local time informaition about changes
3
+ # Example of usage to display logs of changes on nodes() endpoint:
4
+ #
5
+ # consul-templaterb --template "display_timestamped_changes.txt.erb:display_timestamped_changes.txt:cat display_timestamped_changes.txt" -l error
6
+ #
7
+ # Would output:
8
+ # Last update: 1588800554 (2020-05-06 21:29:14 UTC), X-Consul-Index: 4345827328
9
+ # Last update: 1588800569 (2020-05-06 21:29:29 UTC), X-Consul-Index: 4345829548
10
+ # Last update: 1588800676 (2020-05-06 21:31:16 UTC), X-Consul-Index: 4345836342
11
+ #
12
+ @my_last_time = Time.now.utc unless @my_last_time
13
+ val = nodes()
14
+ new_idx = val.endpoint.x_consul_index
15
+ @my_last_time = Time.now.utc if @my_last_idx != new_idx
16
+ @my_last_idx = new_idx
17
+ %>Last update: <%= @my_last_time.to_i %> (<%= @my_last_time %>), X-Consul-Index: <%= new_idx %>
@@ -0,0 +1,12 @@
1
+ <%
2
+ r = /^[a-zA-Z0-9]([a-zA-Z0-9\-]{0,62}[a-zA-Z0-9])?$/
3
+ invalid_services = {}
4
+ services.each do |servive_name, tags|
5
+ errors = []
6
+ errors << "Invalid service name #{servive_name}" unless r.match(servive_name)
7
+ tags.each do |tag|
8
+ errors << "Invalid tag #{tag}" unless r.match(tag)
9
+ end
10
+ invalid_services[servive_name] = errors unless errors.empty?
11
+ end
12
+ %><%= JSON.pretty_generate({"errors": invalid_services.size, "details": invalid_services}) %>
@@ -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.25.2
4
+ version: 1.27.0
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-02-29 00:00:00.000000000 Z
11
+ date: 2020-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-http-request
@@ -180,6 +180,9 @@ files:
180
180
  - bin/consul-templaterb
181
181
  - consul-templaterb.gemspec
182
182
  - docker-nginx-conf/nginx.conf
183
+ - docs/article-06_Template-based_discovery_with_consul-templaterb.md
184
+ - docs/images/consul-templaterb.png
185
+ - docs/images/consul-templaterb.svg
183
186
  - docs/images/consul-ui_001.png
184
187
  - lib/consul/async/consul_endpoint.rb
185
188
  - lib/consul/async/consul_template.rb
@@ -193,7 +196,9 @@ files:
193
196
  - lib/consul/async/vault_endpoint.rb
194
197
  - lib/consul/async/version.rb
195
198
  - samples/all_services.txt.erb
199
+ - samples/all_services_multi_agents.txt.erb
196
200
  - samples/all_templates.erb
201
+ - samples/checks_in_warning_or_critical_state.yaml.erb
197
202
  - samples/consul-ui/README.md
198
203
  - samples/consul-ui/common/footer.html.erb
199
204
  - samples/consul-ui/common/header.html.erb
@@ -225,6 +230,9 @@ files:
225
230
  - samples/criteo/haproxy.cfg.erb
226
231
  - samples/debug/compare_connect_services.txt.erb
227
232
  - samples/demos/compute_pricing.txt.erb
233
+ - samples/display_timestamped_changes.txt.erb
234
+ - samples/find_all_invalid_dns_labels.json.erb
235
+ - samples/find_nodes_in_catalog_but_not_in_members.json.erb
228
236
  - samples/ha_proxy.cfg.erb
229
237
  - samples/haproxy_dns.cfg.erb
230
238
  - samples/hosts.erb