Cacti 是基於 PHP + MySQL + RRDTool + SNMP 的網路流量監控與圖形化系統,支援插件擴展(如 Weathermap 繪製拓撲圖)。本文記錄在 Gentoo Linux 上透過 Portage 安裝、配置 PHP、建立資料庫、設定排程與 SNMP 的完整流程。

eix cacti
# 可用版本:0.8.8b-r2 (穩定), ~0.8.8b-r1 (測試)
# USE flags: doc snmp vhosts
vim /etc/php/apache2-php5.4/php.ini
# 修改:
date.timezone = "Asia/Taipei"
emerge cacti
Portage 會自動處理相依:Apache、PHP、MySQL、RRDTool、SNMP、Cron 等。
groupadd cacti
useradd -g cacti -G cron cactiuser
cd /var/www/localhost/htdocs/cacti
chown -R cactiuser rra/ log/
⚠️ **權限未正確設定會導致圖形顯示紅叉(NaN 資料)**,此為最常見失敗原因。
mysql -u root -p
mysql> CREATE DATABASE cacti;
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser';
mysql> FLUSH PRIVILEGES;
mysql> USE cacti;
mysql> SOURCE /var/www/localhost/htdocs/cacti/cacti.sql;
mysql> EXIT
⚠️ cacti.sql **必須為當前安裝版本對應的檔案**,舊版本 SQL 匯入新版會缺少欄位(如 Plugin Management)。
vim /var/www/localhost/htdocs/cacti/include/config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser"; # 需與上步建立密碼一致
vim /etc/crontab
# 新增一行(每 5 分鐘執行一次):
*/5 * * * * cactiuser /usr/bin/php /var/www/localhost/htdocs/cacti/poller.php > /dev/null 2>&1
⚠️ **必須使用 cactiuser 執行**。Gentoo 中 apache 用戶 shell 為 /bin/nologin,無法執行 PHP 腳本,導致資料全為 NaN。
cd /etc/snmp
cp snmpd.conf.example snmpd.conf
vim snmpd.conf
# 修改:
agentAddress udp:161
# 在 view systemonly included .1.3.6.1.2.1.25.1 後新增:
view systemonly included .1
啟動 SNMP:/etc/init.d/snmpd start 並加入開機啟動。
https://localhost/cactiadmin / admin(首次登入強制修改密碼)| 現象 | 原因與解決 |
|---|---|
| 圖形顯示紅叉 / NaN | rra/ log/ 權限錯誤、排程用戶非 cactiuser、SNMP 未通 |
| Plugin Management 不見 | 匯入舊版 cacti.sql,需重建資料庫用新版 SQL |
| 中文亂碼 | 確認資料庫 charset=utf8mb4、PHP mbstring 啟用 |
完成上述步驟,Cacti 即可在 Gentoo 上穩定運行,支援 SNMP 輪詢、RRDTool 圖形化與插件擴展。