server_metrics 1.2.14 → 1.2.18
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/CHANGELOG.md +14 -2
- data/lib/server_metrics/collector.rb +1 -1
- data/lib/server_metrics/collectors/disk.rb +19 -12
- data/lib/server_metrics/version.rb +1 -1
- data/server_metrics.gemspec +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79ef80a2159b7e4572c1d95ccfe02ea9e356eb08
|
4
|
+
data.tar.gz: 88e3b4bbe5c1a2bbb5b3824f4b85de04e3382ade
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b128f526ac97d986c8d8f13236ca19ede9a9585a9dd17d7916050cb05eb52623a7edd710e02081d0ff6ae1bd080f33d323ac574662a10cb29a0454a1dab0ea8
|
7
|
+
data.tar.gz: 4a6f352c28598a98c01b59e860a3623fcfc2fffa39f05f90feaf752ca293c467582531db9d4d4d4228e4fa701042d9a4df1f6883388d9db5333a187cec0c66cb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# 1.2.17
|
2
|
+
|
3
|
+
* Fixed collector sort block older Rubies compatibility
|
4
|
+
|
5
|
+
# 1.2.16
|
6
|
+
|
7
|
+
* ignoring disc devices via regexp
|
8
|
+
|
9
|
+
# 1.2.15
|
10
|
+
|
11
|
+
* Update gemspec
|
12
|
+
|
1
13
|
# 1.2.14
|
2
14
|
|
3
15
|
* Disk symlink alias uses full path
|
@@ -64,7 +76,7 @@
|
|
64
76
|
Performance related:
|
65
77
|
|
66
78
|
* Using `Dir#glob` vs. `Dir#foreach`
|
67
|
-
* Using `File#read` vs. `cat FILE`.
|
79
|
+
* Using `File#read` vs. `cat FILE`.
|
68
80
|
* Removing commented out and unused elements from `SysLite::ProcTable`
|
69
81
|
* Removed method_missing logic in `Processes::Process` to access the `ProcTableStruct`
|
70
82
|
* `Disk` added caching logic via a `@option[:ttl]` to execute slow system calls at a lower interval (ex: ev 60 seconds)
|
@@ -100,7 +112,7 @@ Performance related:
|
|
100
112
|
|
101
113
|
## 0.0.9.0
|
102
114
|
|
103
|
-
* Reporting process memory in MB, not in page size.
|
115
|
+
* Reporting process memory in MB, not in page size.
|
104
116
|
* When determining process cpu usage, caching number of processors.
|
105
117
|
|
106
118
|
## 0.0.8.9
|
@@ -20,7 +20,7 @@ module ServerMetrics
|
|
20
20
|
@options = options
|
21
21
|
@data={}
|
22
22
|
@memory={}
|
23
|
-
@collector_id = self.class.name+'-'+@options.to_a.sort_by { |a| a.first }.flatten.join('-')
|
23
|
+
@collector_id = self.class.name+'-'+@options.to_a.sort_by { |a| a.first.to_s }.flatten.join('-')
|
24
24
|
@error=nil
|
25
25
|
end
|
26
26
|
|
@@ -11,14 +11,14 @@ class ServerMetrics::Disk < ServerMetrics::MultiCollector
|
|
11
11
|
# forcing English for parsing
|
12
12
|
ENV['LC_ALL'] = 'C'
|
13
13
|
ENV['LANG'] = 'C'
|
14
|
-
|
14
|
+
|
15
15
|
devices.each do |device|
|
16
16
|
get_sizes(device) # does its own reporting
|
17
17
|
get_io_stats(device[:name]) if linux? # does its own reporting
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
21
|
-
# System calls are slow. Read once every minute and not on every innvocation.
|
20
|
+
|
21
|
+
# System calls are slow. Read once every minute and not on every innvocation.
|
22
22
|
def df_output
|
23
23
|
if @last_df_output.nil? or @last_df_output < (Time.now-@options[:ttl].to_i*60)
|
24
24
|
@last_df_output = Time.now
|
@@ -27,14 +27,19 @@ class ServerMetrics::Disk < ServerMetrics::MultiCollector
|
|
27
27
|
@df_output
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
31
|
-
# System calls are slow. Read once every minute and not on every innvocation.
|
30
|
+
|
31
|
+
# System calls are slow. Read once every minute and not on every innvocation.
|
32
32
|
def devices
|
33
33
|
if @devices.nil? or @last_devices_output < (Time.now-@options[:ttl].to_i*60)
|
34
34
|
@last_devices_output = Time.now
|
35
35
|
# if running inside a docker container, we want the devices mounted on the host
|
36
36
|
mount_output = dockerized_agent? ? `cat /host/etc/mtab` : `mount`
|
37
|
-
@devices = mount_output.split("\n").grep(/^\/dev/).map{|l| {:name => l.split.first, :aliases => []}} # any device that starts with /dev
|
37
|
+
# @devices = mount_output.split("\n").grep(/^\/dev/).map{|l| {:name => l.split.first, :aliases => []}} # any device that starts with /dev
|
38
|
+
@unfiltered_devices = mount_output.split("\n").grep(/^\/dev/).reject do |e|
|
39
|
+
regex = Regexp.new(@options[:ignored_devices]) rescue next
|
40
|
+
!!e.match(regex)
|
41
|
+
end # any device that starts with /dev
|
42
|
+
@devices = @unfiltered_devices.map{|l| {:name => l.split.first, :aliases => [], :mounted_on => l.split[2]}}
|
38
43
|
if dockerized_agent?
|
39
44
|
`blkid`.split("\n").grep(/ UUID=/).each do |device|
|
40
45
|
name = device.match(/\A[^\:]*/)[0]
|
@@ -58,21 +63,23 @@ class ServerMetrics::Disk < ServerMetrics::MultiCollector
|
|
58
63
|
# called from build_report for each device
|
59
64
|
def get_sizes(device)
|
60
65
|
header_line=df_output.first
|
61
|
-
headers = header_line.split(/\s+/,6) # limit to 6 columns - last column is "mounted on"
|
62
|
-
parsed_lines=[] # Each line will look like {"%iused" => "38%","Avail" => "289Gi", "Capacity=> "38%", "Filesystem"=> "/dev/disk0s2","Mounted => "/", "Size" => "465Gi", "Used" => "176Gi", "ifree" => "75812051", "iused" => "46116178"}
|
66
|
+
headers = header_line.split(/\s+/,6).map(&:chomp) # limit to 6 columns - last column is "mounted on"
|
67
|
+
parsed_lines=[] # Each line will look like {"%iused" => "38%","Avail" => "289Gi", "Capacity=> "38%", "Filesystem"=> "/dev/disk0s2","Mounted on"=> "/", "Size" => "465Gi", "Used" => "176Gi", "ifree" => "75812051", "iused" => "46116178"}
|
63
68
|
|
64
69
|
df_output[1..df_output.size-1].each do |line|
|
65
|
-
values=line.split(/\s+/,6)
|
66
|
-
parsed_lines<<Hash[*headers.zip(values).flatten]
|
70
|
+
values=line.split(/\s+/,6).map(&:chomp)
|
71
|
+
parsed_lines << Hash[*headers.zip(values).flatten]
|
67
72
|
end
|
68
73
|
|
69
74
|
# select the right line
|
70
75
|
hash = parsed_lines.find {|l| l["Filesystem"] == device[:name]}
|
71
76
|
# device wasn't found. check device aliases
|
72
77
|
if hash.nil?
|
73
|
-
hash = parsed_lines.find
|
78
|
+
hash = parsed_lines.find do |l|
|
79
|
+
device[:aliases].include?(l["Filesystem"]) || device[:mounted_on] == l["Mounted on"]
|
80
|
+
end
|
74
81
|
end
|
75
|
-
# device wasn't found. could be a mapped device. skip over.
|
82
|
+
# device wasn't found. could be a mapped device. skip over.
|
76
83
|
return if hash.nil?
|
77
84
|
result = {}
|
78
85
|
hash.each_pair do |key,value|
|
data/server_metrics.gemspec
CHANGED
@@ -7,10 +7,10 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "server_metrics"
|
8
8
|
spec.version = ServerMetrics::VERSION
|
9
9
|
spec.authors = ["Andre Lewis", "Derek Haynes", "Matt Rose"]
|
10
|
-
spec.email = ["support@
|
10
|
+
spec.email = ["support.server@pingdom.com"]
|
11
11
|
spec.description = %q{Collect information about disks, memory, CPU, networks, and processes}
|
12
12
|
spec.summary = %q{Used by the Scout agent, but also available as a stand-lone gem}
|
13
|
-
spec.homepage = "http://
|
13
|
+
spec.homepage = "http://server.pingdom.com"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: server_metrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andre Lewis
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2018-03-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -112,7 +112,7 @@ dependencies:
|
|
112
112
|
version: '2.14'
|
113
113
|
description: Collect information about disks, memory, CPU, networks, and processes
|
114
114
|
email:
|
115
|
-
- support@
|
115
|
+
- support.server@pingdom.com
|
116
116
|
executables: []
|
117
117
|
extensions: []
|
118
118
|
extra_rdoc_files: []
|
@@ -150,7 +150,7 @@ files:
|
|
150
150
|
- test/test_basics.rb
|
151
151
|
- test/test_helper.rb
|
152
152
|
- test/test_with_fixtures.rb
|
153
|
-
homepage: http://
|
153
|
+
homepage: http://server.pingdom.com
|
154
154
|
licenses:
|
155
155
|
- MIT
|
156
156
|
metadata: {}
|