|
From: Bill A. <wa...@pr...> - 2025-04-06 05:05:38
|
On 4/1/25 6:58 AM, Mehrdad Ravanbod wrote:
> Hi Guys
>
> I have managed to gt the mail notifications working on my Bacula
> installation, but I seem to have encountered a problem
>
> I don't want to get a notification for successful jobs only on jobs that
> fail(get an error) and jobs that do complete but with warnings
>
> The first one is easy, just using MailOnError keyword, BUT there is no
> keyword command for warnings and MailOnError does not generate an email
> for these jobs
>
> has anyone managed to do this, i.e get a mail notification for jobs that
> do complete but with warning(with out turning on mail for all jobs)??
>
> Regards /Mehrdad
Hello Mehrdad,
As you have discovered, there is no such setting/option/feature.
The reason for this is as follows:
In the catalog, a `jobstatus` of "W" was considered very early on in the development of Bacula, and, in some hard-coded
queries where the goal is to select Good Jobs (Termination: Backup OK), o
r Good jobs with warnings (Termination: Backup OK --
with warnings), there is an "AND jobstatus IN ('T', 'W')" clause.
However, the "W" has never been implemented in any code that inserts or modifies the Job table's jobstatus field, so you will
never find a "W" in this field for any job - unless you manually set it. :)
Here is the "status" table in the bacula catalog database where we can see that a jobstatus of "W: Terminated normally with
warnings" exists:
----8<----
# sudo -u bacula psql bacula
psql (17.2)
Type "help" for help.
bacula=> select * from status;
jobstatus | jobstatuslong | severity
-----------+-----------------------------------+----------
C | Created, not yet running | 15
R | Running | 15
B | Blocked | 15
T | Completed successfully | 10
E | Terminated with errors | 25
e
| Non-fatal error | 20
f | Fatal error | 100
D | Verify found differences | 15
A | Canceled by user | 90
F | Waiting for Client | 15
S | Waiting for Storage daemon | 15
m | Waiting for new media |
M | Waiting for media mount | 15
s | Waiting for storage resource | 15
j | Waiting for job resource | 15
c | Waiting for client resource | 15
d | Waiting on maximum jobs | 15
t | Waiting on start time | 15
p | Waiting on higher priority jobs | 15
a | SD despooling attributes | 15
i | Doing batch insert file records | 15
I | Incomplete Job | 25
l | Doing data desp
ooling | 15
L | Committing data (last despool) | 15
u | Cloud upload | 15
w | Cloud download | 15
q | Queued waiting for device | 15
W | Terminated normally with warnings | 25 <------ Here
(28 rows)
----8<----
The way for you to accomplish what you are looking for would be with a small script that your `mailcommand` would call
(instead of calling the bsmtp binary), and in that script is where you would make the decisions on when to send an email or
not, and where to send it.
A quick idea would be to pass the script the jobid, and other things you would want to use on the email subject line of any
emails that get sent, as well as the entire log text (which is passed automatically via stdin, I believe...)
Then, the simplest way to make the determination of who and when to send an email without any database queries is to do a
simple string comparison on the Job's Summary line `Termination: xxxxxx`
Doing something like this would then take all the responsibility about where and when to send emails away from Bacula, and
put it in the script based on the decisions it makes.
This would then also remove the need for using `mailonerror` etc in your Messages resources...
Alternatively, if you do not need to send job logs with specific termination statuses to different places, and have someone
read and deal with every email that Bacula sends, you might want to take a look at the "Bacula Backup Report" Python script
that I wrote and have released to the open-source community for free.
It is quite customizable, and when run via cron each morning, it sends an HTML email summarizing all of your jobs in the past
(default) 24 hours.
You can even have cron trigger it multiple times each morning, each time using different settings from the config file so
that each morning you can have differe
nt reports, based on different criteria, sent to different people/teams. Your boss will
be happy to always get email reports of all GOOD jobs. :) But seriously, as a real example, you might have an "all jobs with
errors or which failed" email report be sent to a team that would need to deal with these issues.
The latest version of the script (baculabackupreport.py) may be found on my Github account here: https://github.com/waa
Good luck,
Bill
--
Bill Arlofski
wa...@pr...
|