scaltainer 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +5 -2
- data/lib/scaltainer/runner.rb +20 -4
- data/lib/scaltainer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84b843eaa45f5b54d142d99fd428d6bc1b2323442e62987b606fb6a140c179f7
|
4
|
+
data.tar.gz: dc2b47fee69f2be100c023c29266c0260be36c9d28ed6ccd505e785008625b33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b7e2393442da6423d19d7cccef17f954470fb9d3966ef357367fccaafad5dcaa95a0412aadaf3fc969cb735da1e5832a45893e9de232169f09fd83bfffcfbf3
|
7
|
+
data.tar.gz: 9a033a9f9ae5d0bf876e801261949310f5699291e109e6365a0fb4fdc8c194f58a6cc879ed38c7169448174f82b0a0f743e1246e16f04b80a387ae74344ab138
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -65,10 +65,13 @@ of the push gateway. For Kubernetes environments the above denotes the gateway s
|
|
65
65
|
name (`prometheus-pushgateway`), where it is installed in the namespace called
|
66
66
|
`monitoring`. Scaltainer will report the following metrics to Prometheus:
|
67
67
|
|
68
|
-
- `
|
68
|
+
- `scaltainer_web_replicas_total`: number of web replicas scaled (or untouched thereof).
|
69
69
|
This is labeled by the namespace and controller name, both matching the scaltainer
|
70
70
|
configuration file.
|
71
|
-
- `
|
71
|
+
- `scaltainer_worker_replicas_total`: Same as above, but for workers
|
72
|
+
- `scaltainer_web_response_time_seconds`: response times as reported by the web services
|
73
|
+
- `scaltainer_worker_queue_size_total`: queue sizes as reported by the worker services
|
74
|
+
- `scaltainer_ticks_total`: iterations scaltainer has performed (if `-w` is used)
|
72
75
|
|
73
76
|
## Configuration
|
74
77
|
|
data/lib/scaltainer/runner.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "yaml"
|
2
|
+
require 'socket'
|
2
3
|
require 'prometheus/client'
|
3
4
|
require 'prometheus/client/push'
|
4
5
|
|
@@ -81,6 +82,8 @@ module Scaltainer
|
|
81
82
|
@logger.debug "#{service.type.capitalize} #{service.name} is currently configured for #{current_replicas} replica(s)"
|
82
83
|
metric = metrics[service.name]
|
83
84
|
raise Scaltainer::Warning.new("Configured #{service.type} '#{service.name}' not found in metrics endpoint") unless metric
|
85
|
+
state["metric"] = metric
|
86
|
+
state["service_type"] = type.to_s
|
84
87
|
desired_replicas = type.determine_desired_replicas metric, config, current_replicas
|
85
88
|
@logger.debug "Desired number of replicas for #{service.type} #{service.name} is #{desired_replicas}"
|
86
89
|
adjusted_replicas = type.adjust_desired_replicas(desired_replicas, config)
|
@@ -121,16 +124,29 @@ module Scaltainer
|
|
121
124
|
|
122
125
|
def register_pushgateway(pushgateway)
|
123
126
|
@registry = Prometheus::Client.registry
|
124
|
-
@
|
125
|
-
@
|
127
|
+
@web_replicas_gauge = @registry.gauge(:scaltainer_web_replicas_total, docstring: 'Scaltainer controller replicas for web services', labels: [:controller, :namespace])
|
128
|
+
@worker_replicas_gauge = @registry.gauge(:scaltainer_worker_replicas_total, docstring: 'Scaltainer controller replicas for worker services', labels: [:controller, :namespace])
|
129
|
+
@web_metrics_gauge = @registry.gauge(:scaltainer_web_response_time_seconds, docstring: 'Scaltainer controller response time metric in seconds', labels: [:controller, :namespace])
|
130
|
+
@worker_metrics_gauge = @registry.gauge(:scaltainer_worker_queue_size_total, docstring: 'Scaltainer controller queue size metric', labels: [:controller, :namespace])
|
131
|
+
@ticks_counter = @registry.counter(:scaltainer_ticks_total, docstring: 'Scaltainer ticks', labels: [:namespace])
|
126
132
|
|
127
|
-
@pushgateway = Prometheus::Client::Push.new("scaltainer",
|
133
|
+
@pushgateway = Prometheus::Client::Push.new("scaltainer", Socket.gethostname, "http://#{pushgateway}")
|
128
134
|
end
|
129
135
|
|
130
136
|
def sync_pushgateway(namespace, state)
|
131
137
|
@logger.debug("Now syncing state #{state} in namespace #{namespace}")
|
138
|
+
factor = 1
|
132
139
|
state.each do |service, state|
|
133
|
-
|
140
|
+
if state["service_type"] == 'Web'
|
141
|
+
replicas_gauge = @web_replicas_gauge
|
142
|
+
metrics_gauge = @web_metrics_gauge
|
143
|
+
factor = 0.001
|
144
|
+
else
|
145
|
+
replicas_gauge = @worker_replicas_gauge
|
146
|
+
metrics_gauge = @worker_metrics_gauge
|
147
|
+
end
|
148
|
+
replicas_gauge.set(state["replicas"], labels: {namespace: namespace, controller: service})
|
149
|
+
metrics_gauge.set(state["metric"] * factor, labels: {namespace: namespace, controller: service})
|
134
150
|
end
|
135
151
|
@ticks_counter.increment(labels: {namespace: namespace})
|
136
152
|
begin
|
data/lib/scaltainer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scaltainer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hossam Hammady
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|