newrelic_f5_plugin 1.0.17 → 1.0.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 279793e5c1936f90db19c0ffd8842a0f7dc99760
4
- data.tar.gz: ebbbd91dac4e565184e5d45562ff23ad428bdbea
3
+ metadata.gz: 648f7f011c587d8cfa13ce4c329804acdbbc6892
4
+ data.tar.gz: ffceb3d6f017b737c13349c671c044dbb4d79ba4
5
5
  SHA512:
6
- metadata.gz: e3af625664d8d7c549203c1a03cc7ece47178f0900b0085c8df3c6fff98e9d88e982a6029d987c9388d53f3454becc449d918ad18b90e16a945dfeed1f7f5f46
7
- data.tar.gz: 390c1550dce277a0bc2f46458a5fb67215f1c801de7a85a19313a0e727073026ceca796d71e3df4e47955f3c606f597a2b4c045b3074aa32e0d5a329ed065da1
6
+ metadata.gz: 22d37b9b929e8d6c767e6cbe871d53ec2e536a0bbb2a37586253cc2ee3c98883a33ae0b1f144303b1b937a37bce39b0e6c305a006af47229328fef83c5e80158
7
+ data.tar.gz: ef2b5a0c86d550a32f5690e9eedcb11fabbe57acfb7b4177b6a51db26e0cb2c78d418d07b46341d597a50ef92e65315814ab197a2a0727406e5f259d4b903608
@@ -10,7 +10,6 @@ Device wide Metrics
10
10
  * Throughput (Total, Client side, Server side)
11
11
  * HTTP Requests (Requests/second, HTTP Methods, Status Codes, Versions)
12
12
  * HTTP Compression (Pre/Post broken down by content type)
13
- * SSL Requests/second
14
13
  * TCP Details (Current connections, connection rate, Server/Client side, Wait State)
15
14
  * Node status
16
15
 
@@ -41,6 +40,11 @@ iRule Statistics
41
40
  * Aborts per Second
42
41
  * Average cycles (requires timing enabled on the iRule)
43
42
 
43
+ Global SSL Statistics
44
+ * Requests/second
45
+ * Transactions per Protocol
46
+ * Transactions per Digest
47
+ * Transactions per Key Exchanges
44
48
 
45
49
  == Requirements
46
50
 
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'newrelic_f5_plugin/util'
3
3
  require 'newrelic_f5_plugin/client_ssl'
4
+ require 'newrelic_f5_plugin/global_ssl'
4
5
  require 'newrelic_f5_plugin/device'
5
6
  require 'newrelic_f5_plugin/interfaces'
6
7
  require 'newrelic_f5_plugin/nodes'
@@ -4,7 +4,7 @@ require 'newrelic_plugin'
4
4
  require 'snmp'
5
5
 
6
6
  module NewRelic::F5Plugin
7
- VERSION = '1.0.17'
7
+ VERSION = '1.0.18'
8
8
 
9
9
  # Register and run the agent
10
10
  def self.run
@@ -117,6 +117,11 @@ module NewRelic::F5Plugin
117
117
  @clientssl ||= NewRelic::F5Plugin::ClientSsl.new
118
118
  @clientssl.poll(self, snmp)
119
119
 
120
+ # Collect Global SSL statistics
121
+ NewRelic::PlatformLogger.debug("Collecting Global SSL stats")
122
+ @globalssl ||= NewRelic::F5Plugin::GlobalSsl.new
123
+ @globalssl.poll(self, snmp)
124
+
120
125
  # Cleanup snmp connection
121
126
  snmp.close
122
127
  end
@@ -10,9 +10,6 @@ module NewRelic
10
10
  attr_accessor :snmp_manager
11
11
 
12
12
  # Create the OIDs if they do not exist
13
- OID_SYS_CLIENTSSL_STAT_CUR_CONNS = "1.3.6.1.4.1.3375.2.1.1.2.9.2.0"
14
- OID_SYS_CLIENTSSL_STAT_TOT_COMPAT_CONNS = "1.3.6.1.4.1.3375.2.1.1.2.9.9.0"
15
- OID_SYS_CLIENTSSL_STAT_TOT_NATIVE_CONNS = "1.3.6.1.4.1.3375.2.1.1.2.9.6.0"
16
13
  OID_SYS_HTTP_COMPRESSION_STAT = "1.3.6.1.4.1.3375.2.1.1.2.22"
17
14
  OID_SYS_HTTP_COMPRESSION_STAT_AUDIO_POSTCOMPRESS_BYTES = "#{OID_SYS_HTTP_COMPRESSION_STAT}.24.0"
18
15
  OID_SYS_HTTP_COMPRESSION_STAT_AUDIO_PRECOMPRESS_BYTES = "#{OID_SYS_HTTP_COMPRESSION_STAT}.23.0"
@@ -56,9 +53,6 @@ module NewRelic
56
53
  OID_SYS_HTTP_STAT_V11_RESP = "#{OID_SYS_HTTP_STAT}.15.0"
57
54
  OID_SYS_HTTP_STAT_V9_REQS = "#{OID_SYS_HTTP_STAT}.10.0"
58
55
  OID_SYS_HTTP_STAT_V9_RESP = "#{OID_SYS_HTTP_STAT}.13.0"
59
- OID_SYS_SERVERSSL_STAT_CUR_CONNS = "1.3.6.1.4.1.3375.2.1.1.2.10.2.0"
60
- OID_SYS_SERVERSSL_STAT_TOT_COMPAT_CONNS = "1.3.6.1.4.1.3375.2.1.1.2.10.9.0"
61
- OID_SYS_SERVERSSL_STAT_TOT_NATIVE_CONNS = "1.3.6.1.4.1.3375.2.1.1.2.10.6.0"
62
56
  OID_SYS_STAT = "1.3.6.1.4.1.3375.2.1.1.2.1"
63
57
  OID_SYS_STAT_CLIENT_BYTES_IN = "#{OID_SYS_STAT}.3.0"
64
58
  OID_SYS_STAT_CLIENT_BYTES_OUT = "#{OID_SYS_STAT}.5.0"
@@ -132,9 +126,6 @@ module NewRelic
132
126
  system_http_compression = get_http_compression
133
127
  system_http_compression.each_key { |m| agent.report_counter_metric m, "bits/sec", system_http_compression[m] } unless system_http_compression.nil?
134
128
 
135
- system_ssl = get_ssl
136
- system_ssl.each_key { |m| agent.report_counter_metric m, "trans/sec", system_ssl[m] } unless system_ssl.nil?
137
-
138
129
  system_tcp_conns = get_tcp_connections
139
130
  system_tcp_conns.each_key { |m| agent.report_metric m, "conn", system_tcp_conns[m] } unless system_tcp_conns.nil?
140
131
 
@@ -181,17 +172,13 @@ module NewRelic
181
172
  snmp = snmp_manager unless snmp
182
173
 
183
174
  if snmp
184
- res = gather_snmp_metrics_array([OID_SYS_STAT_CLIENT_CUR_CONNS, OID_SYS_STAT_SERVER_CUR_CONNS,
185
- OID_SYS_CLIENTSSL_STAT_CUR_CONNS, OID_SYS_SERVERSSL_STAT_CUR_CONNS],
186
- snmp)
175
+ res = gather_snmp_metrics_array([OID_SYS_STAT_CLIENT_CUR_CONNS, OID_SYS_STAT_SERVER_CUR_CONNS], snmp)
187
176
 
188
177
  # Bail out if we didn't get anything
189
178
  return metrics if res.empty?
190
179
 
191
180
  metrics["Connections/Current/Client"] = res[0]
192
181
  metrics["Connections/Current/Server"] = res[1]
193
- metrics["Connections/Current/Client SSL"] = res[2]
194
- metrics["Connections/Current/Server SSL"] = res[3]
195
182
  end
196
183
 
197
184
  return metrics
@@ -366,36 +353,6 @@ module NewRelic
366
353
 
367
354
 
368
355
 
