如何升級Cacti

應該是去年(2020)下半年開始,忽然注意到公司所使用的Cacti居然都發生一樣的狀況-圖表呈現的內容不會隨我切換不同的時間區間變化。唯獨選擇一天或一年的時間區間才會正常顯示一天或一年的圖表。如選擇其他時間區間(如一週)都只會顯示最近一天的圖表

公司使用的Cacti都會定期更新、升級Cacti版本,這次更新後注意到Cacti居然恢復正常已無上述的狀況。後來想一想開與遇到上述狀況時正巧當時很多主流瀏覽器都做了不少改變與調整,懷疑此狀況和瀏覽器有關,卻沒找到其間的關係。

家中的Raspberry Pi也有安裝Cacti監控一些東西(如使用Raspberry Pi 紀錄壓力、高度變化)。自然也遇到上述相同的狀況…但APT依舊維持在很舊的0.8.8h…最後只好自己抓新版Cacti-1.2.18更新。

以下為我的更新紀錄,就我在各種系統上更新的經驗,Cacti主程式的目錄、及RRA目錄都會不同(甚至不同安裝方式的設定都會不同),所以請參考的人記得要注意這點

備份資料與Cacti版本更新

#下載新版
wget --no-check-certificate https://files.cacti.net/cacti/linux/cacti-1.2.18.tar.gz
#備份資料庫
mysqldump -l --add-drop-table cacti -p -uroot > /tmp/cacti/mysql1.cacti
#解開檔案
tar xzvf cacti-1.2.18.tar.gz /tmp/cacti
#備份RRA目錄(歷史資料)
cp -r /var/lib/cacti/rra /tmp/cacti/rra_bak
#備份舊版本cacti
cp -R /usr/share/cacti/site/ /tmp/cacti/cacti_old/
#Cacti更新為新版本
cp -R /tmp/cacti/cacti-1.2.18/* /usr/share/cacti/site

設定資料庫與RRA目錄位置

#修改資料庫設定
vi /usr/share/cacti/site/include/config.php
//很奇怪,我原本的舊版備份是mysqli。但現在要用mysql才正常
$database_type    = 'mysql';
$database_default  = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cacti';
//改成你的密碼
$database_password = 'yourpassword';
這裡遇到一個奇怪的狀況所以做個補充說明。因為PHP7+後只能使用mysqli這個driver,我備份程式中的上面的database_type設定也是mysqli。可是當我將新版Cacti設定成mysqli時卻會出現以下錯誤。最後改成mysql卻正常了…

FATAL: Connection to Cacti database failed. Please ensure:

    the PHP MySQL module is installed and enabled.
    the database is running.
    the credentials in config.php are valid.
#調整RRA目錄位置
vi /usr/share/cacti/site/include/global.php
//找出下面這段
//$config['rra_path'] = $config['base_path'] . '/rra';
//調整為你的環境
$config["rra_path"] = '/var/lib/cacti/rra';

給予目錄權限

下面目錄需給予寫入權限
  • /usr/share/cacti/site/log
  • /usr/share/cacti/site/resource
  • /usr/share/cacti/site/cache
  • /usr/share/cacti/site/scripts

Cacti升級處理與相關設定

當上面處理完畢,請瀏覽你自己的Cacti網址(如 http://127.0.0.1/cacti)以正式進入Cacti升級流程。升級過程中Cacti會檢測所需的PHP套件是否有安裝、以及資料庫設定是否符合Cacti所需。如果有問題,頁面上會以紅色提醒我們要排除,否則無法進入真正的升級步驟。

以我的這次的檢測,我分別新安裝以下PHP套件、與資料庫參數調整
#安裝所需的php套件
apt-get install php7.0-gd
apt-get install php7.0-gmp
apt-get install php7.0-ldap
#修改資料庫參數設定以符合Cacti所需
vi /etc/mysql/mariadb.conf.d/50-server.cnf
#以下的設定參數與內容,請依照Cacti建議設定。大家的環境檢測結果應該會不同
[mysqld]
character_set_server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_heap_table_size = 256M
max_allowed_packet = 16777216
tmp_table_size = 64M
join_buffer_size = 64M
innodb_file_per_table = ON
#innodb_buffer_pool_size = 1024M
innodb_buffer_pool_size = 256M
innodb_doublewrite = ON
innodb_additional_mem_pool_size = 96M
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads =16
innodb_file_format=Barracuda
innodb_large_prefix=1
當升級所需的相關設定都完成,就可以進入下一步驟完成Cacti升級作業


參考資料

留言