newrelic_f5_plugin 1.0.10 → 1.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,17 @@
1
+ * 1.0.12
2
+ - Added Virtual Servers and Pools statistics:
3
+ - Inbound Packets per second
4
+ - Outbound Packets per second
5
+
6
+ * 1.0.11
7
+ - Add Client SSL profile statistics:
8
+ - Current connections
9
+ - Session Cache entries
10
+ - Session Cache hits/sec
11
+ - Session Cache lookups/sec
12
+ - Session Cache invalidations/sec
13
+ - Better logic for skipping metrics that do not exist
14
+
1
15
  * 1.0.10
2
16
  - Add iRule statistics:
3
17
  - Executions per second
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'newrelic_f5_plugin/util'
3
+ require 'newrelic_f5_plugin/client_ssl'
3
4
  require 'newrelic_f5_plugin/device'
4
5
  require 'newrelic_f5_plugin/nodes'
5
6
  require 'newrelic_f5_plugin/pools'
@@ -4,7 +4,7 @@ require 'newrelic_plugin'
4
4
  require 'snmp'
5
5
 
6
6
  module NewRelic::F5Plugin
7
- VERSION = '1.0.10'
7
+ VERSION = '1.0.12'
8
8
 
9
9
  # Register and run the agent
10
10
  def self.run
@@ -127,7 +127,7 @@ module NewRelic::F5Plugin
127
127
  NewRelic::PlatformLogger.debug("Collecting Virtual Server stats")
128
128
  vs = NewRelic::F5Plugin::Virtuals.new snmp
129
129
 
130
- if vs.get_names
130
+ unless vs.get_names.empty?
131
131
  virtual_requests = vs.get_requests
132
132
  virtual_requests.each_key { |m| report_counter_metric m, "req/sec", virtual_requests[m] } unless virtual_requests.nil?
133
133
 
@@ -137,6 +137,12 @@ module NewRelic::F5Plugin
137
137
  virtual_conns_total = vs.get_conns_total
138
138
  virtual_conns_total.each_key { |m| report_counter_metric m, "conn/sec", virtual_conns_total[m] } unless virtual_conns_total.nil?
139
139
 
140
+ virtual_packets_in = vs.get_packets_in
141
+ virtual_packets_in.each_key { |m| report_counter_metric m, "packets/sec", virtual_packets_in[m] } unless virtual_packets_in.nil?
142
+
143
+ virtual_packets_out = vs.get_packets_out
144
+ virtual_packets_out.each_key { |m| report_counter_metric m, "packets/sec", virtual_packets_out[m] } unless virtual_packets_out.nil?
145
+
140
146
  virtual_throughput_in = vs.get_throughput_in
141
147
  virtual_throughput_in.each_key { |m| report_counter_metric m, "bits/sec", virtual_throughput_in[m] } unless virtual_throughput_in.nil?
142
148
 
@@ -153,7 +159,7 @@ module NewRelic::F5Plugin
153
159
  NewRelic::PlatformLogger.debug("Collecting Pool stats")
154
160
  pool = NewRelic::F5Plugin::Pools.new snmp
155
161
 
156
- if pool.get_names
162
+ unless pool.get_names.empty?
157
163
  pool_requests = pool.get_requests
158
164
  pool_requests.each_key { |m| report_counter_metric m, "req/sec", pool_requests[m] } unless pool_requests.nil?
159
165
 
@@ -163,6 +169,12 @@ module NewRelic::F5Plugin
163
169
  pool_conns_total = pool.get_conns_total
164
170
  pool_conns_total.each_key { |m| report_counter_metric m, "conn/sec", pool_conns_total[m] } unless pool_conns_total.nil?
165
171
 
172
+ pool_packets_in = pool.get_packets_in
173
+ pool_packets_in.each_key { |m| report_counter_metric m, "packets/sec", pool_packets_in[m] } unless pool_packets_in.nil?
174
+
175
+ pool_packets_out = pool.get_packets_out
176
+ pool_packets_out.each_key { |m| report_counter_metric m, "packets/sec", pool_packets_out[m] } unless pool_packets_out.nil?
177
+
166
178
  pool_throughput_in = pool.get_throughput_in