369
- #
370
- # SSL Stats in trans/sec
371
- #
372
- def get_ssl(snmp = nil)
373
- metrics = { }
374
- snmp = snmp_manager unless snmp
375
-
376
- if snmp
377
- res = gather_snmp_metrics_array([OID_SYS_CLIENTSSL_STAT_TOT_NATIVE_CONNS, OID_SYS_CLIENTSSL_STAT_TOT_COMPAT_CONNS,
378
- OID_SYS_SERVERSSL_STAT_TOT_NATIVE_CONNS, OID_SYS_SERVERSSL_STAT_TOT_COMPAT_CONNS],
379
- snmp)
380
-
381
- # Bail out if we didn't get anything
382
- return metrics if res.empty?
383
-
384
- vals = res.map { |i| i.to_i }
385
-
386
- metrics["SSL/Global/Client/Native"] = vals[0]
387
- metrics["SSL/Global/Client/Compat"] = vals[1]
388
- metrics["SSL/Global/Server/Native"] = vals[2]
389
- metrics["SSL/Global/Server/Compat"] = vals[3]
390
- metrics["SSL/Global/Total/Client"] = (vals[0] + vals[1])
391
- metrics["SSL/Global/Total/Server"] = (vals[2] + vals[3])
392
- metrics["SSL/Global/Total/All"] = vals.inject(0) { |t,i| t + i }
393
- end
394
-
395
- return metrics
396
- end
397
-
398
-
399
356
  #
400
357
  # Gather TCP Statistics in conn
401
358
  #
