riemann-bacula 1.1.0 → 2.0.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 +4 -4
- data/.github/CODEOWNERS +1 -4
- data/CHANGELOG.md +22 -2
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/lib/riemann/tools/bacula/version.rb +1 -1
- data/lib/riemann/tools/bacula.rb +54 -35
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7c2bdcd4f13414f04163482d874341b8771dbff7ecb84fe2c96d68ec75e8553
|
4
|
+
data.tar.gz: 22a3eb9612eeec5727e800a915dc534d47978baf7b055425efe0f24c13966c7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cd99cf77b7e0ca07f2d8d4d48f408cdf7a134ff9e2f43ac512e5ddc9b75cc54dda3c120583983a32ca3d1824da2cf68df3ebfd4ded7efd75f6bdb9fbd11d382
|
7
|
+
data.tar.gz: 6929197169f1a28d3bfcf094120f8adde8a289a2e8cc2f89ca07a1b8659e1757c0f935488de75274d72a21fe9418365eb1d676a1a3b395b6e340d7b3334f2ce8
|
data/.github/CODEOWNERS
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,28 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## [
|
3
|
+
## [v2.0.0](https://github.com/opus-codium/riemann-bacula/tree/v2.0.0) (2022-11-14)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/opus-codium/riemann-bacula/compare/v1.
|
5
|
+
[Full Changelog](https://github.com/opus-codium/riemann-bacula/compare/v1.2.0...v2.0.0)
|
6
|
+
|
7
|
+
**Breaking changes:**
|
8
|
+
|
9
|
+
- Add parameters and make them mandatory [\#7](https://github.com/opus-codium/riemann-bacula/pull/7) ([smortex](https://github.com/smortex))
|
10
|
+
|
11
|
+
**Merged pull requests:**
|
12
|
+
|
13
|
+
- Fix how we set the host of bacula events [\#8](https://github.com/opus-codium/riemann-bacula/pull/8) ([smortex](https://github.com/smortex))
|
14
|
+
|
15
|
+
## [v1.2.0](https://github.com/opus-codium/riemann-bacula/tree/v1.2.0) (2022-10-27)
|
16
|
+
|
17
|
+
[Full Changelog](https://github.com/opus-codium/riemann-bacula/compare/v1.1.0...v1.2.0)
|
18
|
+
|
19
|
+
**Implemented enhancements:**
|
20
|
+
|
21
|
+
- Embed more metadata in events [\#5](https://github.com/opus-codium/riemann-bacula/pull/5) ([smortex](https://github.com/smortex))
|
22
|
+
|
23
|
+
## [v1.1.0](https://github.com/opus-codium/riemann-bacula/tree/v1.1.0) (2022-10-20)
|
24
|
+
|
25
|
+
[Full Changelog](https://github.com/opus-codium/riemann-bacula/compare/v1.0.0...v1.1.0)
|
6
26
|
|
7
27
|
**Implemented enhancements:**
|
8
28
|
|
data/README.md
CHANGED
@@ -17,7 +17,7 @@ In your Bacula Director configuration, add a Message resource like this (the pro
|
|
17
17
|
```
|
18
18
|
Messages {
|
19
19
|
Name = Standard
|
20
|
-
MailCommand = "riemann-bacula"
|
20
|
+
MailCommand = "riemann-bacula --event-host \"%h\" --job-name \"%n\" --backup-level \"%l\" --status \"%e\" --bytes \"%b\" --files \"%F\""
|
21
21
|
Mail = sysadmin@example.com = all, !skipped
|
22
22
|
}
|
23
23
|
```
|
data/Rakefile
CHANGED
@@ -15,6 +15,6 @@ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
|
15
15
|
config.user = 'opus-codium'
|
16
16
|
config.project = 'riemann-bacula'
|
17
17
|
config.exclude_labels = ['skip-changelog']
|
18
|
-
config.future_release = Riemann::Tools::Bacula::VERSION
|
18
|
+
config.future_release = "v#{Riemann::Tools::Bacula::VERSION}"
|
19
19
|
config.since_tag = 'v1.0.0'
|
20
20
|
end
|
data/lib/riemann/tools/bacula.rb
CHANGED
@@ -9,16 +9,54 @@ module Riemann
|
|
9
9
|
class Bacula
|
10
10
|
include Riemann::Tools
|
11
11
|
|
12
|
-
opt :
|
12
|
+
opt :job_name, 'Job name (%n)', short: :none, type: :string
|
13
|
+
opt :backup_level, 'Job Level (%l)', short: :none, type: :string
|
14
|
+
opt :status, 'Job Exit Status (%e)', short: :none, type: :string
|
15
|
+
|
16
|
+
opt :bytes, 'Job Bytes (%b)', short: :none, type: :integer
|
17
|
+
opt :files, 'Job Files (%F)', short: :none, type: :integer
|
18
|
+
|
19
|
+
opt :details, 'Send detailed metrics beyond overall status', short: :none, default: true
|
13
20
|
|
14
21
|
def self.process_stdin
|
15
22
|
new.process_stdin
|
16
23
|
end
|
17
24
|
|
18
25
|
def run
|
19
|
-
|
26
|
+
%i[job_name backup_level status].each do |name|
|
27
|
+
raise("Parameter #{name} is required") unless opts[name]
|
28
|
+
end
|
29
|
+
|
20
30
|
data = parse($stdin.read)
|
21
|
-
|
31
|
+
|
32
|
+
report({
|
33
|
+
service: "bacula backup #{opts[:job_name]}",
|
34
|
+
state: bacula_backup_state,
|
35
|
+
job_name: opts[:job_name],
|
36
|
+
backup_level: opts[:backup_level],
|
37
|
+
description: data['Termination'],
|
38
|
+
})
|
39
|
+
|
40
|
+
%i[bytes files].each do |metric|
|
41
|
+
next unless opts[metric]
|
42
|
+
|
43
|
+
report({
|
44
|
+
service: "bacula backup #{opts[:job_name]} #{opts[:backup_level].downcase} #{metric}",
|
45
|
+
metric: opts[metric],
|
46
|
+
job_name: opts[:job_name],
|
47
|
+
backup_level: opts[:backup_level],
|
48
|
+
})
|
49
|
+
end
|
50
|
+
|
51
|
+
send_details(data) if options[:details]
|
52
|
+
end
|
53
|
+
|
54
|
+
def bacula_backup_state
|
55
|
+
case opts[:status]
|
56
|
+
when 'OK' then 'ok'
|
57
|
+
else
|
58
|
+
'critical'
|
59
|
+
end
|
22
60
|
end
|
23
61
|
|
24
62
|
def parse(text)
|
@@ -43,19 +81,14 @@ module Riemann
|
|
43
81
|
line_continuation = (key if line.length == 998)
|
44
82
|
end
|
45
83
|
|
46
|
-
return nil unless valid?(data)
|
47
|
-
|
48
84
|
enhance(data)
|
49
85
|
end
|
50
86
|
|
51
|
-
def valid?(data)
|
52
|
-
%w[
|
53
|
-
Job
|
54
|
-
Termination
|
55
|
-
].all? { |key| data.key?(key) }
|
56
|
-
end
|
57
|
-
|
58
87
|
def enhance(data)
|
88
|
+
# If the message on stdin was trucated, the last item might not make
|
89
|
+
# sense.
|
90
|
+
data.delete(data.keys.last) if data.keys.last != 'Termination'
|
91
|
+
|
59
92
|
{
|
60
93
|
parse_size: [
|
61
94
|
'FD Bytes Written',
|
@@ -103,7 +136,6 @@ module Riemann
|
|
103
136
|
|
104
137
|
extract_client_info(data)
|
105
138
|
extract_backup_level_info(data)
|
106
|
-
extract_job_name(data)
|
107
139
|
|
108
140
|
data
|
109
141
|
end
|
@@ -126,10 +158,6 @@ module Riemann
|
|
126
158
|
data['Client Version'] = Regexp.last_match(2)
|
127
159
|
end
|
128
160
|
|
129
|
-
def extract_job_name(data)
|
130
|
-
data['Job Name'] = data['Job'].sub(/\.\d{4}-\d{2}-\d{2}_\d{2}\.\d{2}\.\d{2}_\d{2}\z/, '')
|
131
|
-
end
|
132
|
-
|
133
161
|
def extract_source(item, data)
|
134
162
|
return unless /\A"([^"]+)" \(From (Client|Job|Pool) resource\)\z/.match(data[item])
|
135
163
|
|
@@ -189,20 +217,7 @@ module Riemann
|
|
189
217
|
value.split('|')
|
190
218
|
end
|
191
219
|
|
192
|
-
def
|
193
|
-
event = {}
|
194
|
-
event[:service] = "bacula backup #{data['Job Name']}"
|
195
|
-
event[:state] = case data['Termination']
|
196
|
-
when /\A(Backup|Restore) OK\z/ then 'ok'
|
197
|
-
when 'Backup OK -- with warnings' then 'warning'
|
198
|
-
else
|
199
|
-
'critical'
|
200
|
-
end
|
201
|
-
event[:description] = data['Termination']
|
202
|
-
report(event)
|
203
|
-
|
204
|
-
return unless options[:details]
|
205
|
-
|
220
|
+
def send_details(data)
|
206
221
|
[
|
207
222
|
'Elapsed time',
|
208
223
|
'FD Files Written',
|
@@ -215,10 +230,14 @@ module Riemann
|
|
215
230
|
'Comm Line Compression',
|
216
231
|
'Non-fatal FD errors',
|
217
232
|
].each do |metric|
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
233
|
+
next unless data[metric]
|
234
|
+
|
235
|
+
report({
|
236
|
+
service: "bacula backup #{opts[:job_name]} #{opts[:backup_level].downcase} #{metric.downcase}",
|
237
|
+
metric: data[metric],
|
238
|
+
job_name: opts[:job_name],
|
239
|
+
backup_level: opts[:backup_level],
|
240
|
+
})
|
222
241
|
end
|
223
242
|
end
|
224
243
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riemann-bacula
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Romain Tartière
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: riemann-tools
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
-
description:
|
125
|
+
description:
|
126
126
|
email:
|
127
127
|
- romain@blogreen.org
|
128
128
|
executables:
|
@@ -153,7 +153,7 @@ metadata:
|
|
153
153
|
source_code_uri: https://github.com/opus-codium/riemann-bacula
|
154
154
|
changelog_uri: https://github.com/opus-codium/riemann-bacula
|
155
155
|
rubygems_mfa_required: 'true'
|
156
|
-
post_install_message:
|
156
|
+
post_install_message:
|
157
157
|
rdoc_options: []
|
158
158
|
require_paths:
|
159
159
|
- lib
|
@@ -168,8 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
168
|
- !ruby/object:Gem::Version
|
169
169
|
version: '0'
|
170
170
|
requirements: []
|
171
|
-
rubygems_version: 3.
|
172
|
-
signing_key:
|
171
|
+
rubygems_version: 3.3.23
|
172
|
+
signing_key:
|
173
173
|
specification_version: 4
|
174
174
|
summary: Submits bacula information to riemann
|
175
175
|
test_files: []
|