sensu-plugins-logs 0.0.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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +12 -0
- data/LICENSE +22 -0
- data/README.md +34 -0
- data/bin/check-journal.rb +121 -0
- data/bin/check-log.rb +213 -0
- data/bin/handler-logevent.rb +29 -0
- data/bin/handler-show-event-config.rb +17 -0
- data/lib/sensu-plugins-logs.rb +1 -0
- data/lib/sensu-plugins-logs/version.rb +9 -0
- metadata +252 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dd677f283548ffe4432a18ec08d375d833905b13
|
4
|
+
data.tar.gz: f1cbe459d299b8724c47e1547c210fa1c8dba749
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: be664d0bee5d71d8e74bf64c322db6afd2b6b13240893c3047ebbc102906c46be29f279d5783cf38228270c752aace703996850d84ad45b93d3086e63cfa0bea
|
7
|
+
data.tar.gz: 0ecb9d5c9509feac72a1eeedd8b67a9bb4c395deb5867a5b8f89c3ff1a306add99aa8eedaf3a28d262d7ff0f7b061a49c3a3d3a2412952b6f704aa21f7d9b028
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#Change Log
|
2
|
+
This project adheres to [Semantic Versioning](http://semver.org/).
|
3
|
+
|
4
|
+
This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
|
5
|
+
|
6
|
+
## Unreleased][unreleased]
|
7
|
+
|
8
|
+
## [0.0.1] - 2015-06-04
|
9
|
+
|
10
|
+
### Added
|
11
|
+
- initial release
|
12
|
+
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Sensu-Plugins
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
## Sensu-Plugins-logs
|
2
|
+
|
3
|
+
[](https://travis-ci.org/sensu-plugins/sensu-plugins-logs)
|
4
|
+
[](http://badge.fury.io/rb/sensu-plugins-logs)
|
5
|
+
[](https://codeclimate.com/github/sensu-plugins/sensu-plugins-logs)
|
6
|
+
[](https://codeclimate.com/github/sensu-plugins/sensu-plugins-logs)
|
7
|
+
[](https://gemnasium.com/sensu-plugins/sensu-plugins-logs)
|
8
|
+
[ ](https://codeship.com/projects/82942)
|
9
|
+
|
10
|
+
## Functionality
|
11
|
+
|
12
|
+
## Files
|
13
|
+
* bin/check-journal.rb
|
14
|
+
* bin/check-log.rb
|
15
|
+
* bin/handler-logevent.rb
|
16
|
+
* bin/handler-show-event-config.rb
|
17
|
+
|
18
|
+
## Usage
|
19
|
+
|
20
|
+
**handler-logevent**
|
21
|
+
```
|
22
|
+
{
|
23
|
+
"logevent": {
|
24
|
+
"eventdir": "/var/log/sensu/events",
|
25
|
+
"keep": 10
|
26
|
+
}
|
27
|
+
}
|
28
|
+
```
|
29
|
+
|
30
|
+
## Installation
|
31
|
+
|
32
|
+
[Installation and Setup](https://github.com/sensu-plugins/documentation/blob/master/user_docs/installation_instructions.md)
|
33
|
+
|
34
|
+
## Notes
|
@@ -0,0 +1,121 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# check-journal
|
4
|
+
#
|
5
|
+
# DESCRIPTION:
|
6
|
+
# This plugin checks the systemd journal (aka journald) for a pattern.
|
7
|
+
# It is loosely based on the check-log.rb plugin and accepts similar arguments
|
8
|
+
# where relevant.
|
9
|
+
#
|
10
|
+
# Unlike check-log.rb or other file-based log checks, we do not need to keep state
|
11
|
+
# since we can query the journal using hints such as `--since=-5minutes`. The check
|
12
|
+
# interval and the `--since` argument should match in order to ensure adequate
|
13
|
+
# and efficient coverage of the journal. See `journalctl(1)` man page for additional
|
14
|
+
# details on valid values for the `--since` parameters.
|
15
|
+
#
|
16
|
+
# Journalctl params
|
17
|
+
# -----------------
|
18
|
+
#
|
19
|
+
# By default, all available journal entries are queried. Any valid journalctl(1)
|
20
|
+
# argument can be passed using `--journalctl_args="ARGS ..."`. For example, to
|
21
|
+
# query only journal entries from the `elasticsearch.service` unit using the
|
22
|
+
# `-u` option:
|
23
|
+
#
|
24
|
+
# $ check-journal.rb --journalctl_args='-u elasticsearch.service' -q Error
|
25
|
+
# CheckJournal CRITICAL: 20 matches found for Error in `journalctl --no-pager -a -u elasticsearch.service --since=-10minutes` (threshold 1)
|
26
|
+
#
|
27
|
+
# Permissions
|
28
|
+
# -----------
|
29
|
+
#
|
30
|
+
# The user executing this script (probably the sensu user) must be a member of the
|
31
|
+
# `systemd-journal` group to read all journal entries.
|
32
|
+
#
|
33
|
+
# OUTPUT:
|
34
|
+
# plain text
|
35
|
+
#
|
36
|
+
# PLATFORMS:
|
37
|
+
# Linux
|
38
|
+
#
|
39
|
+
# DEPENDENCIES:
|
40
|
+
# gem: sensu-plugin
|
41
|
+
#
|
42
|
+
# USAGE:
|
43
|
+
# #YELLOW
|
44
|
+
#
|
45
|
+
# NOTES:
|
46
|
+
#
|
47
|
+
# LICENSE:
|
48
|
+
# Copyright 2013 Joe Miller
|
49
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
50
|
+
# for details.
|
51
|
+
#
|
52
|
+
|
53
|
+
require 'sensu-plugin/check/cli'
|
54
|
+
|
55
|
+
class CheckJournal < Sensu::Plugin::Check::CLI
|
56
|
+
option :pattern,
|
57
|
+
description: 'Pattern to search for',
|
58
|
+
short: '-q PAT',
|
59
|
+
long: '--pattern PAT'
|
60
|
+
|
61
|
+
option :journalctl_args,
|
62
|
+
description: 'Pass additional arguments to journalctl, eg: "-u nginx.service"',
|
63
|
+
short: '-j "ARGS1 ARGS2 ..."',
|
64
|
+
long: '--journalctl_args "ARGS1 ARGS2 ..."',
|
65
|
+
default: ''
|
66
|
+
|
67
|
+
option :since,
|
68
|
+
description: 'Query journal entries on or newer than the specified date/time.',
|
69
|
+
default: '-1minutes',
|
70
|
+
short: '-s TIMESPEC',
|
71
|
+
long: '--since TIMESPEC'
|
72
|
+
|
73
|
+
option :warning_count,
|
74
|
+
description: 'Number of matches to consider a warning',
|
75
|
+
short: '-w COUNT',
|
76
|
+
long: '--warning COUNT',
|
77
|
+
default: 1,
|
78
|
+
proc: proc(&:to_i)
|
79
|
+
|
80
|
+
option :critical_count,
|
81
|
+
description: 'Number of matches to consider a critical issue.',
|
82
|
+
short: '-c COUNT',
|
83
|
+
long: '--critical COUNT',
|
84
|
+
default: 1,
|
85
|
+
proc: proc(&:to_i)
|
86
|
+
|
87
|
+
option :verbose,
|
88
|
+
description: 'Verbose output. Helpful for debugging the plugin.',
|
89
|
+
short: '-v',
|
90
|
+
boolean: true,
|
91
|
+
default: false
|
92
|
+
|
93
|
+
def run
|
94
|
+
unknown 'No pattern specified' unless config[:pattern]
|
95
|
+
journalctl_args = '--no-pager -a ' + config[:journalctl_args] + " --since=#{config[:since]}"
|
96
|
+
|
97
|
+
n_matches = search_journal(journalctl_args)
|
98
|
+
|
99
|
+
message = "#{n_matches} matches found for #{config[:pattern]} in `journalctl #{journalctl_args}`"
|
100
|
+
if n_matches >= config[:critical_count]
|
101
|
+
critical message + " (threshold #{config[:critical_count]})"
|
102
|
+
elsif n_matches >= config[:warning_count]
|
103
|
+
warning message + " (threshold #{config[:warning_count]})"
|
104
|
+
else
|
105
|
+
ok message
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def search_journal(journalctl_args)
|
110
|
+
n_matches = 0
|
111
|
+
|
112
|
+
puts "Executing 'journalctl #{journalctl_args}'" if config[:verbose]
|
113
|
+
IO.popen("journalctl #{journalctl_args}") do |cmd|
|
114
|
+
cmd.each do |line|
|
115
|
+
puts line if config[:verbose]
|
116
|
+
n_matches += 1 if line.match(config[:pattern])
|
117
|
+
end
|
118
|
+
end
|
119
|
+
n_matches
|
120
|
+
end
|
121
|
+
end
|
data/bin/check-log.rb
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# check-log
|
4
|
+
#
|
5
|
+
# DESCRIPTION:
|
6
|
+
# This plugin checks a log file for a regular expression, skipping lines
|
7
|
+
# that have already been read, like Nagios's check_log. However, instead
|
8
|
+
# of making a backup copy of the whole log file (very slow with large
|
9
|
+
# logs), it stores the number of bytes read, and seeks to that position
|
10
|
+
# next time.
|
11
|
+
#
|
12
|
+
# OUTPUT:
|
13
|
+
# plain text
|
14
|
+
#
|
15
|
+
# PLATFORMS:
|
16
|
+
# Linux
|
17
|
+
#
|
18
|
+
# DEPENDENCIES:
|
19
|
+
# gem: sensu-plugin
|
20
|
+
# gem: fileutils
|
21
|
+
#
|
22
|
+
# USAGE:
|
23
|
+
# #YELLOW
|
24
|
+
#
|
25
|
+
# NOTES:
|
26
|
+
#
|
27
|
+
# LICENSE:
|
28
|
+
# Copyright 2011 Sonian, Inc <chefs@sonian.net>
|
29
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
30
|
+
# for details.
|
31
|
+
#
|
32
|
+
|
33
|
+
require 'sensu-plugin/check/cli'
|
34
|
+
require 'fileutils'
|
35
|
+
|
36
|
+
class CheckLog < Sensu::Plugin::Check::CLI
|
37
|
+
BASE_DIR = '/var/cache/check-log'
|
38
|
+
|
39
|
+
option :state_auto,
|
40
|
+
description: 'Set state file dir automatically using name',
|
41
|
+
short: '-n NAME',
|
42
|
+
long: '--name NAME',
|
43
|
+
proc: proc { |arg| "#{BASE_DIR}/#{arg}" }
|
44
|
+
|
45
|
+
option :state_dir,
|
46
|
+
description: 'Dir to keep state files under',
|
47
|
+
short: '-s DIR',
|
48
|
+
long: '--state-dir DIR',
|
49
|
+
default: "#{BASE_DIR}/default"
|
50
|
+
|
51
|
+
option :log_file,
|
52
|
+
description: 'Path to log file',
|
53
|
+
short: '-f FILE',
|
54
|
+
long: '--log-file FILE'
|
55
|
+
|
56
|
+
option :pattern,
|
57
|
+
description: 'Pattern to search for',
|
58
|
+
short: '-q PAT',
|
59
|
+
long: '--pattern PAT'
|
60
|
+
|
61
|
+
option :exclude,
|
62
|
+
description: 'Pattern to exclude from matching',
|
63
|
+
short: '-E PAT',
|
64
|
+
long: '--exclude PAT',
|
65
|
+
proc: proc { |s| Regexp.compile s },
|
66
|
+
default: /(?!)/
|
67
|
+
|
68
|
+
option :encoding,
|
69
|
+
description: 'Explicit encoding page to read log file with',
|
70
|
+
short: '-e ENCODING-PAGE',
|
71
|
+
long: '--encoding ENCODING-PAGE'
|
72
|
+
|
73
|
+
option :warn,
|
74
|
+
description: 'Warning level if pattern has a group',
|
75
|
+
short: '-w N',
|
76
|
+
long: '--warn N',
|
77
|
+
proc: proc(&:to_i)
|
78
|
+
|
79
|
+
option :crit,
|
80
|
+
description: 'Critical level if pattern has a group',
|
81
|
+
short: '-c N',
|
82
|
+
long: '--crit N',
|
83
|
+
proc: proc(&:to_i)
|
84
|
+
|
85
|
+
option :only_warn,
|
86
|
+
description: 'Warn instead of critical on match',
|
87
|
+
short: '-o',
|
88
|
+
long: '--warn-only',
|
89
|
+
boolean: true
|
90
|
+
|
91
|
+
option :case_insensitive,
|
92
|
+
description: 'Run a case insensitive match',
|
93
|
+
short: '-i',
|
94
|
+
long: '--icase',
|
95
|
+
boolean: true,
|
96
|
+
default: false
|
97
|
+
|
98
|
+
option :file_pattern,
|
99
|
+
description: 'Check a pattern of files, instead of one file',
|
100
|
+
short: '-F FILE',
|
101
|
+
long: '--filepattern FILE'
|
102
|
+
|
103
|
+
option :return_content,
|
104
|
+
description: 'Return matched line',
|
105
|
+
short: '-r',
|
106
|
+
long: '--return',
|
107
|
+
boolean: true,
|
108
|
+
default: false
|
109
|
+
|
110
|
+
def run
|
111
|
+
unknown 'No log file specified' unless config[:log_file] || config[:file_pattern]
|
112
|
+
unknown 'No pattern specified' unless config[:pattern]
|
113
|
+
file_list = []
|
114
|
+
file_list << config[:log_file] if config[:log_file]
|
115
|
+
if config[:file_pattern]
|
116
|
+
dir_str = config[:file_pattern].slice(0, config[:file_pattern].to_s.rindex('/'))
|
117
|
+
file_pat = config[:file_pattern].slice((config[:file_pattern].to_s.rindex('/') + 1), config[:file_pattern].length)
|
118
|
+
Dir.foreach(dir_str) do |file|
|
119
|
+
if config[:case_insensitive]
|
120
|
+
file_list << "#{dir_str}/#{file}" if file.to_s.downcase.match(file_pat.downcase)
|
121
|
+
else
|
122
|
+
file_list << "#{dir_str}/#{file}" if file.to_s.match(file_pat)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
n_warns_overall = 0
|
127
|
+
n_crits_overall = 0
|
128
|
+
error_overall = ''
|
129
|
+
file_list.each do |log_file|
|
130
|
+
begin
|
131
|
+
open_log log_file
|
132
|
+
rescue => e
|
133
|
+
unknown "Could not open log file: #{e}"
|
134
|
+
end
|
135
|
+
n_warns, n_crits, accumulative_error = search_log
|
136
|
+
n_warns_overall += n_warns
|
137
|
+
n_crits_overall += n_crits
|
138
|
+
|
139
|
+
if config[:return_content]
|
140
|
+
error_overall = accumulative_error
|
141
|
+
end
|
142
|
+
end
|
143
|
+
message "#{n_warns_overall} warnings, #{n_crits_overall} criticals for pattern #{config[:pattern]}. #{error_overall}"
|
144
|
+
if n_crits_overall > 0
|
145
|
+
critical
|
146
|
+
elsif n_warns_overall > 0
|
147
|
+
warning
|
148
|
+
else
|
149
|
+
ok
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def open_log(log_file)
|
154
|
+
state_dir = config[:state_auto] || config[:state_dir]
|
155
|
+
|
156
|
+
# Opens file using optional encoding page. ex: 'iso8859-1'
|
157
|
+
if config[:encoding]
|
158
|
+
@log = File.open(log_file, "r:#{config[:encoding]}")
|
159
|
+
else
|
160
|
+
@log = File.open(log_file)
|
161
|
+
end
|
162
|
+
|
163
|
+
@state_file = File.join(state_dir, File.expand_path(log_file).sub(/^([A-Z]):\//, '\1/'))
|
164
|
+
@bytes_to_skip = begin
|
165
|
+
File.open(@state_file) do |file|
|
166
|
+
file.readline.to_i
|
167
|
+
end
|
168
|
+
rescue
|
169
|
+
0
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def search_log
|
174
|
+
log_file_size = @log.stat.size
|
175
|
+
@bytes_to_skip = 0 if log_file_size < @bytes_to_skip
|
176
|
+
bytes_read = 0
|
177
|
+
n_warns = 0
|
178
|
+
n_crits = 0
|
179
|
+
accumulative_error = ''
|
180
|
+
|
181
|
+
@log.seek(@bytes_to_skip, File::SEEK_SET) if @bytes_to_skip > 0
|
182
|
+
# #YELLOW
|
183
|
+
@log.each_line do |line| # rubocop:disable Style/Next
|
184
|
+
bytes_read += line.size
|
185
|
+
if config[:case_insensitive]
|
186
|
+
m = line.downcase.match(config[:pattern].downcase) unless line.match(config[:exclude])
|
187
|
+
else
|
188
|
+
m = line.match(config[:pattern]) unless line.match(config[:exclude])
|
189
|
+
end
|
190
|
+
if m
|
191
|
+
accumulative_error += "\n" + line.slice(0, 250)
|
192
|
+
if m[1]
|
193
|
+
if config[:crit] && m[1].to_i > config[:crit]
|
194
|
+
n_crits += 1
|
195
|
+
elsif config[:warn] && m[1].to_i > config[:warn]
|
196
|
+
n_warns += 1
|
197
|
+
end
|
198
|
+
else
|
199
|
+
if config[:only_warn]
|
200
|
+
n_warns += 1
|
201
|
+
else
|
202
|
+
n_crits += 1
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
FileUtils.mkdir_p(File.dirname(@state_file))
|
208
|
+
File.open(@state_file, 'w') do |file|
|
209
|
+
file.write(@bytes_to_skip + bytes_read)
|
210
|
+
end
|
211
|
+
[n_warns, n_crits, accumulative_error]
|
212
|
+
end
|
213
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This handler logs last settings['logevent']['keep'] json events in files as
|
4
|
+
# settings['logevent']['eventdir']/client/check_name/timestamp.action
|
5
|
+
#
|
6
|
+
# Copyright 2013 Piavlo <lolitushka@gmail.com>
|
7
|
+
#
|
8
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
9
|
+
|
10
|
+
require 'sensu-handler'
|
11
|
+
require 'json'
|
12
|
+
require 'fileutils'
|
13
|
+
|
14
|
+
class LogEvent < Sensu::Handler
|
15
|
+
def handle
|
16
|
+
eventdir = "#{settings['logevent']['eventdir']}/#{@event['client']['name']}/#{@event['check']['name']}"
|
17
|
+
FileUtils.mkdir_p(eventdir)
|
18
|
+
|
19
|
+
File.open("#{eventdir}/#{@event['check']['executed']}.#{@event['action']}", 'w') do |f|
|
20
|
+
f.write(JSON.pretty_generate(@event))
|
21
|
+
end
|
22
|
+
|
23
|
+
events = Dir.glob("#{eventdir}/*.#{@event['action']}")
|
24
|
+
# #YELLOW
|
25
|
+
if settings['logevent']['keep'] < events.length # rubocop:disable GuardClause
|
26
|
+
FileUtils.rm_f(events.sort.reverse.shift(settings['logevent']['keep']))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This handler just spits out its config and the event it read.
|
4
|
+
#
|
5
|
+
# Copyright 2011 Sonian, Inc <chefs@sonian.net>
|
6
|
+
#
|
7
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
8
|
+
# for details.
|
9
|
+
|
10
|
+
require 'sensu-handler'
|
11
|
+
|
12
|
+
class Show < Sensu::Handler
|
13
|
+
def handle
|
14
|
+
puts 'Settings: ' + settings.to_hash.inspect
|
15
|
+
puts 'Event: ' + @event.inspect
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'sensu-plugins-logs/version'
|
metadata
ADDED
@@ -0,0 +1,252 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sensu-plugins-logs
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sensu-Plugins and contributors
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRIwEAYDVQQDDAltYXR0
|
14
|
+
am9uZXMxGDAWBgoJkiaJk/IsZAEZFgh5aWVsZGJvdDETMBEGCgmSJomT8ixkARkW
|
15
|
+
A2NvbTAeFw0xNTAxMjgyMTAyNTFaFw0xNjAxMjgyMTAyNTFaMEMxEjAQBgNVBAMM
|
16
|
+
CW1hdHRqb25lczEYMBYGCgmSJomT8ixkARkWCHlpZWxkYm90MRMwEQYKCZImiZPy
|
17
|
+
LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyTSzVYnO
|
18
|
+
CLgyrIyT1mBQakArQyW8xhi6MlDqyzXHJGeERT790U6EgoBVeS4XoK0ptFZNR8Tf
|
19
|
+
zko0w+Nv47TarSCgkPOaxY+mxWnAVR10dOmfeLr7huiMyps+YD56/EF2FqQ3jf/+
|
20
|
+
qohENfKD91qy1ieEy+Fn7Pf74ltbNKUdkb9a9eFXQ0DQ4ip5vik7DzjQkUTj4lca
|
21
|
+
k6ArwnmHX4YDhZoYtrQJ8jVktN0/+NtA40M5qkCYHNe5tUW25b/tKVYuioxG6b2Z
|
22
|
+
oIzaZxRLxf6HVAWpCVRT/F5+/yjigkX4u++eYacfLGleXQzoK7BL65vHGMJygWEE
|
23
|
+
0TKGqFOrl/L0AQIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
|
24
|
+
HQ4EFgQUEf6a8Td7MrSZc8ImbLFZAENPbz0wIQYDVR0RBBowGIEWbWF0dGpvbmVz
|
25
|
+
QHlpZWxkYm90LmNvbTAhBgNVHRIEGjAYgRZtYXR0am9uZXNAeWllbGRib3QuY29t
|
26
|
+
MA0GCSqGSIb3DQEBBQUAA4IBAQBbzXAYA3BVGw8DZ0YYoY1VHPNEcH5qPIApmHO8
|
27
|
+
rvSmuUT0yMEi7u00H/5uHRFf4LleGT/+sTdyXKsNPGT9kdRuQEgwi+vf7Zfvd8aX
|
28
|
+
UF/+4VkEYf/8rV8Ere6u2QaWPgApdMV6JjKr1fAwCTd8AuGXNaWItiPPMseSQzLJ
|
29
|
+
JKP4hVvbc1d+oS925B1lcBiqn2aYvElbyNAVmQPywNNqkWmvtlqj9ZVJfV5HQLdu
|
30
|
+
8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
|
31
|
+
HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
date: 2015-06-28 00:00:00.000000000 Z
|
34
|
+
dependencies:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: sensu-plugin
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.1.0
|
42
|
+
type: :runtime
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.1.0
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: fileutils
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0.7'
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.7'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: json
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.8.3
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.8.3
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: bundler
|
79
|
+
requirement: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '1.7'
|
84
|
+
type: :development
|
85
|
+
prerelease: false
|
86
|
+
version_requirements: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '1.7'
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: codeclimate-test-reporter
|
93
|
+
requirement: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0.4'
|
98
|
+
type: :development
|
99
|
+
prerelease: false
|
100
|
+
version_requirements: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0.4'
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
name: github-markup
|
107
|
+
requirement: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '1.3'
|
112
|
+
type: :development
|
113
|
+
prerelease: false
|
114
|
+
version_requirements: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '1.3'
|
119
|
+
- !ruby/object:Gem::Dependency
|
120
|
+
name: pry
|
121
|
+
requirement: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0.10'
|
126
|
+
type: :development
|
127
|
+
prerelease: false
|
128
|
+
version_requirements: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0.10'
|
133
|
+
- !ruby/object:Gem::Dependency
|
134
|
+
name: rubocop
|
135
|
+
requirement: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - '='
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0.30'
|
140
|
+
type: :development
|
141
|
+
prerelease: false
|
142
|
+
version_requirements: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - '='
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0.30'
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
name: rspec
|
149
|
+
requirement: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '3.1'
|
154
|
+
type: :development
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - "~>"
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '3.1'
|
161
|
+
- !ruby/object:Gem::Dependency
|
162
|
+
name: rake
|
163
|
+
requirement: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - "~>"
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '10.0'
|
168
|
+
type: :development
|
169
|
+
prerelease: false
|
170
|
+
version_requirements: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - "~>"
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '10.0'
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
name: redcarpet
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - "~>"
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '3.2'
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "~>"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '3.2'
|
189
|
+
- !ruby/object:Gem::Dependency
|
190
|
+
name: yard
|
191
|
+
requirement: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - "~>"
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0.8'
|
196
|
+
type: :development
|
197
|
+
prerelease: false
|
198
|
+
version_requirements: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - "~>"
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0.8'
|
203
|
+
description: Sensu plugins for logs
|
204
|
+
email: "<sensu-users@googlegroups.com>"
|
205
|
+
executables:
|
206
|
+
- handler-show-event-config.rb
|
207
|
+
- handler-logevent.rb
|
208
|
+
- check-log.rb
|
209
|
+
- check-journal.rb
|
210
|
+
extensions: []
|
211
|
+
extra_rdoc_files: []
|
212
|
+
files:
|
213
|
+
- CHANGELOG.md
|
214
|
+
- LICENSE
|
215
|
+
- README.md
|
216
|
+
- bin/check-journal.rb
|
217
|
+
- bin/check-log.rb
|
218
|
+
- bin/handler-logevent.rb
|
219
|
+
- bin/handler-show-event-config.rb
|
220
|
+
- lib/sensu-plugins-logs.rb
|
221
|
+
- lib/sensu-plugins-logs/version.rb
|
222
|
+
homepage: https://github.com/sensu-plugins/sensu-plugins-logs
|
223
|
+
licenses:
|
224
|
+
- MIT
|
225
|
+
metadata:
|
226
|
+
maintainer: sensu-plugin
|
227
|
+
development_status: active
|
228
|
+
production_status: unstable - testing recommended
|
229
|
+
release_draft: 'false'
|
230
|
+
release_prerelease: 'false'
|
231
|
+
post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
|
232
|
+
in /etc/default/sensu
|
233
|
+
rdoc_options: []
|
234
|
+
require_paths:
|
235
|
+
- lib
|
236
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
237
|
+
requirements:
|
238
|
+
- - ">="
|
239
|
+
- !ruby/object:Gem::Version
|
240
|
+
version: 1.9.3
|
241
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - ">="
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: '0'
|
246
|
+
requirements: []
|
247
|
+
rubyforge_project:
|
248
|
+
rubygems_version: 2.4.6
|
249
|
+
signing_key:
|
250
|
+
specification_version: 4
|
251
|
+
summary: Sensu plugins for logs
|
252
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|