Subsections

New Features in 9.6.0

Docker Plugin

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.


Real-Time Statistics Monitoring

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).

Figure: Graphite Examples
Image graphite1 Image graphite2

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
*