@@ -0,0 +1,308 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'newrelic_plugin'
4
+ require 'snmp'
5
+
6
+ module NewRelic
7
+ module F5Plugin
8
+
9
+ class GlobalSsl
10
+ attr_accessor :snmp_manager
11
+
12
+ # Create the OIDs if they do not exist
13
+ OID_SYS_GLOBAL_STATS = "1.3.6.1.4.1.3375.2.1.1.2"
14
+ OID_SYS_GLOBAL_CLIENT_SSL_STAT = "#{OID_SYS_GLOBAL_STATS}.9"
15
+ OID_SYS_GLOBAL_SERVER_SSL_STAT = "#{OID_SYS_GLOBAL_STATS}.10"
16
+
17
+ # Client-side Connections
18
+ OID_SYS_CLIENTSSL_STAT_CUR_CONNS = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.2.0"
19
+ OID_SYS_CLIENTSSL_STAT_TOT_COMPAT_CONNS = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.9.0"
20
+ OID_SYS_CLIENTSSL_STAT_TOT_NATIVE_CONNS = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.6.0"
21
+ # Server-side Connections
22
+ OID_SYS_SERVERSSL_STAT_CUR_CONNS = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.2.0"
23
+ OID_SYS_SERVERSSL_STAT_TOT_COMPAT_CONNS = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.9.0"
24
+ OID_SYS_SERVERSSL_STAT_TOT_NATIVE_CONNS = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.6.0"
25
+
26
+ # Client-side Protocols
27
+ OID_SYS_CLIENTSSL_STAT_SSLV2 = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.32.0"
28
+ OID_SYS_CLIENTSSL_STAT_SSLV3 = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.33.0"
29
+ OID_SYS_CLIENTSSL_STAT_TLSV1 = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.34.0"
30
+ # Server-side Protocols
31
+ OID_SYS_SERVERSSL_STAT_SSLV2 = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.32.0"
32
+ OID_SYS_SERVERSSL_STAT_SSLV3 = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.33.0"
33
+ OID_SYS_SERVERSSL_STAT_TLSV1 = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.34.0"
34
+
35
+ # Client-side Key Exchanges
36
+ OID_SYS_CLIENTSSL_STAT_ADH_KEYXCHG = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.35.0"
37
+ OID_SYS_CLIENTSSL_STAT_DHRSA_KEYXCHG = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.37.0"
38
+ OID_SYS_CLIENTSSL_STAT_RSA_KEYXCHG = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.40.0"
39
+ OID_SYS_CLIENTSSL_STAT_EDHRSA_KEYXCHG = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.51.0"
40
+ # Server-side Key Exchanges
41
+ OID_SYS_SERVERSSL_STAT_ADH_KEYXCHG = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.35.0"
42
+ OID_SYS_SERVERSSL_STAT_DHRSA_KEYXCHG = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.37.0"
43
+ OID_SYS_SERVERSSL_STAT_RSA_KEYXCHG = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.40.0"
44
+ OID_SYS_SERVERSSL_STAT_EDHRSA_KEYXCHG = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.51.0"
45
+
46
+ # Client-side Bulk
47
+ OID_SYS_CLIENTSSL_STAT_NULL_BULK = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.41.0"
48
+ OID_SYS_CLIENTSSL_STAT_AES_BULK = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.42.0"
49
+ OID_SYS_CLIENTSSL_STAT_DES_BULK = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.43.0"
50
+ OID_SYS_CLIENTSSL_STAT_IDEA_BULK = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.44.0"
51
+ OID_SYS_CLIENTSSL_STAT_RC2_BULK = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.45.0"
52
+ OID_SYS_CLIENTSSL_STAT_RC4_BULK = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.46.0"
53
+ # Server-side Bulk
54
+ OID_SYS_SERVERSSL_STAT_NULL_BULK = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.41.0"
55
+ OID_SYS_SERVERSSL_STAT_AES_BULK = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.42.0"
56
+ OID_SYS_SERVERSSL_STAT_DES_BULK = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.43.0"
57
+ OID_SYS_SERVERSSL_STAT_IDEA_BULK = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.44.0"
58
+ OID_SYS_SERVERSSL_STAT_RC2_BULK = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.45.0"
59
+ OID_SYS_SERVERSSL_STAT_RC4_BULK = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.46.0"
60
+
61
+ # Client-side Digests
62
+ OID_SYS_CLIENTSSL_STAT_NULL_DIGEST = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.47.0"
63
+ OID_SYS_CLIENTSSL_STAT_MD5_DIGEST = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.48.0"
64
+ OID_SYS_CLIENTSSL_STAT_SHA_DIGEST = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.49.0"
65
+ OID_SYS_CLIENTSSL_STAT_NOTSSL = "#{OID_SYS_GLOBAL_CLIENT_SSL_STAT}.50.0"
66
+ # Server-side Digests
67
+ OID_SYS_SERVERSSL_STAT_NULL_DIGEST = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.47.0"
68
+ OID_SYS_SERVERSSL_STAT_MD5_DIGEST = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.48.0"
69
+ OID_SYS_SERVERSSL_STAT_SHA_DIGEST = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.49.0"
70
+ OID_SYS_SERVERSSL_STAT_NOTSSL = "#{OID_SYS_GLOBAL_SERVER_SSL_STAT}.50.0"
71
+
72
+
73
+
74
+ #
75
+ # Init
76
+ #
77
+ def initialize(snmp = nil)
78
+ if snmp
79
+ @snmp_manager = snmp
80
+ else
81
+ @snmp_manager = nil
82
+ end
83
+ end
84
+
85
+
86
+
87
+ #
88
+ # Perform polling and reportings of metrics
89
+ #
90
+ def poll(agent, snmp)
91
+ @snmp_manager = snmp
92
+
93
+ ssl_total_connections = get_connections
94
+ ssl_total_connections.each_key { |m| agent.report_metric m, "conn", ssl_total_connections[m] } unless ssl_total_connections.nil?
95
+
96
+ ssl_conns = get_ssl_conns
97
+ ssl_conns.each_key { |m| agent.report_counter_metric m, "trans/sec", ssl_conns[m] } unless ssl_conns.nil?
98
+
99
+ ssl_conns = get_ssl_conns
100
+ ssl_conns.each_key { |m| agent.report_counter_metric m, "trans/sec", ssl_conns[m] } unless ssl_conns.nil?
101
+
102
+ ssl_protocols = get_ssl_protocols
103
+ ssl_protocols.each_key { |m| agent.report_counter_metric m, "trans/sec", ssl_protocols[m] } unless ssl_protocols.nil?
104
+
105
+ ssl_key_exchanges = get_ssl_key_exchanges
106
+ ssl_key_exchanges.each_key { |m| agent.report_counter_metric m, "trans/sec", ssl_key_exchanges[m] } unless ssl_key_exchanges.nil?
107
+
108
+ ssl_bulk = get_ssl_bulk
109
+ ssl_bulk.each_key { |m| agent.report_counter_metric m, "trans/sec", ssl_bulk[m] } unless ssl_bulk.nil?
110
+
111
+ ssl_digests = get_ssl_digests
112
+ ssl_digests.each_key { |m| agent.report_counter_metric m, "trans/sec", ssl_digests[m] } unless ssl_digests.nil?
113
+ end
114
+
115
+
116
+
117
+ #
118
+ # Gather Global connection related metrics and report them in conn
119
+ #
120
+ def get_connections(snmp = nil)
121
+ metrics = { }
122
+ snmp = snmp_manager unless snmp
123
+
124
+ if snmp
125
+ res = gather_snmp_metrics_array([ OID_SYS_CLIENTSSL_STAT_CUR_CONNS, OID_SYS_SERVERSSL_STAT_CUR_CONNS], snmp)
126
+
127
+ # Bail out if we didn't get anything
128
+ return metrics if res.empty?
129
+
130
+ metrics["Connections/Current/Client SSL"] = res[0]
131
+ metrics["Connections/Current/Server SSL"] = res[1]
132
+ end
133
+
134
+ return metrics
135
+ end
136
+
137
+
138
+
139
+ #
140
+ # Global SSL Connection Stats in trans/sec
141
+ #
142
+ def get_ssl_conns(snmp = nil)
143
+ metrics = { }
144
+ snmp = snmp_manager unless snmp
145
+
146
+ if snmp
147
+ res = gather_snmp_metrics_array([OID_SYS_CLIENTSSL_STAT_TOT_NATIVE_CONNS, OID_SYS_CLIENTSSL_STAT_TOT_COMPAT_CONNS,
148
+ OID_SYS_SERVERSSL_STAT_TOT_NATIVE_CONNS, OID_SYS_SERVERSSL_STAT_TOT_COMPAT_CONNS],
149
+ snmp)
150
+
151
+ # Bail out if we didn't get anything
152
+ return metrics if res.empty?
153
+
154
+ vals = res.map { |i| i.to_i }
155
+
156
+ metrics["SSL/Global/Client/Native"] = vals[0]
157
+ metrics["SSL/Global/Client/Compat"] = vals[1]
158
+ metrics["SSL/Global/Server/Native"] = vals[2]
159
+ metrics["SSL/Global/Server/Compat"] = vals[3]
160
+ metrics["SSL/Global/Total/Client"] = (vals[0] + vals[1])
161
+ metrics["SSL/Global/Total/Server"] = (vals[2] + vals[3])
162
+ metrics["SSL/Global/Total/All"] = vals.inject(0) { |t,i| t + i }
163
+ end
164
+
165
+ return metrics
166
+ end
167
+
168
+
169
+
170
+ #
171
+ # Global SSL Protocol Stats in trans/sec
172
+ #
173
+ def get_ssl_protocols(snmp = nil)
174
+ metrics = { }
175
+ snmp = snmp_manager unless snmp
176
+
177
+ if snmp
178
+
179
+ res = gather_snmp_metrics_array([OID_SYS_CLIENTSSL_STAT_SSLV2, OID_SYS_CLIENTSSL_STAT_SSLV3, OID_SYS_CLIENTSSL_STAT_TLSV1,
180
+ OID_SYS_SERVERSSL_STAT_SSLV2, OID_SYS_SERVERSSL_STAT_SSLV3, OID_SYS_SERVERSSL_STAT_TLSV1],
181
+ snmp)
182
+
183
+ # Bail out if we didn't get anything
184
+ return metrics if res.empty?
185
+
186
+ vals = res.map { |i| i.to_i }
187
+
188
+ metrics["SSL/Global/Protocol/Client/SSLv2"] = vals[0]
189
+ metrics["SSL/Global/Protocol/Client/SSLv3"] = vals[1]
190
+ metrics["SSL/Global/Protocol/Client/TLSv1"] = vals[2]
191
+ metrics["SSL/Global/Protocol/Server/SSLv2"] = vals[3]
192
+ metrics["SSL/Global/Protocol/Server/SSLv3"] = vals[4]
193
+ metrics["SSL/Global/Protocol/Server/TLSv1"] = vals[5]
194
+ end
195
+
196
+ return metrics
197
+ end
198
+
199
+
200
+
201
+ #
202
+ # Global SSL Key Exchanges Stats in trans/sec
203
+ #
204
+ def get_ssl_key_exchanges(snmp = nil)
205
+ metrics = { }
206
+ snmp = snmp_manager unless snmp
207
+
208
+ if snmp
209
+
210
+ res = gather_snmp_metrics_array([OID_SYS_CLIENTSSL_STAT_ADH_KEYXCHG, OID_SYS_CLIENTSSL_STAT_DHRSA_KEYXCHG, OID_SYS_CLIENTSSL_STAT_RSA_KEYXCHG, OID_SYS_CLIENTSSL_STAT_EDHRSA_KEYXCHG,
211
+ OID_SYS_SERVERSSL_STAT_ADH_KEYXCHG, OID_SYS_SERVERSSL_STAT_DHRSA_KEYXCHG, OID_SYS_SERVERSSL_STAT_RSA_KEYXCHG, OID_SYS_SERVERSSL_STAT_EDHRSA_KEYXCHG],
212
+ snmp)
213
+
214
+ # Bail out if we didn't get anything
215
+ return metrics if res.empty?
216
+
217
+ vals = res.map { |i| i.to_i }
218
+
219
+ metrics["SSL/Global/KeyExchange/Client/Adh"] = vals[0]
220
+ metrics["SSL/Global/KeyExchange/Client/DhRSA"] = vals[1]
221
+ metrics["SSL/Global/KeyExchange/Client/RSA"] = vals[2]
222
+ metrics["SSL/Global/KeyExchange/Client/EdhRsa"] = vals[3]
223
+ metrics["SSL/Global/KeyExchange/Server/Adh"] = vals[4]
224
+ metrics["SSL/Global/KeyExchange/Server/DhRSA"] = vals[5]
225
+ metrics["SSL/Global/KeyExchange/Server/RSA"] = vals[6]
226
+ metrics["SSL/Global/KeyExchange/Server/EdhRsa"] = vals[7]
227
+ end
228
+
229
+ return metrics
230
+ end
231
+
232
+
233
+
234
+ #
235
+ # Global SSL Bulk Stats in trans/sec
236
+ #
237
+ def get_ssl_bulk(snmp = nil)
238
+ metrics = { }
239
+ snmp = snmp_manager unless snmp
240
+
241
+ if snmp
242
+
243
+ res = gather_snmp_metrics_array([OID_SYS_CLIENTSSL_STAT_NULL_BULK, OID_SYS_CLIENTSSL_STAT_AES_BULK, OID_SYS_CLIENTSSL_STAT_DES_BULK, OID_SYS_CLIENTSSL_STAT_IDEA_BULK,
244
+ OID_SYS_CLIENTSSL_STAT_RC2_BULK, OID_SYS_CLIENTSSL_STAT_RC4_BULK, OID_SYS_SERVERSSL_STAT_NULL_BULK, OID_SYS_SERVERSSL_STAT_AES_BULK,
245
+ OID_SYS_SERVERSSL_STAT_DES_BULK, OID_SYS_SERVERSSL_STAT_IDEA_BULK, OID_SYS_SERVERSSL_STAT_RC2_BULK, OID_SYS_SERVERSSL_STAT_RC4_BULK],
246
+ snmp)
247
+
248
+ # Bail out if we didn't get anything
249
+ return metrics if res.empty?
250
+
251
+ vals = res.map { |i| i.to_i }
252
+
253
+ metrics["SSL/Global/Bulk/Client/Null"] = vals[0]
254
+ metrics["SSL/Global/Bulk/Client/AES"] = vals[1]
255
+ metrics["SSL/Global/Bulk/Client/DES"] = vals[2]
256
+ metrics["SSL/Global/Bulk/Client/IDEA"] = vals[3]
257
+ metrics["SSL/Global/Bulk/Client/RC2"] = vals[4]
258
+ metrics["SSL/Global/Bulk/Client/RC4"] = vals[5]
259
+
260
+ metrics["SSL/Global/Bulk/Server/Null"] = vals[6]
261
+ metrics["SSL/Global/Bulk/Server/AES"] = vals[7]
262
+ metrics["SSL/Global/Bulk/Server/DES"] = vals[8]
263
+ metrics["SSL/Global/Bulk/Server/IDEA"] = vals[9]
264
+ metrics["SSL/Global/Bulk/Server/RC2"] = vals[10]
265
+ metrics["SSL/Global/Bulk/Server/RC4"] = vals[11]
266
+ end
267
+
268
+ return metrics
269
+ end
270
+
271
+
272
+
273
+ #
274
+ # Global SSL Digest Stats in trans/sec
275
+ #
276
+ def get_ssl_digests(snmp = nil)
277
+ metrics = { }
278
+ snmp = snmp_manager unless snmp
279
+
280
+ if snmp
281
+
282
+ res = gather_snmp_metrics_array([OID_SYS_CLIENTSSL_STAT_NULL_DIGEST, OID_SYS_CLIENTSSL_STAT_MD5_DIGEST, OID_SYS_CLIENTSSL_STAT_SHA_DIGEST, OID_SYS_CLIENTSSL_STAT_NOTSSL,
283
+ OID_SYS_SERVERSSL_STAT_NULL_DIGEST, OID_SYS_SERVERSSL_STAT_MD5_DIGEST, OID_SYS_SERVERSSL_STAT_SHA_DIGEST, OID_SYS_SERVERSSL_STAT_NOTSSL],
284
+ snmp)
285
+
286
+ # Bail out if we didn't get anything
287
+ return metrics if res.empty?
288
+
289
+ vals = res.map { |i| i.to_i }
290
+
291
+ metrics["SSL/Global/Digest/Client/Null"] = vals[0]
292
+ metrics["SSL/Global/Digest/Client/MD5"] = vals[1]
293
+ metrics["SSL/Global/Digest/Client/SHA"] = vals[2]
294
+ metrics["SSL/Global/Digest/Client/NotSSL"] = vals[3]
295
+ metrics["SSL/Global/Digest/Server/Null"] = vals[4]
296
+ metrics["SSL/Global/Digest/Server/MD5"] = vals[5]
297
+ metrics["SSL/Global/Digest/Server/SHA"] = vals[6]
298
+ metrics["SSL/Global/Digest/Server/NotSSL"] = vals[7]
299
+ end
300
+
301
+ return metrics
302
+ end
303
+
304
+
305
+ end
306
+ end
307
+ end
308
+
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'newrelic_f5_plugin'
16
- s.version = '1.0.17'
17
- s.date = '2014-10-08'
16
+ s.version = '1.0.18'
17
+ s.date = '2014-10-14'
18
18
  s.rubyforge_project = 'newrelic_f5_plugin'
