brigade-monitor 0.4.0 → 0.4.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 541b7e15bc3c7d4fcf2d1643e457bc5c3399d725
4
- data.tar.gz: ba6ce1e6c378812cd9651888ef7340d5c29035f2
3
+ metadata.gz: 42913c81a6ba2f818d06b683394046a5091d36f4
4
+ data.tar.gz: 31e2ab33dcf8c8aa0e78dd8a80ee92065ab2c034
5
5
  SHA512:
6
- metadata.gz: 6b63dc9d5d2fed69b21527d410df93a34b335f8ee3e71cf8f1ad5f8ba4ac91d82488c477ab7b0d2fe226ec0a279fd3dd8eba368579e1c519ce5e8d78f8361d76
7
- data.tar.gz: 0eb27cdfaaf50951a5dd6b4f242469a1a31bf7d1995a91a290ae03ea08ed6c8f496c29ccb00f999ff8b07fa54eec413e91e2ac1b2b30066dd42cc82873003dc1
6
+ metadata.gz: ab39369247971c1dc5a2132f9314f9de68b63fa85cf77fb24e6b0fd8a654da11808baa36ce1b8a9ce7fcacfa62e39ef3dc2e2b4925298a6f54b136a2d7b2c7d7
7
+ data.tar.gz: d7ba654623249a30bdad40f1e6e86e526e79e49c5836b1865266408951e0d6f658582f6a986915bb7614b9a33d08a3b772426a04f0dd2289a4fa5577c160393b
@@ -1,3 +1,4 @@
1
1
  require 'brigade/monitor/api'
2
+ require 'brigade/monitor/fetcher'
2
3
  require 'brigade/monitor/monitor'
3
4
  require 'brigade/monitor/version'
