portertech-sensu 1.10.0
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
- data/CHANGELOG.md +961 -0
- data/MIT-LICENSE.txt +20 -0
- data/README.md +65 -0
- data/exe/sensu-api +10 -0
- data/exe/sensu-client +10 -0
- data/exe/sensu-install +195 -0
- data/exe/sensu-server +10 -0
- data/lib/sensu/api/http_handler.rb +434 -0
- data/lib/sensu/api/process.rb +79 -0
- data/lib/sensu/api/routes/aggregates.rb +196 -0
- data/lib/sensu/api/routes/checks.rb +44 -0
- data/lib/sensu/api/routes/clients.rb +171 -0
- data/lib/sensu/api/routes/events.rb +86 -0
- data/lib/sensu/api/routes/health.rb +45 -0
- data/lib/sensu/api/routes/info.rb +37 -0
- data/lib/sensu/api/routes/request.rb +44 -0
- data/lib/sensu/api/routes/resolve.rb +32 -0
- data/lib/sensu/api/routes/results.rb +153 -0
- data/lib/sensu/api/routes/settings.rb +23 -0
- data/lib/sensu/api/routes/silenced.rb +182 -0
- data/lib/sensu/api/routes/stashes.rb +107 -0
- data/lib/sensu/api/routes.rb +88 -0
- data/lib/sensu/api/utilities/filter_response_content.rb +44 -0
- data/lib/sensu/api/utilities/publish_check_request.rb +107 -0
- data/lib/sensu/api/utilities/publish_check_result.rb +39 -0
- data/lib/sensu/api/utilities/resolve_event.rb +29 -0
- data/lib/sensu/api/utilities/servers_info.rb +43 -0
- data/lib/sensu/api/utilities/transport_info.rb +43 -0
- data/lib/sensu/api/validators/check.rb +55 -0
- data/lib/sensu/api/validators/client.rb +35 -0
- data/lib/sensu/api/validators/invalid.rb +8 -0
- data/lib/sensu/cli.rb +69 -0
- data/lib/sensu/client/http_socket.rb +217 -0
- data/lib/sensu/client/process.rb +655 -0
- data/lib/sensu/client/socket.rb +207 -0
- data/lib/sensu/client/utils.rb +53 -0
- data/lib/sensu/client/validators/check.rb +53 -0
- data/lib/sensu/constants.rb +17 -0
- data/lib/sensu/daemon.rb +396 -0
- data/lib/sensu/sandbox.rb +19 -0
- data/lib/sensu/server/filter.rb +227 -0
- data/lib/sensu/server/handle.rb +201 -0
- data/lib/sensu/server/mutate.rb +92 -0
- data/lib/sensu/server/process.rb +1646 -0
- data/lib/sensu/server/socket.rb +54 -0
- data/lib/sensu/server/tessen.rb +170 -0
- data/lib/sensu/utilities.rb +398 -0
- data/lib/sensu.rb +3 -0
- data/sensu.gemspec +36 -0
- metadata +322 -0
data/MIT-LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2019 Sonian Inc.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+

|
2
|
+
|
3
|
+
[](https://travis-ci.org/sensu/sensu)
|
4
|
+
[](https://github.com/sensu/sensu/blob/master/CHANGELOG.md)
|
5
|
+
[](https://raw.githubusercontent.com/sensu/sensu/master/MIT-LICENSE.txt)
|
6
|
+
[](https://slack.sensu.io/)
|
7
|
+
|
8
|
+
:warning: **ANNOUNCEMENT - Sensu 1.x has reached End-Of-Life (December 31st, 2019)**
|
9
|
+
|
10
|
+
The Sensu 1.x project reached end-of-life on December 31st, 2019. The
|
11
|
+
existing package repositories became unreachable on January 6th, 2020.
|
12
|
+
Please see our blog post for more details:
|
13
|
+
https://blog.sensu.io/announcing-the-sensu-archives
|
14
|
+
|
15
|
+
Sensu 1.x has been superseded by [Sensu Go](https://github.com/sensu/sensu-go).
|
16
|
+
|
17
|
+
As always, we want to hear from the Community and please reach out on
|
18
|
+
Slack or Discourse if you have any questions or concerns.
|
19
|
+
|
20
|
+
# Sensu
|
21
|
+
|
22
|
+
A simple, malleable, and scalable framework for composing
|
23
|
+
the monitoring system you need.
|
24
|
+
|
25
|
+
Sensu is offered in two flavors:
|
26
|
+
|
27
|
+
* Sensu Core - this open source project
|
28
|
+
* [Sensu Enterprise][1] - a full-featured commercial implementation, built on Sensu Core
|
29
|
+
|
30
|
+
## Installation
|
31
|
+
|
32
|
+
Sensu supports a number of Unix-like platforms, as well as Windows.
|
33
|
+
Please see the [list of supported platforms][2] for installation instructions.
|
34
|
+
|
35
|
+
## Documentation
|
36
|
+
|
37
|
+
Please refer to the [online documentation][3] for details
|
38
|
+
on configuring and operating Sensu.
|
39
|
+
|
40
|
+
## Getting Help
|
41
|
+
|
42
|
+
If you have questions not covered by the documentation, the Sensu community
|
43
|
+
is here to help. Please check out our [chat][4] on Slack, or the
|
44
|
+
[sensu-users][5] discussion list.
|
45
|
+
|
46
|
+
Commercial support is also available. See the [support section of our website][6] for more detail.
|
47
|
+
|
48
|
+
## Contributing
|
49
|
+
|
50
|
+
Please observe these [guidelines on contributing][7].
|
51
|
+
|
52
|
+
|
53
|
+
## License
|
54
|
+
|
55
|
+
Sensu Core is released under the [MIT license][8].
|
56
|
+
|
57
|
+
|
58
|
+
[1]: https://sensu.io/solutions/enterprise
|
59
|
+
[2]: https://docs.sensu.io/sensu-core/latest/overview/platforms/
|
60
|
+
[3]: https://docs.sensu.io/sensu-core/latest/
|
61
|
+
[4]: https://slack.sensu.io/
|
62
|
+
[5]: http://groups.google.com/group/sensu-users
|
63
|
+
[6]: https://sensu.io/resources/support
|
64
|
+
[7]: https://github.com/sensu/sensu/blob/master/CONTRIBUTING.md
|
65
|
+
[8]: https://raw.github.com/sensu/sensu/master/MIT-LICENSE.txt
|
data/exe/sensu-api
ADDED
data/exe/sensu-client
ADDED
data/exe/sensu-install
ADDED
@@ -0,0 +1,195 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "optparse"
|
4
|
+
|
5
|
+
module Sensu
|
6
|
+
class Install
|
7
|
+
class << self
|
8
|
+
def cli_options(arguments=ARGV)
|
9
|
+
options = {
|
10
|
+
:verbose => false,
|
11
|
+
:plugins => [],
|
12
|
+
:extensions => [],
|
13
|
+
:clean => false,
|
14
|
+
:proxy => nil
|
15
|
+
}
|
16
|
+
optparse = OptionParser.new do |opts|
|
17
|
+
opts.on("-h", "--help", "Display this message") do
|
18
|
+
puts opts
|
19
|
+
exit
|
20
|
+
end
|
21
|
+
opts.on("-v", "--verbose", "Enable verbose logging") do
|
22
|
+
options[:verbose] = true
|
23
|
+
end
|
24
|
+
opts.on("-p", "--plugin PLUGIN", "Install a Sensu PLUGIN") do |plugin|
|
25
|
+
options[:plugins] << plugin
|
26
|
+
end
|
27
|
+
opts.on("-P", "--plugins PLUGIN[,PLUGIN]", "PLUGIN or comma-delimited list of Sensu plugins to install") do |plugins|
|
28
|
+
options[:plugins].concat(plugins.split(","))
|
29
|
+
end
|
30
|
+
opts.on("-e", "--extension EXTENSION", "Install a Sensu EXTENSION") do |extension|
|
31
|
+
options[:extensions] << extension
|
32
|
+
end
|
33
|
+
opts.on("-E", "--extensions EXTENSION[,EXT]", "EXTENSION or comma-delimited list of Sensu extensions to install") do |extensions|
|
34
|
+
options[:extensions].concat(extensions.split(","))
|
35
|
+
end
|
36
|
+
opts.on("-s", "--source SOURCE", "Install Sensu plugins and extensions from a custom SOURCE") do |source|
|
37
|
+
options[:source] = source
|
38
|
+
end
|
39
|
+
opts.on("-c", "--clean", "Clean up (remove) other installed versions of the plugin(s) and/or extension(s)") do
|
40
|
+
options[:clean] = true
|
41
|
+
end
|
42
|
+
opts.on("-x", "--proxy PROXY", "Install Sensu plugins and extensions via a PROXY URL") do |proxy|
|
43
|
+
options[:proxy] = proxy
|
44
|
+
end
|
45
|
+
end
|
46
|
+
optparse.parse!(arguments)
|
47
|
+
options
|
48
|
+
end
|
49
|
+
|
50
|
+
def log(message)
|
51
|
+
puts "[SENSU-INSTALL] #{message}"
|
52
|
+
end
|
53
|
+
|
54
|
+
def gem_installed?(raw_gem, options={})
|
55
|
+
log "determining if Sensu gem '#{raw_gem}' is already installed ..."
|
56
|
+
gem_name, gem_version = raw_gem.split(":")
|
57
|
+
gem_command = "gem list -i #{gem_name}"
|
58
|
+
gem_command << " --version '#{gem_version}'" if gem_version
|
59
|
+
log gem_command if options[:verbose]
|
60
|
+
if system(gem_command)
|
61
|
+
log "Sensu gem '#{gem_name}' has already been installed"
|
62
|
+
true
|
63
|
+
else
|
64
|
+
log "Sensu gem '#{gem_name}' has not been installed" if options[:verbose]
|
65
|
+
false
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def install_gem(raw_gem, options={})
|
70
|
+
log "installing Sensu gem '#{raw_gem}'"
|
71
|
+
gem_name, gem_version = raw_gem.split(":")
|
72
|
+
gem_command = "gem install #{gem_name}"
|
73
|
+
gem_command << " --version '#{gem_version}'" if gem_version
|
74
|
+
gem_command << " --no-document"
|
75
|
+
gem_command << " --verbose" if options[:verbose]
|
76
|
+
gem_command << " --source #{options[:source]}" if options[:source]
|
77
|
+
gem_command << " --http-proxy #{options[:proxy]}" if options[:proxy]
|
78
|
+
log gem_command if options[:verbose]
|
79
|
+
unless system(gem_command)
|
80
|
+
log "failed to install Sensu gem '#{gem_name}'"
|
81
|
+
log "you can run the sensu-install command again with --verbose for more info" unless options[:verbose]
|
82
|
+
log "please take note of any failure messages above"
|
83
|
+
log "make sure you have build tools installed (e.g. gcc)"
|
84
|
+
log "trying to determine the Sensu plugin homepage for #{gem_name} ..."
|
85
|
+
system("gem specification #{gem_name} -r | grep homepage")
|
86
|
+
exit 2
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def gem_installed_versions(raw_gem, options={})
|
91
|
+
gem_name, gem_version = raw_gem.split(":")
|
92
|
+
log "determining installed versions of Sensu gem '#{gem_name}' ..."
|
93
|
+
gem_command = "gem list #{gem_name}"
|
94
|
+
log gem_command if options[:verbose]
|
95
|
+
gem_command_output = `#{gem_command}`
|
96
|
+
last_line = gem_command_output.split("\n").last
|
97
|
+
if last_line == "false"
|
98
|
+
[]
|
99
|
+
else
|
100
|
+
/\((.*)\)/.match(last_line)[1].split(", ")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def clean_gem(raw_gem, options={})
|
105
|
+
log "cleaning Sensu gem '#{raw_gem}'"
|
106
|
+
gem_name, gem_version = raw_gem.split(":")
|
107
|
+
gem_command = "gem clean #{gem_name}"
|
108
|
+
if gem_version
|
109
|
+
if gem_installed_versions(raw_gem, options) == [gem_version]
|
110
|
+
log "Sensu gem '#{gem_name}' version '#{gem_version}' is the only version installed"
|
111
|
+
else
|
112
|
+
gem_command = "gem uninstall #{gem_name} --version '!= #{gem_version}' -a"
|
113
|
+
end
|
114
|
+
end
|
115
|
+
log gem_command if options[:verbose]
|
116
|
+
if system(gem_command)
|
117
|
+
log "successfully cleaned Sensu gem '#{gem_name}'"
|
118
|
+
else
|
119
|
+
log "failed to clean Sensu gem '#{gem_name}'"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def install_plugins(plugins, options={})
|
124
|
+
log "installing Sensu plugins ..."
|
125
|
+
log "provided Sensu plugins: #{plugins}" if options[:verbose]
|
126
|
+
plugin_gems = plugins.map do |plugin|
|
127
|
+
if plugin.start_with?("sensu-plugins-")
|
128
|
+
plugin
|
129
|
+
else
|
130
|
+
"sensu-plugins-#{plugin}"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
log "compiled Sensu plugin gems: #{plugin_gems}" if options[:verbose]
|
134
|
+
to_be_installed = plugin_gems.reject do |raw_gem|
|
135
|
+
gem_installed?(raw_gem, options)
|
136
|
+
end
|
137
|
+
log "Sensu plugin gems to be installed: #{to_be_installed}"
|
138
|
+
to_be_installed.each do |raw_gem|
|
139
|
+
install_gem(raw_gem, options)
|
140
|
+
end
|
141
|
+
log "successfully installed Sensu plugins: #{to_be_installed}"
|
142
|
+
if options[:clean]
|
143
|
+
log "cleaning Sensu plugin gems: #{plugin_gems}" if options[:verbose]
|
144
|
+
plugin_gems.each do |raw_gem|
|
145
|
+
clean_gem(raw_gem, options)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def install_extensions(extensions, options={})
|
151
|
+
if ENV["EMBEDDED_RUBY"] == "false"
|
152
|
+
log "EMBEDDED_RUBY must be set to true in order to install extensions"
|
153
|
+
log "failed to install extensions: #{extensions}"
|
154
|
+
exit 2
|
155
|
+
end
|
156
|
+
log "installing Sensu extensions ..."
|
157
|
+
log "provided Sensu extensions: #{extensions}" if options[:verbose]
|
158
|
+
extension_gems = extensions.map do |extension|
|
159
|
+
if extension.start_with?("sensu-extensions-")
|
160
|
+
extension
|
161
|
+
else
|
162
|
+
"sensu-extensions-#{extension}"
|
163
|
+
end
|
164
|
+
end
|
165
|
+
log "compiled Sensu extension gems: #{extension_gems}" if options[:verbose]
|
166
|
+
to_be_installed = extension_gems.reject do |raw_gem|
|
167
|
+
gem_installed?(raw_gem, options)
|
168
|
+
end
|
169
|
+
log "Sensu extension gems to be installed: #{to_be_installed}"
|
170
|
+
to_be_installed.each do |raw_gem|
|
171
|
+
install_gem(raw_gem, options)
|
172
|
+
end
|
173
|
+
log "successfully installed Sensu extensions: #{to_be_installed}"
|
174
|
+
if options[:clean]
|
175
|
+
log "cleaning Sensu extension gems: #{extension_gems}" if options[:verbose]
|
176
|
+
extension_gems.each do |raw_gem|
|
177
|
+
clean_gem(raw_gem, options)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
def run
|
183
|
+
options = cli_options
|
184
|
+
unless options[:plugins].empty?
|
185
|
+
install_plugins(options[:plugins], options)
|
186
|
+
end
|
187
|
+
unless options[:extensions].empty?
|
188
|
+
install_extensions(options[:extensions], options)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
Sensu::Install.run
|