riemann-bacula 1.1.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: '0499f815167711cba4183d48892adaac79f6e4e85f93afc98bff39d0dbd150a3'
4
- data.tar.gz: e3fc084ea69056b5ac40ee69a85688ce22cc41594838092fbcf7e7cedcc0a763
3
+ metadata.gz: c7c2bdcd4f13414f04163482d874341b8771dbff7ecb84fe2c96d68ec75e8553
4
+ data.tar.gz: 22a3eb9612eeec5727e800a915dc534d47978baf7b055425efe0f24c13966c7c
5
5
  SHA512:
6
- metadata.gz: 60ab698e159a288be2417ad6e04e34c144d8865422b9eb841b6691679a232a9e83adaf50539cd70f67d4bfa8f53c9d5b4653f9c866db61d93fae41de3c054622
7
- data.tar.gz: 07b689de3b9e91c88ce565adbb3c3ac4f7b4e6d42f9b3fc2b8b963f6a0f277f5ba59f17ff4b5f78cac71a92c0d1d1d56319ca940ad19dac18b3947a89e68bb63
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,8 +1,28 @@
1
1
  # Changelog
2
2
 
3
- ## [1.1.0](https://github.com/opus-codium/riemann-bacula/tree/1.1.0) (2022-10-20)
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.0.0...1.1.0)
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
@@ -3,7 +3,7 @@
3
3
  module Riemann
4
4
  module Tools # :nodoc:
5
5
  class Bacula
6
- VERSION = '1.1.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,20 +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
- 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
- event = {}
219
- event[:service] = "bacula backup #{data['Job Name']} #{data['Backup Level'].downcase} #{metric.downcase}"
220
- event[:metric] = data[metric]
221
- 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
+ })
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: 1.1.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-20 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: []