@@ -0,0 +1,195 @@
1
+ module Brigade
2
+ module Monitor
3
+
4
+ class Fetcher
5
+
6
+ def initialize(client, name, logger)
7
+ @client = client
8
+ @name = name
9
+ @log = logger
10
+ end
11
+
12
+ def get_update
13
+ version = @client.version
14
+ summary = @client.summary
15
+ devs = @client.devs
16
+ pools = @client.pools
17
+
18
+ # XXX check status replies on each command?
19
+
20
+ update = host_info(summary, version)
21
+
22
+ devs.body.each do |dev|
23
+ if dev.has_key? 'GPU'
24
+ update[:gpus] << gpu_info(dev)
25
+ elsif dev.has_key? 'ASC'
26
+ update[:asics] << asic_info(dev)
27
+ elsif dev.has_key? 'PGA'
28
+ update[:fpgas] << fpga_info(dev)
29
+ else
30
+ @log.warn("Skipped unknown device: #{dev}")
31
+ end
32
+ end
33
+
34
+ pools.body.each do |pool|
35
+ update[:pools] << pool_info(pool)
36
+ end
37
+
38
+ @log.debug("Built update: #{update}")
39
+ update
40
+ end
41
+
42
+ private
43
+
44
+ def host_info(summary, version)
45
+ sum = summary.body[0]
46
+ ver = version.body[0]
47
+ {
48
+ host: @name,
49
+ uptime: sum['Elapsed'],
50
+ mhash_average: sum['MHS av'],
51
+ mhash_current: sum['MHS 5s'],
52
+ found_blocks: sum['Found Blocks'],
53
+ getworks: sum['Getworks'],
54
+ accepted: sum['Accepted'],
55
+ rejected: sum['Rejected'],
56
+ hardware_errors: sum['Hardware Errors'],
57
+ utility: sum['Utility'],
58
+ discarded: sum['Discarded'],
59
+ stale: sum['Stale'],
60
+ get_failures: sum['Get Failures'],
61
+ local_work: sum['Local Work'],
62
+ remote_failures: sum['Remote Failures'],
63
+ network_blocks: sum['Network Blocks'],
64
+ total_mhash: sum['Total MH'],
65
+ work_utility: sum['Work Utility'],
66
+ difficulty_accepted: sum['Difficulty Accepted'],
67
+ difficulty_rejected: sum['Difficulty Rejected'],
68
+ difficulty_stale: sum['Difficulty Stale'],
69
+ best_share: sum['Best Share'],
70
+ device_hardware_percent: sum['Device Hardware%'],
71
+ device_rejected_percent: sum['Device Rejected%'],
72
+ pool_rejected_percent: sum['Pool Rejected%'],
73
+ pool_stale_percent: sum['Pool Stale%'],
74
+ api_version: ver['API'],
75
+ cgminer_version: ver['CGMiner'],
76
+ sgminer_version: ver['SGMiner'],
77
+ asics: [],
78
+ fpgas: [],
79
+ gpus: [],
80
+ pools: [],
81
+ agent: {
82
+ name: 'brigade-monitor-gem',
83
+ platform: RUBY_PLATFORM,
84
+ version: Brigade::Monitor::VERSION
85
+ }
86
+ }
87
+ end
88
+
89
+ def asic_info(device)
90
+ {
91
+ index: device['ASC'],
92
+ temperature: device['Temperature'],
93
+ enabled: device['Enabled'] == 'Y',
94
+ status: device['Status'],
95
+ uptime: device['Device Elapsed'],
96
+ mhash_average: device['MHS av'],
97
+ mhash_current: device['MHS 5s'],
98
+ accepted: device['Accepted'],
99
+ rejected: device['Rejected'],
100
+ hardware_errors: device['Hardware Errors'],
101
+ utility: device['Utility'],
102
+ rejected_percent: device['Device Rejected%'],
103
+ last_share_pool: device['Last Share Pool'],
104
+ last_share_time: device['Last Share Time'],
105
+ total_mhash: device['Total MH'],
106
+ diff1_work: device['Diff1 Work'],
107
+ difficulty_accepted: device['Difficulty Accepted'],
108
+ difficulty_rejected: device['Difficulty Rejected'],
109
+ last_share_difficulty: device['Last Share Difficulty'],
110
+ last_valid_work: device['Last Valid Work'],
111
+ }
112
+ end
113
+
114
+ def fpga_info(device)
115
+ {
116
+ index: device['PGA'],
117
+ temperature: device['Temperature'],
118
+ enabled: device['Enabled'] == 'Y',
119
+ status: device['Status'],
120
+ uptime: device['Device Elapsed'],
121
+ mhash_average: device['MHS av'],
122
+ mhash_current: device['MHS 5s'],
123
+ accepted: device['Accepted'],
124
+ rejected: device['Rejected'],
125
+ hardware_errors: device['Hardware Errors'],
126
+ utility: device['Utility'],
127
+ rejected_percent: device['Device Rejected%'],
128
+ last_share_pool: device['Last Share Pool'],
129
+ last_share_time: device['Last Share Time'],
130
+ total_mhash: device['Total MH'],
131
+ frequency: device['Frequency'],
132
+ diff1_work: device['Diff1 Work'],
133
+ difficulty_accepted: device['Difficulty Accepted'],
134
+ difficulty_rejected: device['Difficulty Rejected'],
135
+ last_share_difficulty: device['Last Share Difficulty'],
136
+ last_valid_work: device['Last Valid Work'],
137
+ }
138
+ end
139
+
140
+ def gpu_info(device)
141
+ {
142
+ index: device['GPU'],
143
+ temperature: device['Temperature'],
144
+ fan_speed: device['Fan Speed'],
145
+ fan_percent: device['Fan Percent'],
146
+ gpu_clock: device['GPU Clock'],
147
+ memory_clock: device['Memory Clock'],
148
+ gpu_voltage: device['GPU Voltage'],
149
+ gpu_activity: device['GPU Activity'],
150
+ powertune: device['Powertune'],
151
+ enabled: device['Enabled'] == 'Y',
152
+ status: device['Status'],
153
+ uptime: device['Device Elapsed'],
154
+ mhash_average: device['MHS av'],
155
+ mhash_current: device['MHS 5s'],
156
+ accepted: device['Accepted'],
157
+ rejected: device['Rejected'],
158
+ hardware_errors: device['Hardware Errors'],
159
+ utility: device['Utility'],
160
+ intensity: device['Intensity'],
161
+ rejected_percent: device['Device Rejected%'],
162
+ last_share_pool: device['Last Share Pool'],
163
+ last_share_time: device['Last Share Time'],
164
+ total_mhash: device['Total MH'],
165
+ diff1_work: device['Diff1 Work'],
166
+ difficulty_accepted: device['Difficulty Accepted'],
167
+ difficulty_rejected: device['Difficulty Rejected'],
168
+ last_share_difficulty: device['Last Share Difficulty'],
169
+ last_valid_work: device['Last Valid Work'],
170
+ }
171
+ end
172
+
173
+ def pool_info(pool)
174
+ {
175
+ index: pool['POOL'],
176
+ url: pool['URL'],
177
+ status: pool['Status'],
178
+ priority: pool['Priority'],
179
+ quota: pool['Quota'],
180
+ longpoll: pool['Long Poll'] == 'Y',
181
+ getworks: pool['Getworks'],
182
+ accepted: pool['Accepted'],
183
+ rejected: pool['Rejected'],
184
+ works: pool['Works'],
185
+ discarded: pool['Discarded'],
186
+ stale: pool['Stale'],
187
+ active: pool['Stratum Active'],
188
+ rejected_percent: pool['Pool Rejected%']
189
+ }
190
+ end
191
+
192
+ end
193
+
194
+ end
195
+ end
@@ -7,7 +7,11 @@ module Brigade
7
7
 
