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 +4 -4
- data/README.rdoc +5 -1
- data/lib/newrelic_f5_plugin.rb +1 -0
- data/lib/newrelic_f5_plugin/agent.rb +6 -1
- data/lib/newrelic_f5_plugin/device.rb +1 -44
- data/lib/newrelic_f5_plugin/global_ssl.rb +308 -0
- data/newrelic_f5_plugin.gemspec +3 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 648f7f011c587d8cfa13ce4c329804acdbbc6892
|
4
|
+
data.tar.gz: ffceb3d6f017b737c13349c671c044dbb4d79ba4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22d37b9b929e8d6c767e6cbe871d53ec2e536a0bbb2a37586253cc2ee3c98883a33ae0b1f144303b1b937a37bce39b0e6c305a006af47229328fef83c5e80158
|
7
|
+
data.tar.gz: ef2b5a0c86d550a32f5690e9eedcb11fabbe57acfb7b4177b6a51db26e0cb2c78d418d07b46341d597a50ef92e65315814ab197a2a0727406e5f259d4b903608
|
data/README.rdoc
CHANGED
@@ -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
|
|
data/lib/newrelic_f5_plugin.rb
CHANGED
@@ -4,7 +4,7 @@ require 'newrelic_plugin'
|
|
4
4
|
require 'snmp'
|
5
5
|
|
6
6
|
module NewRelic::F5Plugin
|
7
|
-
VERSION = '1.0.
|
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
|
+
|
data/newrelic_f5_plugin.gemspec
CHANGED
@@ -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
|
-
s.date = '2014-10-
|
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.
|
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-
|
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
|