167
179
  pool_throughput_in.each_key { |m| report_counter_metric m, "bits/sec", pool_throughput_in[m] } unless pool_throughput_in.nil?
168
180
 
@@ -177,7 +189,7 @@ module NewRelic::F5Plugin
177
189
  NewRelic::PlatformLogger.debug("Collecting iRule stats")
178
190
  rule = NewRelic::F5Plugin::Rules.new snmp
179
191
 
180
- if rule.get_names
192
+ unless rule.get_names.empty?
181
193
  rule_execs = rule.get_executions
182
194
  rule_execs.each_key { |m| report_counter_metric m, "execs/sec", rule_execs[m] } unless rule_execs.nil?
183
195
 
@@ -198,7 +210,7 @@ module NewRelic::F5Plugin
198
210
  NewRelic::PlatformLogger.debug("Collecting SNAT Pool stats")
199
211
  snatpool = NewRelic::F5Plugin::SnatPools.new snmp
200
212
 
201
- if snatpool.get_names
213
+ unless snatpool.get_names.empty?
202
214
  snatpool_conns_max = snatpool.get_conns_max
203
215
  snatpool_conns_max.each_key { |m| report_metric m, "conns", snatpool_conns_max[m] } unless snatpool_conns_max.nil?
204
216
 
@@ -222,6 +234,49 @@ module NewRelic::F5Plugin
222
234
  end
223
235
 
224
236
 
