riemann-bacula 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []