sensu-plugins-outlyer 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/bin/outlyer-metrics.rb +46 -28
- data/lib/sensu-plugins-outlyer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a52863d6578923ee7abae3281e4bed498e6bae4c6ec66ebbffdfc8632f98bc4
|
4
|
+
data.tar.gz: 81c623f83b9e79fbf4af84dfdc8a13b33c27fd604a89b1643184bf0bed1bc05e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18aa3e82c81931a8336a2b1f609770e9abbd166fa0f0a8434b063faafab5f6182e00a63718ebebf8b71f194596bca9fada9266302b2572a66899d9c0d4f84af3
|
7
|
+
data.tar.gz: b602dcb494dcae20291440d5bea058c298231b78d37e2bb95ebc03eba3fe04169cf6c905d15b555100c1f72786b5d0379da2aea2e99f505dffdbafcb33b5d0e7
|
data/CHANGELOG.md
CHANGED
@@ -3,7 +3,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
3
3
|
|
4
4
|
This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
|
5
5
|
|
6
|
-
## [0.
|
6
|
+
## [0.7.0] - 2018-07-16
|
7
7
|
- Made debug flag boolean
|
8
8
|
- Added additional debug logging for troubleshooting
|
9
9
|
- Added Unit Tests
|
data/bin/outlyer-metrics.rb
CHANGED
@@ -71,11 +71,9 @@ class OutlyerMetrics < Sensu::Handler
|
|
71
71
|
def handle
|
72
72
|
|
73
73
|
output = @event['check']['output']
|
74
|
-
check_status = @event['check']['status'].to_f
|
75
74
|
@check_name = @event['check']['name']
|
76
75
|
@host = @event['client']['name'].strip.to_s
|
77
76
|
@environment = @event['client']['environment']
|
78
|
-
timestamp = @event['check']['executed'].to_i * 1000
|
79
77
|
|
80
78
|
if config[:debug]
|
81
79
|
puts "Handling check #{@check_name} for host #{@host} in environment #{@environment}"
|
@@ -88,31 +86,9 @@ class OutlyerMetrics < Sensu::Handler
|
|
88
86
|
parse_graphite_output(output)
|
89
87
|
end
|
90
88
|
|
91
|
-
# Add a service status metric
|
92
|
-
metrics.push(create_datapoint('service.status', check_status, timestamp, {service: "sensu.#{sanitize_value(@check_name)}"}))
|
93
89
|
# Post metrics to Outlyer
|
94
90
|
push_metrics(metrics)
|
95
91
|
end
|
96
|
-
|
97
|
-
# Create a single data point
|
98
|
-
#
|
99
|
-
# @param name [String] metric name
|
100
|
-
# @param value [Float] metric value
|
101
|
-
# @param time [Integer] epoch timestamp of metric in milliseconds
|
102
|
-
# @param labels [HashMap] (Optional) Additional labels to append to data point
|
103
|
-
# @param metric_host [String] (Optional) Set a host for the metric
|
104
|
-
#
|
105
|
-
def create_datapoint(name, value, time, labels = {}, metric_host=@host)
|
106
|
-
datapoint = {
|
107
|
-
host: metric_host,
|
108
|
-
labels: labels,
|
109
|
-
name: name,
|
110
|
-
timestamp: time,
|
111
|
-
type: 'gauge',
|
112
|
-
value: value
|
113
|
-
}
|
114
|
-
datapoint
|
115
|
-
end
|
116
92
|
|
117
93
|
# Parse the Nagios output format:
|
118
94
|
# <message> | <metric path 1>=<metric value 1>, <metric path 2>=<metric value 2>...
|
@@ -141,6 +117,7 @@ class OutlyerMetrics < Sensu::Handler
|
|
141
117
|
puts "The Nagios metric '#{metric}' could not be parsed: #{error.message}"
|
142
118
|
end
|
143
119
|
end
|
120
|
+
data.push(create_status_metric(@event['check']['status'].to_f))
|
144
121
|
data
|
145
122
|
end
|
146
123
|
|
@@ -161,15 +138,15 @@ class OutlyerMetrics < Sensu::Handler
|
|
161
138
|
end
|
162
139
|
|
163
140
|
# Parse the metric on each line in graphite format
|
141
|
+
metric_host = @host
|
164
142
|
output.split("\n").each do |metric|
|
165
143
|
m = metric.split
|
166
144
|
next unless m.count == 3
|
167
145
|
labels = {service: "sensu.#{sanitize_value(@check_name)}"}
|
168
|
-
metric_host = @host
|
169
146
|
|
170
147
|
# Check to see if we have a scheme filter that matches the metric name
|
171
|
-
template = nil
|
172
148
|
if schemes
|
149
|
+
template = nil
|
173
150
|
schemes.each do |scheme|
|
174
151
|
filter = Regexp.new("^#{Regexp.escape(scheme['filter']).gsub('\*','[^\.]*?')}$")
|
175
152
|
if m[0] =~ filter
|
@@ -215,8 +192,8 @@ class OutlyerMetrics < Sensu::Handler
|
|
215
192
|
puts "No scheme was found that matches the metric '#{m[0]}.'"
|
216
193
|
puts "Please configure a scheme for the check '#{@check_name}' "\
|
217
194
|
"on the Sensu client '#{@host}'."
|
218
|
-
|
219
|
-
|
195
|
+
data.push(create_status_metric(3))
|
196
|
+
return data
|
220
197
|
end
|
221
198
|
else
|
222
199
|
metric_name = sanitize_value(m[0])
|
@@ -227,9 +204,30 @@ class OutlyerMetrics < Sensu::Handler
|
|
227
204
|
point = create_datapoint(metric_name, value, time, labels, metric_host)
|
228
205
|
data.push(point)
|
229
206
|
end
|
207
|
+
if config[:debug]
|
208
|
+
puts "Parsed #{data.length} of #{output.split("\n").length} metrics"
|
209
|
+
end
|
210
|
+
data.push(create_status_metric(@event['check']['status'].to_f, metric_host))
|
230
211
|
data
|
231
212
|
end
|
232
213
|
|
214
|
+
# Create the status metric for the check with status:
|
215
|
+
#
|
216
|
+
# 0 - OK
|
217
|
+
# 1 - WARN
|
218
|
+
# 2 - CRITICAL
|
219
|
+
# 3 - UNKNOWN
|
220
|
+
#
|
221
|
+
# Unknown is used to tell Outlyer there was a parsing error for the check
|
222
|
+
#
|
223
|
+
# @param check_status [Integer] Check status code
|
224
|
+
# @param host [String] (Optional) hostname of host that ran the check
|
225
|
+
# @param timestamp [Integer] (Optional) timestamp of when host ran the check
|
226
|
+
#
|
227
|
+
def create_status_metric(check_status, host=@host, timestamp=@event['check']['executed'].to_i * 1000)
|
228
|
+
return create_datapoint('service.status', check_status, timestamp, {service: "sensu.#{sanitize_value(@check_name)}"}, host)
|
229
|
+
end
|
230
|
+
|
233
231
|
# Ensures all label values conform to Outlyer's data format requirements:
|
234
232
|
#
|
235
233
|
# * values can only contain the characters `-._A-Za-z0-9`, other characters
|
@@ -250,6 +248,26 @@ class OutlyerMetrics < Sensu::Handler
|
|
250
248
|
end
|
251
249
|
value
|
252
250
|
end
|
251
|
+
|
252
|
+
# Create a single data point
|
253
|
+
#
|
254
|
+
# @param name [String] metric name
|
255
|
+
# @param value [Float] metric value
|
256
|
+
# @param time [Integer] epoch timestamp of metric in milliseconds
|
257
|
+
# @param labels [HashMap] (Optional) Additional labels to append to data point
|
258
|
+
# @param metric_host [String] (Optional) Set a host for the metric
|
259
|
+
#
|
260
|
+
def create_datapoint(name, value, time, labels = {}, metric_host=@host)
|
261
|
+
datapoint = {
|
262
|
+
host: metric_host,
|
263
|
+
labels: labels,
|
264
|
+
name: name,
|
265
|
+
timestamp: time,
|
266
|
+
type: 'gauge',
|
267
|
+
value: value
|
268
|
+
}
|
269
|
+
datapoint
|
270
|
+
end
|
253
271
|
|
254
272
|
# Post check metrics to Outlyer's Series API:
|
255
273
|
#
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-outlyer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dataloop Software, INC. Trading as Outlyer
|
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
175
|
version: '0'
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
|
-
rubygems_version: 2.7.
|
178
|
+
rubygems_version: 2.7.6
|
179
179
|
signing_key:
|
180
180
|
specification_version: 4
|
181
181
|
summary: Sensu plugins for Outlyer
|