riemann-bacula 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6352841033d7fa669793cba957a59cc4fa35369d2866914dbb782bb3b507f97
4
- data.tar.gz: 66826e73f558d5f2c788d0a5b3b60a413b420f76e47957a517727f51ae7ec15c
3
+ metadata.gz: c7c2bdcd4f13414f04163482d874341b8771dbff7ecb84fe2c96d68ec75e8553
4
+ data.tar.gz: 22a3eb9612eeec5727e800a915dc534d47978baf7b055425efe0f24c13966c7c
5
5
  SHA512:
6
- metadata.gz: 3d1888b9a7920c0dab4b5c3c30ae8b06acf5ed8e54eaa70e6e848db3ff1dd1087282b42b2a0be1a857935e6497ff662e445383c2be07276a033d7a1ce84fb042
7
- data.tar.gz: 74117f74b1181b5d619e27d04f888627ee1d212a9fc66aa78a657374847f8fad9a3b1c999976126db5fab600ef5698a9b699b4d562997a39bbc6940bd3850acb
6
+ metadata.gz: 6cd99cf77b7e0ca07f2d8d4d48f408cdf7a134ff9e2f43ac512e5ddc9b75cc54dda3c120583983a32ca3d1824da2cf68df3ebfd4ded7efd75f6bdb9fbd11d382
7
+ data.tar.gz: 6929197169f1a28d3bfcf094120f8adde8a289a2e8cc2f89ca07a1b8659e1757c0f935488de75274d72a21fe9418365eb1d676a1a3b395b6e340d7b3334f2ce8
data/.github/CODEOWNERS CHANGED
@@ -1,4 +1 @@
1
- # DO NOT EDIT THIS FILE!
2
- # This file is managed by ModuleSync.
3
-
4
- * @opus-codium/core
1
+ * @opus-codium/core, @opus-codium/vittoria-conseil
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [v2.0.0](https://github.com/opus-codium/riemann-bacula/tree/v2.0.0) (2022-11-14)
4
+
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
+
3
15
  ## [v1.2.0](https://github.com/opus-codium/riemann-bacula/tree/v1.2.0) (2022-10-27)
4
16
 
5
17
  [Full Changelog](https://github.com/opus-codium/riemann-bacula/compare/v1.1.0...v1.2.0)
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
  ```
@@ -3,7 +3,7 @@
3
3
  module Riemann
4
4
  module Tools # :nodoc:
5
5
  class Bacula
6
- VERSION = '1.2.0'
6
+ VERSION = '2.0.0'
7
7
  end
8
8
  end
9
9
  end
@@ -9,16 +9,54 @@ module Riemann
9
9
  class Bacula
10
10
  include Riemann::Tools
11
11
 
12
- opt :details, 'Send detailed metrics beyond overall status', default: true
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
- options
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
- send_events(data) if data
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,22 +217,7 @@ module Riemann
189
217
  value.split('|')
190
218
  end
191
219
 
192
- def send_events(data)
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
- event[:job_name] = data['Job Name']
203
- event[:backup_level] = data['Backup Level']
204
- report(event)
205
-
206
- return unless options[:details]
207
-
220
+ def send_details(data)
208
221
  [
209
222
  'Elapsed time',
210
223
  'FD Files Written',
@@ -217,12 +230,14 @@ module Riemann
217
230
  'Comm Line Compression',
218
231
  'Non-fatal FD errors',
219
232
  ].each do |metric|
220
- event = {}
221
- event[:service] = "bacula backup #{data['Job Name']} #{data['Backup Level'].downcase} #{metric.downcase}"
222
- event[:metric] = data[metric]
223
- event[:job_name] = data['Job Name']
224
- event[:backup_level] = data['Backup Level']
225
- report(event)
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
+ })
226
241
  end
227
242
  end
228
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: 1.2.0
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-10-27 00:00:00.000000000 Z
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.2.5
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: []