19
19
  s.licenses = ['MIT']
20
20
 
@@ -78,6 +78,7 @@ to find out how to install and run the plugin agent.
78
78
  lib/newrelic_f5_plugin/agent.rb
79
79
  lib/newrelic_f5_plugin/client_ssl.rb
80
80
  lib/newrelic_f5_plugin/device.rb
81
+ lib/newrelic_f5_plugin/global_ssl.rb
81
82
  lib/newrelic_f5_plugin/interfaces.rb
82
83
  lib/newrelic_f5_plugin/nodes.rb
83
84
  lib/newrelic_f5_plugin/platform.rb
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newrelic_f5_plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.17
4
+ version: 1.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Thurman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-08 00:00:00.000000000 Z
11
+ date: 2014-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: newrelic_plugin
@@ -73,6 +73,7 @@ files:
73
73
  - lib/newrelic_f5_plugin/agent.rb
74
74
  - lib/newrelic_f5_plugin/client_ssl.rb
75
75
  - lib/newrelic_f5_plugin/device.rb
76
+ - lib/newrelic_f5_plugin/global_ssl.rb
76
77
  - lib/newrelic_f5_plugin/interfaces.rb
77
78
  - lib/newrelic_f5_plugin/nodes.rb
78
79
  - lib/newrelic_f5_plugin/platform.rb