passify-bareos
A script for transforming Bacula / Bareos job results into an Icinga2 API passive check result. This is designed to be used with a RunScript after the job has completed on the agent.
Installation
- Clone this repository to your server.
- Create a configuration file or run the script interactively for the first time to provide the required information:
- Icinga Master API URL (submissions are only possible through the currently active master).
- Verify the fingerprint:
openssl x509 -in /var/lib/icinga2/certs/<hostname>.crt -noout -fingerprint -sha256
- Username and password for API submission (only basic-auth is currently supported).
Alternatively, deploy a configuration file (config.ini by default) alongside the script:
[DEFAULT]
url = https://localhost:5665/v1/actions/process-check-result
check_source = example.com
user = <api_user>
password = <api_password>
[TLS]
fingerprint = d163f22c2021a498926ff8c30da0288ac20d1b9edaa80d1dbb14c0aebf85245b
Creating an API User for Passive Result Submission
Add the following configuration to /etc/icinga2/features-available/api.conf on the master:
object ApiUser "<api_user>" {
permissions = [ "actions/process-check-result" ]
password = "<api_password>"
}
Ensure that the API feature in Icinga2 is activated.
Deployment
Usage
usage: passify-bareos.py [-h] [--config CONFIG] [--timeout TIMEOUT] [--ttl TTL] -s SERVICE_NAME [--prefix-time]
{Backup} {Full,Differential,Incremental,VirtualFull} {OK,Error,Fatal Error,Canceled,Differences,Unknown term code} JOB_UID size
Positional Arguments:
{Backup}: Bareos job type (currently onlyBackupis supported).{Full,Differential,Incremental,VirtualFull}: Backup job level.{OK,Error,Fatal Error,Canceled,Differences,Unknown term code}: Backup job result value.JOB_UID: Unique job name (e.g.,jobname.date.time...).size: Number of processed bytes for the backup job.
Options:
-h, --help: Show help message and exit.--config CONFIG: Path to configuration file (default:config.ini).--timeout TIMEOUT: Optional execution timeout in seconds.--ttl TTL: Time-to-live argument for Icinga API.-s SERVICE_NAME: Specify the service name.--prefix-time: Prefix the service name with the scheduled time.
Integration into Bacula / Bareos
To integrate, create a RunScript directive inside your job definition and add a passive check to your Icinga instance.
Job Definition
Add the following RunScript directive inside your job configuration:
RunScript {
RunsWhen = After
RunsOnSuccess = Yes
RunsOnFailure = Yes
RunsOnClient = Yes
FailJobOnError = No
Command = "/bin/bash -c '/usr/local/bin/passify-bareos/src/passify-bareos/passify-bareos.py --prefix-time -s \"backup check\" \"%t\" \"%l\" \"%e\" \"%j\" \"%b\"'"
}
Modify the Command as needed, but note that the interface is designed to take these parameters in this sequence.
Icinga Passive Check
Add a passive check for the host where the agent/filedaemon runs and should be backed up.
Example Icinga Director configuration:
object Service "23:00 backup check" {
host_name = "example.com"
check_command = "passive-crit"
max_check_attempts = "1"
check_interval = 1d
retry_interval = 15s
enable_active_checks = true
enable_passive_checks = true
enable_perfdata = true
volatile = false
command_endpoint = host_name
vars.dummy_state = 2
}
Setting dummy_state = 2 marks a missing passive check as critical, as it likely indicates that a backup was not completed at all.
Modify the check interval to the shortest expected backup completion window.
Monitoring Multiple Backup Jobs per Host in 24h
To monitor multiple backup jobs per day:
- Create one check per backup time window.
- Prefix the service name with the scheduled backup time (e.g.,
23:00). - Use the
--prefix-timeoption to dynamically match the expected backup time.
Changelog:
- reduced time granularity to bareos config format specification granularity
Metadata
Release files for icinga-passify-bareos 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| icinga_passify_bareos-0.1.4.tar.gz | 8.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| icinga_passify_bareos-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.8 kB
Release files / icinga_passify_bareos-0.1.4.tar.gz
| Download URL | icinga_passify_bareos-0.1.4.tar.gz |
|---|---|
| Size | 8.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f16b5c70d6461fab4e62470686811f93b96b51ec69d52976da48061d6183aba5
|
|
BLAKE2b-256 checksum How to use checksums |
7ee7bb8b207f09ca571c75a0fbd2d8e4c35669ac2f51c7a56435b54e22b37293
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.2
|
Release files / icinga_passify_bareos-0.1.4-py3-none-any.whl
| Download URL | icinga_passify_bareos-0.1.4-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a6316848d34a0b1ce43a5451807dcd21fb6556a09e6583b1d6c4cd6c06c358ee
|
|
BLAKE2b-256 checksum How to use checksums |
85c2ff0eac988bb6244abf1c745236cbca34a707894331c475ba633c648d89a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.2
|