8
8
  def initialize(key, miners, logger)
9
9
  @key = key
10
- @miners = miners
10
+ @miners = miners.map do |m|
11
+ fetcher = Brigade::Monitor::Fetcher.new(m[:client], m[:name], logger)
12
+ { fetcher: fetcher }.merge(m)
13
+ end
14
+ puts @miners.inspect
11
15
  @log = logger
12
16
  end
13
17
 
@@ -22,7 +26,7 @@ module Brigade
22
26
  @log.debug("Beginning miner: #{miner}")
23
27
 
24
28
  begin
25
- updates << get_update(miner)
29
+ updates << miner[:fetcher].get_update
26
30
  rescue Net::OpenTimeout => e
27
31
  @log.warn("Net::OpenTimeout building update for #{miner[:name]} (#{e})")
28
32
  # XXX put something in the update to indicate it barfed
@@ -60,140 +64,6 @@ module Brigade
60
64
  end
61
65
  end
62
66
 
63
- def get_update(miner)
64
- version = miner[:client].version
65
- summary = miner[:client].summary
66
- devs = miner[:client].devs
67
- pools = miner[:client].pools
68
-
69
- # XXX check status replies on each command?
70
-
71
- update = {
72
- host: miner[:name],
73
- uptime: summary.body[0]['Elapsed'],
74
- mhash: summary.body[0]['MHS av'],
75
- rejected_percent: summary.body[0]['Pool Rejected%'],
76
- api_version: version.body[0]['API'],
77
- cgminer_version: version.body[0]['CGMiner'],
78
- sgminer_version: version.body[0]['SGMiner'],
79
- asics: [],
80
- fpgas: [],
81
- gpus: [],
82
- pools: [],
83
- agent: {
84
- name: 'brigade-monitor-gem',
85
- platform: RUBY_PLATFORM,
86
- version: Brigade::Monitor::VERSION
87
- }
88
- }
89
-
90
- devs.body.each do |dev|
91
- if dev.has_key? 'GPU'
92
- update[:gpus] << {
93
- index: dev['GPU'],
94
- temperature: dev['Temperature'],
95
- fan_speed: dev['Fan Speed'],
96
- fan_percent: dev['Fan Percent'],
97
- gpu_clock: dev['GPU Clock'],
98
- memory_clock: dev['Memory Clock'],
99
- gpu_voltage: dev['GPU Voltage'],
100
- gpu_activity: dev['GPU Activity'],
101
- powertune: dev['Powertune'],
102
- enabled: dev['Enabled'] == 'Y',
103
- status: dev['Status'],
104
- uptime: dev['Device Elapsed'],
105
- mhash_average: dev['MHS av'],
106
- mhash_current: dev['MHS 5s'],
107
- accepted: dev['Accepted'],
108
- rejected: dev['Rejected'],
109
- hardware_errors: dev['Hardware Errors'],
110
- utility: dev['Utility'],
111
- intensity: dev['Intensity'],
112
- rejected_percent: dev['Device Rejected%'],
113
- last_share_pool: dev['Last Share Pool'],
114
- last_share_time: dev['Last Share Time'],
115
- total_mhash: dev['Total MH'],
116
- diff1_work: dev['Diff1 Work'],
117
- difficulty_accepted: dev['Difficulty Accepted'],
118
- difficulty_rejected: dev['Difficulty Rejected'],
119
- last_share_difficulty: dev['Last Share Difficulty'],
120
- last_valid_work: dev['Last Valid Work'],
121
- }
122
- elsif dev.has_key? 'ASC'
123
- update[:asics] << {
124
- index: dev['ASC'],
125
- temperature: dev['Temperature'],
126
- enabled: dev['Enabled'] == 'Y',
127
- status: dev['Status'],
128
- uptime: dev['Device Elapsed'],
129
- mhash_average: dev['MHS av'],
130
- mhash_current: dev['MHS 5s'],
131
- accepted: dev['Accepted'],
132
- rejected: dev['Rejected'],
133
- hardware_errors: dev['Hardware Errors'],
134
- utility: dev['Utility'],
135
- rejected_percent: dev['Device Rejected%'],
136
- last_share_pool: dev['Last Share Pool'],
137
- last_share_time: dev['Last Share Time'],
138
- total_mhash: dev['Total MH'],
139
- diff1_work: dev['Diff1 Work'],
140
- difficulty_accepted: dev['Difficulty Accepted'],
141
- difficulty_rejected: dev['Difficulty Rejected'],
142
- last_share_difficulty: dev['Last Share Difficulty'],
143
- last_valid_work: dev['Last Valid Work'],
144
- }
145
- elsif dev.has_key? 'PGA'
146
- update[:fpgas] << {
147
- index: dev['PGA'],
148
- temperature: dev['Temperature'],
149
- enabled: dev['Enabled'] == 'Y',
150
- status: dev['Status'],
151
- uptime: dev['Device Elapsed'],
152
- mhash_average: dev['MHS av'],
153
- mhash_current: dev['MHS 5s'],
154
- accepted: dev['Accepted'],
155
- rejected: dev['Rejected'],
156
- hardware_errors: dev['Hardware Errors'],
157
- utility: dev['Utility'],
158
- rejected_percent: dev['Device Rejected%'],
159
- last_share_pool: dev['Last Share Pool'],
160
- last_share_time: dev['Last Share Time'],
161
- total_mhash: dev['Total MH'],
162
- frequency: dev['Frequency'],
163
- diff1_work: dev['Diff1 Work'],
164
- difficulty_accepted: dev['Difficulty Accepted'],
165
- difficulty_rejected: dev['Difficulty Rejected'],
166
- last_share_difficulty: dev['Last Share Difficulty'],
167
- last_valid_work: dev['Last Valid Work'],
168
- }
169
- else
170
- @log.warn("Skipped unknown device: #{dev}")
171
- end
172
- end
173
-
174
- pools.body.each do |pool|
175
- update[:pools] << {
176
- index: pool['POOL'],
177
- url: pool['URL'],
178
- status: pool['Status'],
179
- priority: pool['Priority'],
180
- quota: pool['Quota'],
181
- longpoll: pool['Long Poll'] == 'Y',
182
- getworks: pool['Getworks'],
183
- accepted: pool['Accepted'],
184
- rejected: pool['Rejected'],
185
- works: pool['Works'],
186
- discarded: pool['Discarded'],
187
- stale: pool['Stale'],
188
- active: pool['Stratum Active'],
189
- rejected_percent: pool['Pool Rejected%']
190
- }
191
- end
192
-
193
- @log.debug("Built update: #{update}")
194
- update
195
- end
196
-
197
67
  end
198
68
 
199
69
  end
@@ -1,5 +1,5 @@
1
1
  module Brigade
2
2
  module Monitor
3
- VERSION = '0.4.0'
3
+ VERSION = '0.4.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brigade-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Veys
@@ -169,6 +169,7 @@ files:
169
169
  - brigade-monitor.gemspec
170
170
  - lib/brigade/monitor.rb
171
171
  - lib/brigade/monitor/api.rb
172
+ - lib/brigade/monitor/fetcher.rb
172
173
  - lib/brigade/monitor/monitor.rb
173
174
  - lib/brigade/monitor/version.rb
174
175
  - sample-config.yaml