One significant improvement in this version is for the AWS S3 cloud driver. First the code base has been brought much closer to the Enterprise version (still a long ways to go). Second major change is that the community code now uses the latest version of libs3 as maintained by Bacula Systems. The libs3 code is available as a tar file for Bacula version 9.6.4 at:
http://www.bacula.org/downloads/libs3-20200523.tar.gzhttp://www.bacula.org/downloads/libs3-20200523.tar.gz
Note: Version 9.6.4 must be compiled with the above libs3 version or later. To build libs3:
- Remove any libs3 package loaded by your OS - Download above link - tar xvfz libs3-20200523.tar.gz - cd libs3-20200523 - make # should have no errors - sudo make install
Then when you do your Bacula ./configure <args> it should automatically detect and use the libs3. The output from the ./configure will show whether or not libs3 was found during the configuration. E.g.
S3 support: yes
in the output from ./configure.
Containers is a relatively new system level virtualization concept that has less overhead than traditional virtualation. This is true because Container use the underlying operating system to provide all the needed services thus eliminating the need for multiple operating systems.
Docker containers rely on sophisticated file system level data abstraction with a number of read-only images to create templates used for container initialization.
With its Docker Plugin, the Bacula will save the full container image including all read-only and writable layers into a single image archive.
It is not necessary to install a Bacula File daemon in each container, so each container can be backed up from a common image repository.
The Bacula Docker Plugin will contact the Docker service to read and save the contents of any system image or container image using snapshots (default behavior) and dump them using the Docker API.
The Docker Plugin whitepaper provides more detailed information.
All Bacula daemons can now collect internal performance statistics periodically and provide mechanisms to store the values to a CSV file or to send the values to a Graphite daemon via the network. Graphite is an enterprise-ready monitoring tool (https://graphiteapp.org).
To activate the statistic collector feature, simply define a Statistics resource in the daemon of your choice:
Statistics { Name = "Graphite" Type = Graphite # Graphite host information Host = "localhost" Port = 2003 }
It is possible to change the interval that is used to collect the statistics with the Interval directive (5 mins by default), and use the Metrics directive to select the data to collect (all by default).
If the Graphite daemon cannot be reached, the statistics data are spooled on disk and are sent automatically when the Graphite daemon is available again.
The bconsole statistics command can be used to display the current statistics in various formats (text or json for now).
*statistics
Statistics available for:
1: Director
2: Storage
3: Client
Select daemon type for statistics (1-3): 1
bacula.dir.config.clients=1
bacula.dir.config.jobs=3
bacula.dir.config.filesets=2
bacula.dir.config.pools=3
bacula.dir.config.schedules=2
...
*statistics storage
...
bacula.storage.bac-sd.device.File1.readbytes=214
bacula.storage.bac-sd.device.File1.readtime=12
bacula.storage.bac-sd.device.File1.readspeed=0.000000
bacula.storage.bac-sd.device.File1.writespeed=0.000000
bacula.storage.bac-sd.device.File1.status=1
bacula.storage.bac-sd.device.File1.writebytes=83013529
bacula.storage.bac-sd.device.File1.writetime=20356
...
The statistics bconsole command can accept parameters to be scripted, for example it is possible to export the data in JSON, or to select which metrics to display.
*statistics bacula.dir.config.clients bacula.dir.config.jobs json
[
{
"name": "bacula.dir.config.clients",
"value": 1,
"type": "Integer",
"unit": "Clients",
"description": "The number of defined clients in the Director."
},
{
"name": "bacula.dir.config.jobs",
"value": 3,
"type": "Integer",
"unit": "Jobs",
"description": "The number of defined jobs in the Director."
}
]
The .status statistics command can be used to query the status of the Statistic collector thread.
*.status dir statistics
Statistics backend: Graphite is running
type=2 lasttimestamp=12-Sep-18 09:45
interval=300 secs
spooling=in progress
lasterror=Could not connect to localhost:2003 Err=Connection refused
Update Statistics: running interval=300 secs lastupdate=12-Sep-18 09:45
*