Are you trying to resolve Event Data getting Stale in Nagios?
This guide will help you.
Sometimes, our customers using Nagios reported a bug relating to event data in some Nagios versions. However, this bug has been patched and will be available in releases later.
But if we are experiencing this error and/or the Nagios service is taking an excessively long time to start, we may have a corrupted MySQL table.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to handle Nagios related issues.
Apply the tips given below to resolve this Nagios problem.
We can repair the Nagios and nagiosql databases by executing the following commands in the command line as the root user:
# /usr/local/nagiosxi/scripts/repairmysql.sh nagios
# /usr/local/nagiosxi/scripts/repairmysql.sh nagiosql
# /usr/local/nagiosxi/scripts/repairmysql.sh nagiosxiAlternatively, we can use the following command for Nagios XI 2014 and further versions:
# cd /usr/local/nagiosxi/scripts/
# ./repair_databases.shThis will actually repair both databases.
If we encounter an error, similar to the following:
SQL: DELETE FROM nagios_logentries WHERE logentry_time < FROM_UNIXTIME(1293570334)
SQL: SQL Error [ndoutils] :</b> Table './nagios/nagios_logentries' is marked as crashed and last (automatic?) repair failed CLEANING ndoutils TABLE 'notifications'...We may need to run a force repair on the tables using the following commands:
On RHEL 7|CentOS 7|Oracle Linux 7|Debian 9,
# systemctl stop mariadb.service
# cd /var/lib/mysql/nagios
# myisamchk -r -f nagios_<corrupted_table>
# systemctl start mariadb.service
# rm -f /usr/local/nagiosxi/var/dbmaint.lock
# php /usr/local/nagiosxi/cron/dbmaint.phpOn Debian 8|Ubuntu 16/18,
# systemctl stop mysql.service
# cd /var/lib/mysql/nagios
# myisamchk -r -f nagios_<corrupted_table>
# systemctl start mysql.service
# rm -f /usr/local/nagiosxi/var/dbmaint.lock
# php /usr/local/nagiosxi/cron/dbmaint.phpStart by stopping the following services with the commands below:
# service nagios stop
# service ndo2db stop
# service mysqld stopAfter that, we can run the following repair script for MySQL tables:
# /usr/local/nagiosxi/scripts/repairmysql.sh nagiosThen unzip and copy the following dbmaint file to /usr/local/nagiosxi/cron/. This will overwrite the previous version.
# cd /tmp
# wget http://assets.nagios.com/downloads/nagiosxi/patches/dbmaint.zip
# unzip dbmaint.zip
# chmod +x dbmaint.php
# cp dbmaint.php /usr/local/nagiosxi/cronAfter that, we need to run the following commands:
# service mysqld start
# rm -f /usr/local/nagiosxi/var/dbmaint.lock
# /usr/local/nagiosxi/cron/dbmaint.phpAfter running this script, start these services:
# service ndo2db start
# service Nagios startHowever, if we see any error output from this script, similar to this one:
SQL: DELETE FROM nagios_logentries WHERE logentry_time < FROM_UNIXTIME(1293570334)
SQL: SQL Error [ndoutils] :</b> Table './nagios/nagios_logentries' is marked as crashed and last (automatic?) repair failedCLEANING ndoutils TABLE 'notifications'...We may need to run a force repair on the tables:
# service mysqld stop
# cd /var/lib/mysql/nagios
# myisamchk -r -f nagios_<corrupted_table>
# service mysqld start
# rm -f /usr/local/nagiosxi/var/dbmaint.lock
/usr/local/nagiosxi/cron/dbmaint.phpThis article covers methods to fix Event Data getting Stale in Nagios. Basically, you will see the causes for event data getting stale in Nagios. There is a known bug relating to event data in versions 2009R1.4B-2011R1.1.
This bug has been patched and will be available in releases later than the versions posted above, but if you're experiencing this error, and/or the nagios service is taking an excessively long time to start, you may have a corrupted mysql table that needs repair.
To fix this Nagios error:
1. Stop the following services:
$ service nagios stop
$ service ndo2db stop
$ service mysqld stop2. Run the repair script for mysql tables:
/usr/local/nagiosxi/scripts/repairmysql.sh nagios3. Unzip and copy the the following dbmaint file to /usr/local/nagiosxi/cron/. This will overwrite the previous version.
$ cd /tmp
$ wget http://assets.nagios.com/downloads/nagiosxi/patches/dbmaint.zip
$ unzip dbmaint.zip
$ chmod +x dbmaint.php
$ cp dbmaint.php /usr/local/nagiosxi/cron