forked from criteo/consul-templaterb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
all_services.txt.erb
58 lines (56 loc) · 2.08 KB
/
all_services.txt.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
__________________________________________________________________
| DC | Services |______________Instances________________| Nodes |
| | | Passing | Warning | Critic | Total | |
|-------+----------+---------+---------+---------+---------+-------|
<%
# This template list all instances on all DCs
# And aggregates a list of Services, Services Instances/status
# And nodes.
require 'set'
# Services to hide
services_blacklist_raw = (ENV['EXCLUDE_SERVICES'] || '.*netsvc-probe.*,.*consul-probed.*,.lbl7.*').split(',')
services_blacklist = services_blacklist_raw.map { |v| Regexp.new(v) }
num_services={}
num_instances={}
all_states = ['passing', 'warning', 'critical', 'total']
distinct_services=Set.new
datacenters().each do |dc|
num_services[dc] = 0
num_instances[dc] = {
'passing' => 0,
'warning' => 0,
'critical' => 0,
'total' => 0
}
services(dc:dc).each do |service_name, tags|
next if services_blacklist.any? {|r| r.match(service_name)}
distinct_services.add(service_name)
num_services[dc]+=1
service(service_name, dc:dc).each do |snode|
num_instances[dc][snode.status]+=1
num_instances[dc]['total']+=1
end
end
end
num_instances_total={
'passing' => 0,
'warning' => 0,
'critical' => 0,
'total' => 0
}
num_nodes_total=0
num_services.each do |dc, num_services_for_dc|
all_states.each do |s|
num_instances_total[s] += num_instances[dc][s]
end
num_nodes=nodes(dc:dc).count
num_nodes_total+=num_nodes
%>| <%= dc.rjust(5) %> | <%= num_services_for_dc.to_s.rjust(8) %> |<% all_states.each do |status|
%> <%= num_instances[dc][status].to_s.rjust(7) %> |<% end %> <%= num_nodes.to_s.rjust(5) %> |
<%
end
%>|-------+----------+---------+---------+---------+---------+-------|
| TOTAL | <%= distinct_services.count.to_s.rjust(8) %> |<% all_states.each do |status|
%> <%= num_instances_total[status].to_s.rjust(7) %> |<%
end %> <%= num_nodes_total.to_s.rjust(5) %> |
'_______|__________|_________|_________|_________|_________|_______'