mirror of https://github.com/mikaku/Monitorix.git
Added the ability to include an alert for each defined filesystem in the 'fs' graph. The previous alert system in this graph is now deprecated
This commit is contained in:
parent
9a56b9608c
commit
3eea86b375
2
Changes
2
Changes
|
@ -16,6 +16,8 @@
|
|||
- Added support for postfix-policyd-spf-perl SPF handler in Mail graph.
|
||||
(thanks to Claude Nadon, claude AT ws01.info)
|
||||
- Added support for process names that include spaces in Process graph. [#94]
|
||||
- Added the ability to include an alert for each defined filesystem in the 'fs'
|
||||
graph. The previous alert system in this graph is now deprecated.
|
||||
- Fixed the text color in the bottom URL of the Bind graph.
|
||||
- Fixed the text color in the bottom URL of the Icecast Streaming Server graph.
|
||||
- Fixed a problem with multiple 'ApplicationInstance' tags in Wowza Server
|
||||
|
|
38
lib/fs.pm
38
lib/fs.pm
|
@ -521,15 +521,12 @@ sub fs_init {
|
|||
}
|
||||
}
|
||||
|
||||
# check dependencies
|
||||
if(lc($fs->{alerts}->{rootfs_enabled}) eq "y") {
|
||||
if(! -x $fs->{alerts}->{rootfs_script}) {
|
||||
logger("$myself: ERROR: script '$fs->{alerts}->{rootfs_script}' doesn't exist or don't has execution permissions.");
|
||||
}
|
||||
# check for deprecated options
|
||||
if($fs->{alerts}->{rootfs_enabled} || $fs->{alerts}->{rootfs_timeintvl} || $fs->{alerts}->{rootfs_threshold} || $fs->{alerts}->{rootfs_script}) {
|
||||
logger("$myself: WARNING: you have deprecated options in the <alerts> section. Please read the monitorix.conf(5) man page and consider also upgrade your current configuration file.");
|
||||
}
|
||||
|
||||
$config->{fs_hist} = ();
|
||||
$config->{fs_hist_alert1} = 0;
|
||||
push(@{$config->{func_update}}, $package);
|
||||
logger("$myself: Ok") if $debug;
|
||||
}
|
||||
|
@ -684,22 +681,27 @@ sub fs_update {
|
|||
# prevents a division by 0 if device is not responding
|
||||
$ino = ($used * 100) / ($used + $free) unless $used + $free == 0;
|
||||
|
||||
# FS alert
|
||||
if($f eq "/" && lc($fs->{alerts}->{rootfs_enabled}) eq "y") {
|
||||
if(!$fs->{alerts}->{rootfs_threshold} || $use < $fs->{alerts}->{rootfs_threshold}) {
|
||||
$config->{fs_hist_alert1} = 0;
|
||||
# check alerts for each filesystem
|
||||
my @al = split(',', $fs->{alerts}->{$f} || "");
|
||||
if(scalar(@al)) {
|
||||
my $timeintvl = trim($al[0]);
|
||||
my $threshold = trim($al[1]);
|
||||
my $script = trim($al[2]);
|
||||
|
||||
if(!$threshold || $use < $threshold) {
|
||||
$config->{fs_hist}->{$f} = 0;
|
||||
} else {
|
||||
if(!$config->{fs_hist_alert1}) {
|
||||
$config->{fs_hist_alert1} = time;
|
||||
if(!$config->{fs_hist}->{$f}) {
|
||||
$config->{fs_hist}->{$f} = time;
|
||||
}
|
||||
if($config->{fs_hist_alert1} > 0 && (time - $config->{fs_hist_alert1}) >= $fs->{alerts}->{rootfs_timeintvl}) {
|
||||
if(-x $fs->{alerts}->{rootfs_script}) {
|
||||
logger("$myself: ALERT: executing script '$fs->{alerts}->{rootfs_script}'.");
|
||||
system($fs->{alerts}->{rootfs_script} . " " . $fs->{alerts}->{rootfs_timeintvl} . " " . $fs->{alerts}->{rootfs_threshold} . " " . $use);
|
||||
if($config->{fs_hist}->{$f} > 0 && (time - $config->{fs_hist}->{$f}) >= $timeintvl) {
|
||||
if(-x $script) {
|
||||
logger("$myself: alert on filesystem '$f': executing script '$script'.");
|
||||
system($script . " " . $timeintvl . " " . $threshold . " " . $use);
|
||||
} else {
|
||||
logger("$myself: ERROR: script '$fs->{alerts}->{rootfs_script}' doesn't exist or don't has execution permissions.");
|
||||
logger("$myself: ERROR: script '$script' doesn't exist or don't has execution permissions.");
|
||||
}
|
||||
$config->{fs_hist_alert1} = time;
|
||||
$config->{fs_hist}->{$f} = time;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -942,46 +942,41 @@ Just an example:
|
|||
You can define as much entries as you want.
|
||||
.RE
|
||||
.P
|
||||
.BI rootfs_enabled
|
||||
.BI alerts
|
||||
.RS
|
||||
This section enables or disables the alert capabilities for this graph. Only the alert for the root filesystem disk usage is currently implemented. It works as follows:
|
||||
This optional list enables the alert capabilities for this graph and complements with the \fBlist\fP option. Each alert has three fields separated by comma: the \fItime interval\fP, the \fIthreshold\fP and the path to the \fIscript\fP to be executed.
|
||||
.P
|
||||
If the percentage of disk space used in the root filesystem reaches the \fBrootfs_threshold\fP value for the interval of time defined in \fBrootfs_timeintvl\fP, Monitorix will execute the external alert script defined in \fBrootfs_script\fP.
|
||||
The \fItime interval\fP is the period of time (in seconds) that the \fIthreshold\fP needs to be exceeded before the external script is executed.
|
||||
.P
|
||||
The default Monitorix installation includes an example of a shell-script alert called \fBmonitorix-alert.sh\fP which you can use as a base for your own script.
|
||||
The \fIthreshold\fP is the percentage of disk space used in the file system that needs to be reached or exceeded within the specified time in \fItime interval\fP to execute the external script.
|
||||
.P
|
||||
Default value: \fIn\fP
|
||||
.RE
|
||||
The \fIscript\fP is the full path name of the script that will be executed by this alert.
|
||||
.P
|
||||
Each defined filesystem has its own alert.
|
||||
.P
|
||||
The default Monitorix installation includes an example of a shell-script alert called \fImonitorix-alert.sh\fP which you can use as a base for your own script.
|
||||
.P
|
||||
The following is an example of an alert defined for the root filesystem:
|
||||
.P
|
||||
.BI rootfs_timeintvl
|
||||
.RS
|
||||
This is the period of time (in seconds) that the threshold needs to be exceeded before the external alert script is executed.
|
||||
.P
|
||||
Default value: \fI3600\fP
|
||||
.RE
|
||||
.P
|
||||
.BI rootfs_threshold
|
||||
.RS
|
||||
This is the value that needs to be reached or exceeded within the specified time period in \fBrootfs_timeintvl\fP to trigger the mechanism for a particular action, which in this case is the execution of an external alert script.
|
||||
.P
|
||||
The value of this option is compared to the current root filesystem disk usage.
|
||||
.P
|
||||
Default value: \fI100\fP
|
||||
.RE
|
||||
.P
|
||||
.BI rootfs_script
|
||||
.RS
|
||||
This is the full path name of the script that will be executed by this alert.
|
||||
.P
|
||||
It will receive the following three parameters:
|
||||
.P
|
||||
1st - the value currently defined in \fBrootfs_timeintvl\fP.
|
||||
<alerts>
|
||||
.br
|
||||
2nd - the value currently defined in \fBrootfs_threshold\fP.
|
||||
/ = 3600, 98, /path/to/script
|
||||
.br
|
||||
3rd - the current root filesystem disk usage.
|
||||
</alerts>
|
||||
.P
|
||||
.RE
|
||||
Such alert means that if the percentage of disk space used in the root filesystem reaches or exceeds 98 during at least one hour (3600 seconds) the script in \fI/path/to/script\fP will be executed.
|
||||
.P
|
||||
The external script will receive the following arguments:
|
||||
.P
|
||||
.RS
|
||||
1st - the value defined as \fItime interval\fP.
|
||||
.br
|
||||
2nd - the value defined as \fIthreshold\fP.
|
||||
.br
|
||||
3rd - the filesystem disk usage.
|
||||
.P
|
||||
Default value: \fI/path/to/script.sh\fP
|
||||
.RE
|
||||
.SS Directory usage statistics (du.rrd)
|
||||
This graph is able to monitor the usage of an unlimited number of directories.
|
||||
|
|
|
@ -231,10 +231,6 @@ secure_log_date_format = %b %e
|
|||
rigid = 2, 0, 2, 0
|
||||
limit = 100, 1000, 100, 1000
|
||||
<alerts>
|
||||
rootfs_enabled = n
|
||||
rootfs_timeintvl = 3600
|
||||
rootfs_threshold = 100
|
||||
rootfs_script = /path/to/script.sh
|
||||
</alerts>
|
||||
</fs>
|
||||
|
||||
|
|
Loading…
Reference in New Issue