como_client 0.1.1 → 0.3.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 +5 -5
- data/.travis.yml +1 -1
- data/LICENSE.txt +1 -1
- data/README.md +2 -2
- data/como_client.gemspec +6 -6
- data/lib/como_client.rb +12 -6
- data/lib/como_client/metrics.rb +4 -6
- data/lib/como_client/metrics/cf.rb +14 -17
- data/lib/como_client/tasks/periodic_push.rb +5 -6
- data/lib/como_client/version.rb +1 -1
- metadata +24 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0a46fb908d89401f14ca6a5da2b07b90ac80d908f0a63da574a7f7a3b2c32fd2
|
4
|
+
data.tar.gz: 2cbdc2ad2c54f24ee9beaea1b4b053ca19f9601c86011943b832707d759baa27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e267901e852d2c4e182805e9b62a1e8b80a2e85f59e1effe89b59414661ceb9c2e3b99cb716bf3d7d927acf7cb7c91674f6a92534e64d3f9bfec8d328268bd37
|
7
|
+
data.tar.gz: 02c09fec0e0cedf8595a61eb7ac854e4ce6003fe08dab48d7febb9f1506b447c3175ceddf38b70442c7ef7d36b829eefd07a6d828f7fafe13a8f434b7767c35d
|
data/.travis.yml
CHANGED
data/LICENSE.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c)
|
3
|
+
Copyright (c) 2019 Disler Colin
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@ If you work in a Cloud Foundry environment and want to actively push your Promet
|
|
8
8
|
Add this line to your application's Gemfile:
|
9
9
|
|
10
10
|
```ruby
|
11
|
-
gem '
|
11
|
+
gem 'como_client'
|
12
12
|
```
|
13
13
|
|
14
14
|
And then execute:
|
@@ -17,7 +17,7 @@ And then execute:
|
|
17
17
|
|
18
18
|
Or install it yourself as:
|
19
19
|
|
20
|
-
$ gem install
|
20
|
+
$ gem install como_client
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
data/como_client.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["Colin.Disler@gmail.com"]
|
11
11
|
|
12
12
|
spec.summary = "A Prometheus Client for continuous monitoring"
|
13
|
-
spec.description = "A Prometheus Client for continuous monitoring"
|
13
|
+
spec.description = "A Prometheus Client for continuous monitoring. Configure & Run."
|
14
14
|
spec.homepage = "https://github.com/lombold/COMO_Client"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
@@ -30,9 +30,9 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
|
-
spec.add_development_dependency 'rspec'
|
34
|
-
spec.add_dependency 'concurrent-ruby'
|
35
|
-
spec.add_dependency 'prometheus-client'
|
36
|
-
spec.add_dependency 'usagewatch_ext'
|
37
|
-
spec.add_dependency 'mem_info'
|
33
|
+
spec.add_development_dependency 'rspec', '~> 3.9.0'
|
34
|
+
spec.add_dependency 'concurrent-ruby', '~> 1.1.5'
|
35
|
+
spec.add_dependency 'prometheus-client', '~> 1.0'
|
36
|
+
spec.add_dependency 'usagewatch_ext', '~> 0.2.1'
|
37
|
+
spec.add_dependency 'mem_info', '~> 1.0.1'
|
38
38
|
end
|
data/lib/como_client.rb
CHANGED
@@ -10,11 +10,17 @@ require 'prometheus/middleware/exporter'
|
|
10
10
|
require 'prometheus/middleware/collector'
|
11
11
|
|
12
12
|
module COMOClient
|
13
|
+
def self.logger
|
14
|
+
@@logger ||= defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.logger=(logger)
|
18
|
+
@@logger = logger
|
19
|
+
end
|
13
20
|
|
14
21
|
class Railtie < Rails::Railtie
|
15
22
|
initializer 'como_client.configure_rails_initialization' do
|
16
23
|
Rails.configuration.middleware.use Prometheus::Middleware::Collector
|
17
|
-
Rails.configuration.middleware.use Prometheus::Middleware::Exporter
|
18
24
|
end
|
19
25
|
end
|
20
26
|
|
@@ -36,18 +42,18 @@ module COMOClient
|
|
36
42
|
end
|
37
43
|
|
38
44
|
def self.run
|
39
|
-
|
40
|
-
logger.
|
45
|
+
|
46
|
+
COMOClient.logger.debug("initialise metrics push service...")
|
41
47
|
if @pushTask and @pushTask.running?
|
42
|
-
logger.
|
48
|
+
COMOClient.logger.debug("push service is already running!")
|
43
49
|
return true
|
44
50
|
end
|
45
51
|
|
46
52
|
COMOClient::Metrics.register
|
47
|
-
@pushTask = Concurrent::TimerTask.new(execution_interval:
|
53
|
+
@pushTask = Concurrent::TimerTask.new(execution_interval: @configuration.push_interval, timeout_interval: 20){COMOClient::Tasks::PeriodicPush.push}
|
48
54
|
@pushTask.add_observer(COMOClient::Tasks::Observer.new)
|
49
55
|
@pushTask.execute
|
50
|
-
logger.info("
|
56
|
+
COMOClient.logger.info("push service initialised")
|
51
57
|
@pushTask.running?
|
52
58
|
end
|
53
59
|
|
data/lib/como_client/metrics.rb
CHANGED
@@ -1,23 +1,21 @@
|
|
1
1
|
module COMOClient
|
2
2
|
module Metrics
|
3
3
|
def self.register
|
4
|
-
logger
|
5
|
-
logger.info("register metrics...")
|
4
|
+
COMOClient.logger.debug("register metrics...")
|
6
5
|
|
7
6
|
#Register Cloud Froundry metrics if the app is pushed to Cloud Foundry
|
8
7
|
COMOClient::Metrics::CF.register if !ENV["CF_INSTANCE_GUID"].nil?
|
9
8
|
|
10
|
-
logger.
|
9
|
+
COMOClient.logger.debug("registered metrics")
|
11
10
|
end
|
12
11
|
|
13
12
|
def self.update
|
14
|
-
logger
|
15
|
-
logger.info("update metrics...")
|
13
|
+
COMOClient.logger.debug("update metrics...")
|
16
14
|
|
17
15
|
#Update Cloud Froundry metrics if the app is pushed to Cloud Foundry
|
18
16
|
COMOClient::Metrics::CF.update if !ENV["CF_INSTANCE_GUID"].nil?
|
19
17
|
|
20
|
-
logger.
|
18
|
+
COMOClient.logger.debug("updated metrics")
|
21
19
|
end
|
22
20
|
end
|
23
21
|
end
|
@@ -6,36 +6,33 @@ module COMOClient
|
|
6
6
|
require 'mem_info'
|
7
7
|
|
8
8
|
def self.register
|
9
|
-
logger
|
10
|
-
logger.info("register CF metrics...")
|
9
|
+
COMOClient.logger.debug("register CF metrics...")
|
11
10
|
|
12
11
|
prometheus = Prometheus::Client.registry
|
13
12
|
|
14
|
-
hardwareGauges = Prometheus::Client::Gauge.new(:instance_metrics, 'instance hardware metrics')
|
13
|
+
hardwareGauges = Prometheus::Client::Gauge.new( :instance_metrics, docstring: 'instance hardware metrics', labels: [:hardware])
|
15
14
|
prometheus.register(hardwareGauges)
|
16
|
-
logger.
|
15
|
+
COMOClient.logger.debug("registered hardware gauges")
|
17
16
|
|
18
|
-
logger.
|
17
|
+
COMOClient.logger.debug("registered CF metrics")
|
19
18
|
end
|
20
19
|
def self.update
|
21
|
-
logger
|
22
|
-
logger.info("update CF metrics...")
|
20
|
+
COMOClient.logger.debug("update CF metrics...")
|
23
21
|
prometheus = Prometheus::Client.registry
|
24
22
|
|
25
23
|
usw = Usagewatch
|
26
24
|
mem = MemInfo.new
|
27
25
|
hardwareGauges = prometheus.get(:instance_metrics)
|
28
|
-
hardwareGauges.set({ hardware: 'cpu'}
|
29
|
-
hardwareGauges.set({ hardware: 'avg_load_past_minute'}
|
30
|
-
hardwareGauges.set({ hardware: 'memory_total'}
|
31
|
-
hardwareGauges.set({ hardware: 'memory_free'}
|
32
|
-
hardwareGauges.set({ hardware: 'memory_used'}
|
33
|
-
hardwareGauges.set({ hardware: 'disk_used_perc'}
|
34
|
-
hardwareGauges.set({ hardware: 'disk_used_gigabytes'}
|
35
|
-
hardwareGauges.set(
|
36
|
-
logger.info("instance gauges")
|
26
|
+
hardwareGauges.set(usw.uw_cpuused, labels: { hardware: 'cpu'})
|
27
|
+
hardwareGauges.set(usw.uw_load, labels: { hardware: 'avg_load_past_minute'})
|
28
|
+
hardwareGauges.set(mem.memtotal, labels: { hardware: 'memory_total'})
|
29
|
+
hardwareGauges.set(mem.memfree, labels: { hardware: 'memory_free'})
|
30
|
+
hardwareGauges.set(mem.memused, labels: { hardware: 'memory_used'})
|
31
|
+
hardwareGauges.set(usw.uw_diskused_perc, labels: { hardware: 'disk_used_perc'})
|
32
|
+
hardwareGauges.set(usw.uw_diskused, labels: { hardware: 'disk_used_gigabytes'})
|
33
|
+
hardwareGauges.set(IO.read('/proc/uptime').split[0].to_i, labels: { hardware: 'uptime_seconds'})
|
37
34
|
|
38
|
-
logger.
|
35
|
+
COMOClient.logger.debug("updated CF metrics")
|
39
36
|
end
|
40
37
|
end
|
41
38
|
end
|
@@ -5,17 +5,16 @@ module COMOClient
|
|
5
5
|
require 'prometheus/client/push'
|
6
6
|
def self.push
|
7
7
|
# register some metrics
|
8
|
-
logger
|
9
|
-
logger.
|
10
|
-
logger.
|
11
|
-
logger.info("instance: #{COMOClient.configuration.instance_name}")
|
8
|
+
COMOClient.logger.debug("pushing metrics to #{COMOClient.configuration.pushgateway_url}")
|
9
|
+
COMOClient.logger.debug("job: #{COMOClient.configuration.job_name}")
|
10
|
+
COMOClient.logger.debug("instance: #{COMOClient.configuration.instance_name}")
|
12
11
|
COMOClient::Metrics.update
|
13
12
|
Prometheus::Client::Push.new(COMOClient.configuration.job_name, #job name
|
14
13
|
COMOClient.configuration.instance_name,#instance name
|
15
14
|
COMOClient.configuration.pushgateway_url)#pushgateway url
|
16
15
|
.add(Prometheus::Client.registry)
|
17
|
-
logger.
|
16
|
+
COMOClient.logger.debug("successfully pushed metrics")
|
18
17
|
end
|
19
18
|
end
|
20
19
|
end
|
21
|
-
end
|
20
|
+
end
|
data/lib/como_client/version.rb
CHANGED
metadata
CHANGED
@@ -1,86 +1,86 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: como_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Disler Colin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.9.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 3.9.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: concurrent-ruby
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.1.5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.1.5
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: prometheus-client
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
47
|
+
version: '1.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
54
|
+
version: '1.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: usagewatch_ext
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.2.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.2.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mem_info
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 1.0.1
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
83
|
-
description: A Prometheus Client for continuous monitoring
|
82
|
+
version: 1.0.1
|
83
|
+
description: A Prometheus Client for continuous monitoring. Configure & Run.
|
84
84
|
email:
|
85
85
|
- Colin.Disler@gmail.com
|
86
86
|
executables: []
|
@@ -124,8 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
requirements: []
|
127
|
-
|
128
|
-
rubygems_version: 2.4.6
|
127
|
+
rubygems_version: 3.0.6
|
129
128
|
signing_key:
|
130
129
|
specification_version: 4
|
131
130
|
summary: A Prometheus Client for continuous monitoring
|