237
+ #
238
+ # Collect Client SSL Profile statistics
239
+ #
240
+ NewRelic::PlatformLogger.debug("Collecting Client SSL Profile stats")
241
+ clientssl = NewRelic::F5Plugin::ClientSsl.new snmp
242
+
243
+ unless clientssl.get_names.empty?
244
+ clientssl_conns_current = clientssl.get_conns_current
245
+ clientssl_conns_current.each_key { |m| report_metric m, "conns", clientssl_conns_current[m] } unless clientssl_conns_current.nil?
246
+
247
+ clientssl_session_cache_current = clientssl.get_session_cache_current
248
+ clientssl_session_cache_current.each_key { |m| report_metric m, "entries", clientssl_session_cache_current[m] } unless clientssl_session_cache_current.nil?
249
+
250
+ clientssl_session_cache_hits = clientssl.get_session_cache_hits
251
+ clientssl_session_cache_hits.each_key { |m| report_counter_metric m, "hits/sec", clientssl_session_cache_hits[m] } unless clientssl_session_cache_hits.nil?
252
+
253
+ clientssl_session_cache_lookups = clientssl.get_session_cache_lookups
254
+ clientssl_session_cache_lookups.each_key { |m| report_counter_metric m, "lookups/sec", clientssl_session_cache_lookups[m] } unless clientssl_session_cache_lookups.nil?
255
+
256
+ NewRelic::PlatformLogger.debug("Calculating Client SSL Profile hit ratios")
257
+ clientssl_hit_ratio = { }
258
+ clientssl_session_cache_hits.each_key do |h|
259
+ key = h.gsub(/^Client SSL Profiles\/Session Cache Hits\//, '')
260
+ l = "Client SSL Profiles/Session Cache Lookups/#{key}"
261
+ p = "Client SSL Profiles/Session Cache Hit Ratio/#{key}"
262
+ unless clientssl_session_cache_lookups[l].nil?
263
+ if clientssl_session_cache_lookups[l].to_f > 0
264
+ clientssl_hit_ratio[p] = (clientssl_session_cache_hits[h].to_f / clientssl_session_cache_lookups[l].to_f) * 100
265
+ else
266
+ clientssl_hit_ratio[p] = 0.0
267
+ end
268
+ end
269
+ end
270
+ clientssl_hit_ratio.each_key { |m| report_metric m, "%", clientssl_hit_ratio[m] } unless clientssl_hit_ratio.empty?
271
+
272
+ clientssl_session_cache_overflows = clientssl.get_session_cache_overflows
273
+ clientssl_session_cache_overflows.each_key { |m| report_counter_metric m, "overflows/sec", clientssl_session_cache_overflows[m] } unless clientssl_session_cache_overflows.nil?
274
+
275
+ clientssl_session_cache_invalidations = clientssl.get_session_cache_invalidations
276
+ clientssl_session_cache_invalidations.each_key { |m| report_counter_metric m, "invld/sec", clientssl_session_cache_invalidations[m] } unless clientssl_session_cache_invalidations.nil?
277
+ end
278
+
279
+
225
280
  #
226
281
  # Cleanup snmp connection
227
282
  #
@@ -0,0 +1,219 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'newrelic_plugin'
4
+ require 'snmp'
5
+
6
+ #LtmClientSslStatEntry
7
+ # ltmClientSslStatName LongDisplayString,
8
+ # ltmClientSslStatCurConns CounterBasedGauge64,
9
+ # ltmClientSslStatMaxConns Counter64,
10
+ # ltmClientSslStatCurNativeConns CounterBasedGauge64,
11
+ # ltmClientSslStatMaxNativeConns Counter64,
12
+ # ltmClientSslStatTotNativeConns Counter64,
13
+ # ltmClientSslStatCurCompatConns CounterBasedGauge64,
14
+ # ltmClientSslStatMaxCompatConns Counter64,
15
+ # ltmClientSslStatTotCompatConns Counter64,
16
+ # ltmClientSslStatEncryptedBytesIn Counter64,
17
+ # ltmClientSslStatEncryptedBytesOut Counter64,
18
+ # ltmClientSslStatDecryptedBytesIn Counter64,
19
+ # ltmClientSslStatDecryptedBytesOut Counter64,
20
+ # ltmClientSslStatRecordsIn Counter64,
21
+ # ltmClientSslStatRecordsOut Counter64,
22
+ # ltmClientSslStatFullyHwAcceleratedConns Counter64,
23
+ # ltmClientSslStatPartiallyHwAcceleratedConns Counter64,
24
+ # ltmClientSslStatNonHwAcceleratedConns Counter64,
25
+ # ltmClientSslStatPrematureDisconnects Counter64,
26
+ # ltmClientSslStatMidstreamRenegotiations Counter64,
27
+ # ltmClientSslStatSessCacheCurEntries CounterBasedGauge64,
28
+ # ltmClientSslStatSessCacheHits Counter64,
29
+ # ltmClientSslStatSessCacheLookups Counter64,
30
+ # ltmClientSslStatSessCacheOverflows Counter64,
31
+ # ltmClientSslStatSessCacheInvalidations Counter64,
32
+ # ltmClientSslStatPeercertValid Counter64,
33
+ # ltmClientSslStatPeercertInvalid Counter64,
34
+ # ltmClientSslStatPeercertNone Counter64,
35
+ # ltmClientSslStatHandshakeFailures Counter64,
36
+ # ltmClientSslStatBadRecords Counter64,
37
+ # ltmClientSslStatFatalAlerts Counter64,
38
+ # ltmClientSslStatSslv2 Counter64,
39
+ # ltmClientSslStatSslv3 Counter64,
40
+ # ltmClientSslStatTlsv1 Counter64,
41
+ # ltmClientSslStatAdhKeyxchg Counter64,
42
+ # ltmClientSslStatDhDssKeyxchg Counter64,
43
+ # ltmClientSslStatDhRsaKeyxchg Counter64,
44
+ # ltmClientSslStatDssKeyxchg Counter64,
45
+ # ltmClientSslStatEdhDssKeyxchg Counter64,
46
+ # ltmClientSslStatRsaKeyxchg Counter64,
47
+ # ltmClientSslStatNullBulk Counter64,
48
+ # ltmClientSslStatAesBulk Counter64,
49
+ # ltmClientSslStatDesBulk Counter64,
50
+ # ltmClientSslStatIdeaBulk Counter64,
51
+ # ltmClientSslStatRc2Bulk Counter64,
52
+ # ltmClientSslStatRc4Bulk Counter64,
53
+ # ltmClientSslStatNullDigest Counter64,
54
+ # ltmClientSslStatMd5Digest Counter64,
55
+ # ltmClientSslStatShaDigest Counter64,
56
+ # ltmClientSslStatNotssl Counter64,
57
+ # ltmClientSslStatEdhRsaKeyxchg Counter64,
58
+ # ltmClientSslStatSecureHandshakes Counter64,
59
+ # ltmClientSslStatInsecureHandshakeAccepts Counter64,
60
+ # ltmClientSslStatInsecureHandshakeRejects Counter64,
61
+ # ltmClientSslStatInsecureRenegotiationRejects Counter64,
62
+ # ltmClientSslStatSniRejects Counter64,
63
+ # ltmClientSslStatTlsv11 Counter64,
64
+ # ltmClientSslStatTlsv12 Counter64,
65
+ # ltmClientSslStatDtlsv1 Counter64
66
+
67
+ module NewRelic
68
+ module F5Plugin
69
+
70
+ class ClientSsl
71
+ attr_accessor :names, :snmp_manager
72
+
73
+ OID_LTM_CLIENT_SSL = "1.3.6.1.4.1.3375.2.2.6.2"
74
+ OID_LTM_CLIENT_SSL_PROFILE_STAT = "#{OID_LTM_CLIENT_SSL}.2"
75
+ OID_LTM_CLIENT_SSL_STAT_ENTRY = "#{OID_LTM_CLIENT_SSL_PROFILE_STAT}.3.1"
76
+ OID_LTM_CLIENT_SSL_STAT_NAME = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.1"
77
+ OID_LTM_CLIENT_SSL_STAT_CUR_CONNS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.2"
78
+ OID_LTM_CLIENT_SSL_STAT_MAX_CONNS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.3"
79
+ OID_LTM_CLIENT_SSL_STAT_CUR_NATIVE_CONNS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.4"
80
+ OID_LTM_CLIENT_SSL_STAT_MAX_NATIVE_CONNS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.5"
81
+
82
+ OID_LTM_CLIENT_SSL_STAT_FULLY_HW_ACCELERATED_CONNS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.16"
83
+ OID_LTM_CLIENT_SSL_STAT_PARTIALLY_HW_ACCELERATED_CONNS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.17"
84
+ OID_LTM_CLIENT_SSL_STAT_NON_HW_ACCELERATED_CONNS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.18"
85
+
86
+ OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_CUR_ENTRIES = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.21"
87
+ OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_HITS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.22"
88
+ OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_LOOKUPS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.23"
89
+ OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_OVERFLOWS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.24"
90
+ OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_INVALIDATIONS = "#{OID_LTM_CLIENT_SSL_STAT_ENTRY}.25"
91
+
92
+
93
+
94
+ #
95
+ # Init
96
+ #
97
+ def initialize(snmp = nil)
98
+ @names = [ ]
99
+
100
+ if snmp
101
+ @snmp_manager = snmp
102
+ else
103
+ @snmp_manager = nil
104
+ end
105
+ end
106
+
107
+
108
+
109
+ #
110
+ # Get the list of iRule names
111
+ #
112
+ def get_names(snmp = nil)
113
+ snmp = snmp_manager unless snmp
114
+
115
+ if snmp
116
+ @names.clear
117
+
118
+ begin
119
+ snmp.walk([OID_LTM_CLIENT_SSL_STAT_NAME]) do |row|
120
+ row.each do |vb|
121
+ @names.push(vb.value)
122
+ end
123
+ end
124
+ rescue Exception => e
125
+ NewRelic::PlatformLogger.error("Unable to gather Client SSL Profile names with error: #{e}")
126
+ end
127
+
128
+ NewRelic::PlatformLogger.debug("Client SSL Profiles: Found #{@names.size}")
129
+ return @names
130
+ end
131
+ end
132
+
133
+
134
+
135
+ #
136
+ # Gather current connection count
137
+ #
138
+ def get_conns_current(snmp = nil)
139
+ snmp = snmp_manager unless snmp
140
+
141
+ get_names(snmp) if @names.empty?
142
+ res = gather_snmp_metrics_by_name("Client SSL Profiles/Current Connections", @names, OID_LTM_CLIENT_SSL_STAT_CUR_CONNS, snmp)
143
+ NewRelic::PlatformLogger.debug("Client SSL Profiles: Got #{res.size}/#{@names.size} Current Connection metrics")
144
+ return res
145
+ end
146
+
147
+
148
+
149
+ #
150
+ # Gather current cache entries
151
+ #
152
+ def get_session_cache_current(snmp = nil)
153
+ snmp = snmp_manager unless snmp
154
+
155
+ get_names(snmp) if @names.empty?
156
+ res = gather_snmp_metrics_by_name("Client SSL Profiles/Current Cache Entries", @names, OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_CUR_ENTRIES, snmp)
157
+ NewRelic::PlatformLogger.debug("Client SSL Profiles: Got #{res.size}/#{@names.size} Current Session Cache metrics")
158
+ return res
159
+ end
160
+
161
+
162
+
163
+ #
164
+ # Gather session cache hits
165
+ #
166
+ def get_session_cache_hits(snmp = nil)
167
+ snmp = snmp_manager unless snmp
168
+
169
+ get_names(snmp) if @names.empty?
170
+ res = gather_snmp_metrics_by_name("Client SSL Profiles/Session Cache Hits", @names, OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_HITS, snmp)
171
+ NewRelic::PlatformLogger.debug("Client SSL Profiles: Got #{res.size}/#{@names.size} Session Cache Hit metrics")
172
+ return res
173
+ end
174
+
175
+
176
+
177
+ #
178
+ # Gather session cache lookups
179
+ #
180
+ def get_session_cache_lookups(snmp = nil)
181
+ snmp = snmp_manager unless snmp
182
+
183
+ get_names(snmp) if @names.empty?
184
+ res = gather_snmp_metrics_by_name("Client SSL Profiles/Session Cache Lookups", @names, OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_LOOKUPS, snmp)
185
+ NewRelic::PlatformLogger.debug("Client SSL Profiles: Got #{res.size}/#{@names.size} Session Cache Lookup metrics")
186
+ return res
187
+ end
188
+
189
+
190
+
191
+ #
192
+ # Gather session cache overflows
193
+ #
194
+ def get_session_cache_overflows(snmp = nil)
195
+ snmp = snmp_manager unless snmp
196
+
197
+ get_names(snmp) if @names.empty?
198
+ res = gather_snmp_metrics_by_name("Client SSL Profiles/Session Cache Overflows", @names, OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_OVERFLOWS, snmp)
199
+ NewRelic::PlatformLogger.debug("Client SSL Profiles: Got #{res.size}/#{@names.size} Session Cache Overflow metrics")
200
+ return res
201
+ end
202
+
203
+
204
+
205
+ #
206
+ # Gather session cache invalidations
207
+ #
208
+ def get_session_cache_invalidations(snmp = nil)
209
+ snmp = snmp_manager unless snmp
210
+
211
+ get_names(snmp) if @names.empty?
212
+ res = gather_snmp_metrics_by_name("Client SSL Profiles/Session Cache Invalidations", @names, OID_LTM_CLIENT_SSL_STAT_SESS_CACHE_INVALIDATIONS, snmp)
213
+ NewRelic::PlatformLogger.debug("Client SSL Profiles: Got #{res.size}/#{@names.size} Session Cache Invalidation metrics")
214
+ return res
215
+ end
216
+ end
217
+ end
218
+ end
219
+
@@ -46,7 +46,9 @@ module NewRelic
46
46
  OID_LTM_POOL_STAT = "#{OID_LTM_POOLS}.2"
47
47
  OID_LTM_POOL_ENTRY = "#{OID_LTM_POOL_STAT}.3.1"
48
48
  OID_LTM_POOL_STAT_NAME = "#{OID_LTM_POOL_ENTRY}.1"
49
+ OID_LTM_POOL_STAT_SERVER_PKTS_IN = "#{OID_LTM_POOL_ENTRY}.2"
49
50
  OID_LTM_POOL_STAT_SERVER_BYTES_IN = "#{OID_LTM_POOL_ENTRY}.3"
51
+ OID_LTM_POOL_STAT_SERVER_PKTS_OUT = "#{OID_LTM_POOL_ENTRY}.4"
50
52
  OID_LTM_POOL_STAT_SERVER_BYTES_OUT = "#{OID_LTM_POOL_ENTRY}.5"
51
53
  OID_LTM_POOL_STAT_SERVER_TOT_CONNS = "#{OID_LTM_POOL_ENTRY}.7"
52
54
  OID_LTM_POOL_STAT_SERVER_CUR_CONNS = "#{OID_LTM_POOL_ENTRY}.8"
@@ -137,6 +139,36 @@ module NewRelic
137
139
 
138
140
 
139
141
 
142
+ #
143
+ # Gather Packets Inbound
144
+ #
145
+ def get_packets_in(snmp = nil)
146
+ snmp = snmp_manager unless snmp
147
+
148
+ get_names(snmp) if @pool_names.empty?
149
+ res = gather_snmp_metrics_by_name("Pools/Packets/In", @pool_names, OID_LTM_POOL_STAT_SERVER_PKTS_IN, snmp)
150
+ res = res.each_key { |n| res[n] *= 8 }
151
+ NewRelic::PlatformLogger.debug("Pools: Got #{res.size}/#{@pool_names.size} Inbound Packet metrics")
152
+ return res
153
+ end
154
+
155
+
156
+
157
+ #
158
+ # Gather Packets Outbound
159
+ #
160
+ def get_packets_out(snmp = nil)
161
+ snmp = snmp_manager unless snmp
162
+
163
+ get_names(snmp) if @pool_names.empty?
164
+ res = gather_snmp_metrics_by_name("Pools/Packets/Out", @pool_names, OID_LTM_POOL_STAT_SERVER_PKTS_OUT, snmp)
165
+ res = res.each_key { |n| res[n] *= 8 }
166
+ NewRelic::PlatformLogger.debug("Pools: Got #{res.size}/#{@pool_names.size} Outbound Packet metrics")
167
+ return res
168
+ end
169
+
170
+
171
+
140
172
  #
141
173
  # Gather Throughput Inbound (returns in bits)
142
174
  #
@@ -153,7 +185,7 @@ module NewRelic
153
185
 
154
186
 
155
187
  #
156
- # Gather Throughput Inbound (returns in bits)
188
+ # Gather Throughput Outbound (returns in bits)
157
189
  #
158
190
  def get_throughput_out(snmp = nil)
159
191
  snmp = snmp_manager unless snmp
@@ -122,7 +122,7 @@ module NewRelic
122
122
 
123
123
  get_names(snmp) if @rule_names.empty?
124
124
  res = gather_snmp_metrics_by_name("Rules/Time", @rule_names, OID_LTM_RULE_STAT_AVG_CYCLES, snmp)
125
- NewRelic::PlatformLogger.debug("Rules: Got #{res.size}/#{@rule_names.size} Abort metrics")
125
+ NewRelic::PlatformLogger.debug("Rules: Got #{res.size}/#{@rule_names.size} Average Cycle metrics")
126
126
  return res
127
127
  end
128
128
 
@@ -49,7 +49,9 @@ module NewRelic
49
49
  OID_LTM_VIRTUAL_SERV_STAT = "#{OID_LTM_VIRTUAL_SERVERS}.2"
50
50
  OID_LTM_VIRTUAL_SERV_ENTRY = "#{OID_LTM_VIRTUAL_SERV_STAT}.3.1"
51
51
  OID_LTM_VIRTUAL_SERV_STAT_NAME = "#{OID_LTM_VIRTUAL_SERV_ENTRY}.1"
52
+ OID_LTM_VIRTUAL_SERV_STAT_CLIENT_PKTS_IN = "#{OID_LTM_VIRTUAL_SERV_ENTRY}.6"
52
53
  OID_LTM_VIRTUAL_SERV_STAT_CLIENT_BYTES_IN = "#{OID_LTM_VIRTUAL_SERV_ENTRY}.7"
54
+ OID_LTM_VIRTUAL_SERV_STAT_CLIENT_PKTS_OUT = "#{OID_LTM_VIRTUAL_SERV_ENTRY}.8"
53
55
  OID_LTM_VIRTUAL_SERV_STAT_CLIENT_BYTES_OUT = "#{OID_LTM_VIRTUAL_SERV_ENTRY}.9"
54
56
  OID_LTM_VIRTUAL_SERV_STAT_CLIENT_TOT_CONNS = "#{OID_LTM_VIRTUAL_SERV_ENTRY}.11"
55
57
  OID_LTM_VIRTUAL_SERV_STAT_CLIENT_CUR_CONNS = "#{OID_LTM_VIRTUAL_SERV_ENTRY}.12"
@@ -141,6 +143,36 @@ module NewRelic
141
143
 
142
144
 
143
145
 
146
+ #
147
+ # Gather VS Packets Inbound
148
+ #
149
+ def get_packets_in (snmp = nil)
150
+ snmp = snmp_manager unless snmp
151
+
152
+ get_names(snmp) if @vs_names.empty?
153
+ res = gather_snmp_metrics_by_name("Virtual Servers/Packets/In", @vs_names, OID_LTM_VIRTUAL_SERV_STAT_CLIENT_PKTS_IN, snmp)
154
+ res = res.each_key { |n| res[n] *= 8 }
155
+ NewRelic::PlatformLogger.debug("Virtual Servers: Got #{res.size}/#{@vs_names.size} Inbound Packet metrics")
156
+ return res
157
+ end
158
+
159
+
160
+
161
+ #
162
+ # Gather VS Packets Outbound
163
+ #
164
+ def get_packets_out(snmp = nil)
165
+ snmp = snmp_manager unless snmp
166
+
167
+ get_names(snmp) if @vs_names.empty?
168
+ res = gather_snmp_metrics_by_name("Virtual Servers/Packets/Out", @vs_names, OID_LTM_VIRTUAL_SERV_STAT_CLIENT_PKTS_OUT, snmp)
169
+ res = res.each_key { |n| res[n] *= 8 }
170
+ NewRelic::PlatformLogger.debug("Virtual Servers: Got #{res.size}/#{@vs_names.size} Outbound Packet metrics")
171
+ return res
172
+ end
173
+
174
+
175
+
144
176
  #
145
177
  # Gather VS Throughput Inbound (returns in bits)
146
178
  #
@@ -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.10'
17
- s.date = '2014-02-03'
16
+ s.version = '1.0.12'
17
+ s.date = '2014-02-19'
18
18
  s.rubyforge_project = 'newrelic_f5_plugin'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
@@ -75,6 +75,7 @@ to find out how to install and run the plugin agent.
75
75
  config/newrelic_plugin.yml
76
76
  lib/newrelic_f5_plugin.rb
77
77
  lib/newrelic_f5_plugin/agent.rb
78
+ lib/newrelic_f5_plugin/client_ssl.rb
78
79
  lib/newrelic_f5_plugin/device.rb
79
80
  lib/newrelic_f5_plugin/nodes.rb
80
81
  lib/newrelic_f5_plugin/pools.rb
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newrelic_f5_plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-03 00:00:00.000000000 Z
12
+ date: 2014-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: newrelic_plugin
@@ -66,6 +66,7 @@ files:
66
66
  - config/newrelic_plugin.yml
67
67
  - lib/newrelic_f5_plugin.rb
68
68
  - lib/newrelic_f5_plugin/agent.rb
69
+ - lib/newrelic_f5_plugin/client_ssl.rb
69
70
  - lib/newrelic_f5_plugin/device.rb
70
71
  - lib/newrelic_f5_plugin/nodes.rb
71
72
  - lib/newrelic_f5_plugin/pools.rb
@@ -94,6 +95,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
95
  - - ! '>='
95
96
  - !ruby/object:Gem::Version
96
97
  version: '0'
98
+ segments:
99
+ - 0
100
+ hash: -1376077939883300417
97
101
  required_rubygems_version: !ruby/object:Gem::Requirement
98
102
  none: false
99
103
  requirements: