After upgrading a CactiEZ installation to cacti 0.8.7h including PA 3.0, I had some problems with the different plugins. The default path for the plugins was configured incorrectly. The plugins were looking in the wrong directory for their images. In the httpd error log I see the following errors.
[root@localhost html]# tail -90f /etc/httpd/logs/error_log
[Wed Jul 18 07:52:19 2012] [error] [client 10.254.60.18] File does not exist: /var/www/html/plugins/monitor/include, referer: http://10.254.10.20/plugins/monitor/monitor.php
[Wed Jul 18 07:52:19 2012] [error] [client 10.254.60.18] File does not exist: /var/www/html/plugins/monitor/include, referer: http://10.254.10.20/plugins/monitor/monitor.php
The problem can be fixed by adding the following line to the include/config.php file.
$url_path = “/”;
Now all plugin pages are displayed correctly.
Every time I install CactiEZ or Cacti on another platform, I am searching for the commands to basically install the most common parameters, like static IP addressing, NTP sync and time zones.
Several times I thought about writing a simple article with the necessary commands and final I had time to create it.
Networking
netconfig
service network restart
Time Sync
ntpdate –u ntp1.nl.net
Time Zone
yum install system-config-date
system-config-date
This will make my life so much easier.
After rebooting a Cacti server, the customer complained that no new graphs were drawn by the server. I tried to run the poller.php script with the –-force option and noticed the following output:
06/16/2011 10:34:48 AM – SPINE: Poller[0] ERROR: SQL Failed! Error:’145′, Message:’Table ‘./cacti/poller_output’ is marked as crashed and should be repaired’, SQL Fragment:’INSERT INTO poller_output (local_data_id, rrd_name, time, output) VALUES (514,’traffic_in’,’2011-06-16 10:34:48′,’3446319166′),(357,’traffic_in’,’2011-06-16
This log entry was shown multiple time and it looks like the database got corrupted after the reboot. Mysql has an option to check and repair the database. So I gave that a try via the following command:
mysqlcheck –-auto-repair –-databases cacti
The command gives the following output:
cacti.cdef OK
cacti.cdef_items OK
cacti.colors OK
cacti.data_input OK
cacti.data_input_data OK
cacti.data_input_fields OK
cacti.data_local OK
cacti.data_template OK
cacti.data_template_data
warning : 1 client is using or hasn’t closed the table properly
status : OK
cacti.data_template_data_rra OK
cacti.data_template_rrd
warning : 1 client is using or hasn’t closed the table properly
status : OK
cacti.graph_local OK
cacti.graph_template_input OK
cacti.graph_template_input_defs OK
cacti.graph_templates OK
cacti.graph_templates_gprint OK
cacti.graph_templates_graph OK
cacti.graph_templates_item OK
cacti.graph_tree OK
cacti.graph_tree_items OK
cacti.host
warning : 2 clients are using or haven’t closed the table properly
status : OK
cacti.host_graph OK
cacti.host_snmp_cache
warning : 1 client is using or hasn’t closed the table properly
status : OK
cacti.host_snmp_query OK
cacti.host_template OK
cacti.host_template_graph OK
cacti.host_template_snmp_query OK
cacti.mac_track_approved_macs OK
cacti.mac_track_device_types OK
cacti.mac_track_devices OK
cacti.mac_track_ip_ranges OK
cacti.mac_track_ips
note : The storage engine for the table doesn’t support check
cacti.mac_track_macauth OK
cacti.mac_track_macwatch OK
cacti.mac_track_oui_database OK
cacti.mac_track_ports OK
cacti.mac_track_processes OK
cacti.mac_track_scan_dates OK
cacti.mac_track_scanning_functions OK
cacti.mac_track_sites OK
cacti.mac_track_temp_ports
note : The storage engine for the table doesn’t support check
cacti.plugin_color_templates OK
cacti.plugin_color_templates_item OK
cacti.plugin_config OK
cacti.plugin_db_changes
warning : 2 clients are using or haven’t closed the table properly
status : OK
cacti.plugin_discover_hosts OK
cacti.plugin_discover_template OK
cacti.plugin_flowview_devices OK
cacti.plugin_flowview_dnscache
note : The storage engine for the table doesn’t support check
cacti.plugin_flowview_queries OK
cacti.plugin_flowview_schedules OK
cacti.plugin_hooks OK
cacti.plugin_realms OK
cacti.plugin_routerconfigs_accounts OK
cacti.plugin_routerconfigs_backups OK
cacti.plugin_routerconfigs_devices OK
cacti.plugin_routerconfigs_devicetypes OK
cacti.plugin_thold_contacts OK
cacti.plugin_thold_log OK
cacti.plugin_thold_template_contact OK
cacti.plugin_thold_threshold_contact OK
cacti.plugin_update_info OK
cacti.plugin_wmi_accounts OK
cacti.plugin_wmi_queries OK
cacti.poller OK
cacti.poller_command OK
cacti.poller_item
warning : 1 client is using or hasn’t closed the table properly
status : OK
cacti.poller_output
warning : Table is marked as crashed
warning : 1 client is using or hasn’t closed the table properly
error : Invalid key block position: 107523441122544244 key block size: 1024 file_length: 25600
error : key delete-link-chain corrupted
error : Corrupt
cacti.poller_output_boost
note : The storage engine for the table doesn’t support check
cacti.poller_output_boost_processes
note : The storage engine for the table doesn’t support check
cacti.poller_output_rt OK
cacti.poller_reindex
warning : 1 client is using or hasn’t closed the table properly
status : OK
cacti.poller_time OK
cacti.quicktree_graphs OK
cacti.reportit_cache_measurands OK
cacti.reportit_cache_reports OK
cacti.reportit_cache_variables OK
cacti.reportit_measurands OK
cacti.reportit_presets OK
cacti.reportit_recipients OK
cacti.reportit_reports OK
cacti.reportit_rvars OK
cacti.reportit_templates OK
cacti.reportit_variables OK
cacti.rra OK
cacti.rra_cf OK
cacti.settings
warning : 1 client is using or hasn’t closed the table properly
status : OK
cacti.settings_graphs OK
cacti.settings_tree OK
cacti.snmp_query OK
cacti.snmp_query_graph OK
cacti.snmp_query_graph_rrd OK
cacti.snmp_query_graph_rrd_sv OK
cacti.snmp_query_graph_sv OK
cacti.superlinks_auth OK
cacti.superlinks_pages OK
cacti.thold_data OK
cacti.thold_template OK
cacti.user_auth OK
cacti.user_auth_perms OK
cacti.user_auth_realm OK
cacti.user_log OK
cacti.version OK
cacti.weathermap_auth OK
cacti.weathermap_data OK
cacti.weathermap_maps OKRepairing tables
cacti.poller_output OK
After the repair I ran the poller.php script again with the –-force option and this time I didn’t receive any errors and the graphs were updated again.
Afterwards I noticed that Cacti has a script of its own to repair the database. This script is called repair_database.php and can be found in the directory /var/www/html/cli/.
After upgrading Cacti, like shown in the previous post, the Superlinks plugin stopped working correctly. When opening a Superlink tab I got a blank page in Google Chrome or a half page in Internet Explorer and Opera, like shown below.
After some Googling I found the solution for this problem on a Cacti forum. The solution describes change some scripting within the file superlinks.php. The changes are displayed below.
Replace
print ‘<iframe src=”‘ . $page[‘contentfile’] . ‘” width=”100%” height=”100%” frameborder=”0″></iframe>’;
by
print ‘<iframe id=”frame” src=”‘ . $page[‘contentfile’] .'” width=”100%” height=”100%” frameborder=”0″></iframe>’;
print “<script type=’text/javascript’>
function resizeIframe() {
var height=window.innerWidth;//Firefox
if (document.documentElement.clientHeight) {
height=document.documentElement.clientHeight;//IE
};
document.getElementById(‘frame’).style.height=parseInt(height-document.getElementById(‘frame’).offsetTop-72)+’px’;
};
document.getElementById(‘frame’).onload = resizeIframe;
window.onresize = resizeIframe;
</script>”;
Superlinks is working fine again after applying the change.
A lot of people use the CactiEZ virtual appliance to install a running Cacti environment. The latest CactiEZ virtual appliance (CactiEZ v0.6) uses Cacti v0.8.7c with Plugin Architecture 2.2. Of course a lot of people are developing Cacti and the latest stable version is Cacti v0.8.7g with Plugin Architecture 2.8.
I always have trouble with upgrading Cacti, because you have to take multiple steps and you shouldn’t forget one. This blog post helps, because it shows the steps to take for upgrading to the latest version of Cacti.
I always start with changing the default behavior of the cp command. The command default adds the parameter –i, which creates an interactive command. The result of the –i parameter is an overwrite question before copying, like shown below.
cp: overwrite `/var/www/html/docs/html/data_input_methods.html’?
This behavior can be changed by deleting or commenting out the cp-alias within /root/.bashrc. Don’t forget to logout and login again.
Now we are ready to upgrade Cacti. Let’s go.
1. First you need to backup the current Cacti database;
mysqldump -l –add-drop-table cacti > cacti_sql_backup
2. Backup your current Cacti html directory;
mv /var/www/html /var/www/html.bak
3. Copy the new tarball to the target system and extract the tarball;
tar zxvf cacti-0.8.7g.tar.gz
4. Move the new files over the Cacti root directory;
mv /root/cacti-0.8.7g/ /var/www/html/
5. Edit include/config.php to include the correct database credentials and default session name;
$database_type = “mysql”;
$database_default = “cacti”;
$database_hostname = “localhost”;
$database_username = “cactiuser”;
$database_password = “cactiuser”;
$database_port = “3306”;#$cacti_session_name = “CactiMadeEZ”;
6. Copy the *.rrd files, scripts and XML files from the old Cacti directory;
cp /var/www/html.bak/rra/* /var/www/html/rra/.
cp -rfv /var/www/html.bak/scripts/* /var/www/html/scripts/
cp -rfv /var/www/html.bak/resource/* /var/www/html/resource/
7. Set the appropriate owner and permissions;
chown –R apache:apache /var/www/html
8. Go the the Cacti website and follow the screen instructions to upgrade the database;
9. Copy and extract the plugin architecture tarball, copy .diff file to the Cacti root directory and apply the patch;
tar zxvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz
cp /root/cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.8.diff /var/www/html/.
cd /var/www/html
patch -p1 –N < cacti-plugin-0.8.7g-PA-v2.8.diff
10. Change the file include/global.php to include the correct database credentials, default session name and the plugin list;
/* Default database settings*/
$database_type = “mysql”;
$database_default = “cacti”;
$database_hostname = “localhost”;
$database_username = “cactiuser”;
$database_password = “cactiuser”;
$database_port = “3306”;/* Default session name – Session name must contain alpha characters */
$cacti_session_name = “CactiMadeEZ”;$plugins = array();
$plugins[] = ‘settings’;
<..>
$plugins[] = ‘superlinks’;
11. Copy the old plugins directory;
cp -rfv /var/www/html.bak/plugins/* /var/www/html/plugins/.
12. Go to Configuration – Plugin Management to install / enable your plugins. Install / enable the plugin loginmod to get your customized login page back.
Now the upgrade is ready and you are set to experience your freshly upgraded CactiEZ appliance.