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 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
+ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-logs.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-logs)
4
+ [![Gem Version](https://badge.fury.io/rb/sensu-plugins-logs.svg)](http://badge.fury.io/rb/sensu-plugins-logs)
5
+ [![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-logs/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-logs)
6
+ [![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-logs/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-logs)
7
+ [![Dependency Status](https://gemnasium.com/sensu-plugins/sensu-plugins-logs.svg)](https://gemnasium.com/sensu-plugins/sensu-plugins-logs)
8
+ [ ![Codeship Status for sensu-plugins/sensu-plugins-logs](https://codeship.com/projects/85800600-e95b-0132-81a4-7e47788fdd48/status?branch=master)](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'
@@ -0,0 +1,9 @@
1
+ module SensuPluginsLogs
2
+ module Version
3
+ MAJOR = 0
4
+ MINOR = 0
5
+ PATCH = 1
6
+
7
+ VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
+ end
9
+ end
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