某一天,老闆突然開口問了一件事:「為什麼最近上網的速度那麼慢?」
我們可能會回答:「因為對外的頻寬太小」、「因為使用的總流量太大」、「因為上班尖峰時間的需求較高」......
可是,
口說無憑,該從哪裡生實際資料出來佐證我們的說法,同時評估未來預計的需求呢?
最後更新日期 - 2016/06/07
說到資源或流量的監控,大家第一個想到的應該會是 MRTG (Multi Router Traffic Grapher),從名字就可以知道它本來最主要的功能會是在網路流量監控,當然後來也可以監控其他的資源,但是介面陽春,可以調整的參數也少 ,例如時間間隔調不了、多設備流量不能同時顯示 ... 之類的。
後來 MRTG 的原作者開發了另一套監控工具 RRDTool,改善了這許多的問題,參數的調整彈性超大,圖表繪製的能力變得超強,但是 ~~~ 設定語法的難度比起 MRTG 也大幅升高,真是有一好沒兩好。
這時候好心的網友又出現了,RRDTool 的救星 Cacti 出現了,這是一套用 PHP 撰寫的套件,可以將 RRDTool 的數據存到 MySQL / MariaDB 資料庫裡,還提供了友善的 Web UI,便於我們後續的追蹤與分析。
事前準備
請參照 CentOS 7.0 不完全安裝手冊 系列文章,完成作業系統的安裝,我們用的是 CentOS 7 x86_64 Minimal 的版本。
開始安裝
CentOS 官方套件庫沒有收錄,所以我們要從 EPEL 套件庫安裝。
sudo yum -y install epel-release
如果有勇者要自己解壓縮跟設定的話,傳送門在這邊:
http://www.cacti.net/downloads/cacti-0.8.8g.tar.gz
Cacti 需要 Apache / Nginx、MySQL / MariaDB、PHP、RRDTool、net-snmp,還有一些 PHP 的相關套件,就讓 yum 自己幫我們安裝所有相依套件吧。
sudo yum -y install cacti mariadb-server
啟動 MariaDB,並讓它在開機後自動啟動。
sudo systemctl restart mariadb && sudo systemctl enable mariadb
進行 MariaDB 的安全性初始設定,這些參數可以參考 [CentOS 7] 整合 Nginx、MariaDB、PHP 7 組成 LEMP Server 裡 MariaDB 設定。
sudo mysql_secure_installation
連線進 MariaDB 命令列介面。
mysql -u root -p
建立 Cacti 專用的資料庫:cactidb。
create database cactidb;
建立使用者:user,設定密碼:password,並允許它可以存取 cactidb 資料庫裡的所有資料表。
grant all on cactidb.* to 'user' identified by 'password';
重新載入權限。
flush privileges;
退出 Mariab 命令列介面。
exit
確認一下新增的使用者可以進入資料庫。
mysql -u user -p -h localhost
用 Cacti 的初始用 SQL 指令檔,將資料庫、資料表的格式與資料匯入。
mysql -u user -p -A cactidb < /usr/share/doc/cacti-0.8.8b/cacti.sql
編輯 Web UI 設定檔。
sudo vi /etc/httpd/conf.d/cacti.conf
因為我們用的是 Apache HTTP Server 2.4.6,所以在 2.4 的段落裡修改,允許所有 IP 進行連線。
Require all granted
設定資料庫設定檔。
sudo vi /etc/cacti/db.php
這些設定值就是在先前在 MariaDB 裡新增的資料庫、使用者及密碼。
$database_default = "cactidb";
$database_username = "user";
$database_password = "password";
編輯 PHP 主設定檔。
sudo vi /etc/php.ini
指定時區為台北。
date.timezone = "Asia/Taipei"
開放防火牆上的 HTTP 通訊埠。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
重新啟動 Apache,並讓它在開機後自動啟動。
sudo systemctl restart httpd && sudo systemctl enable httpd
編輯 Cacti 抓取資料的排程設定檔。
sudo vi /etc/cron.d/cacti
雖然會很消耗系統資源,不過我們這邊還是設定每一分鐘抓取一次資料。
*/1 * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
SNMP 設定
本機資料必須透過 SNMP 回報,所以我們設定一下 SNMP 的設定檔。
sudo vi /etc/snmp/snmpd.conf
第 41 行:com2sec notConfigUser default public,將 default 改成 127.0.0.1。
com2sec notConfigUser 127.0.0.1 public
第 62 行:access notConfigGroup "" any noauth exact systemview none none,將 systemview 改成 all。
access notConfigGroup "" any noauth exact all none none
第 84 行:#view all included .1 80,將 # 註解拿掉。
view all included .1 80
重新啟動 SNMP。
sudo systemctl restart snmpd && sudo systemctl enable snmpd
Cacti 設定
用瀏覽器打開 Cacti 的 Web 介面,它會自動跳到安裝頁面。
http://192.168.88.155/cacti
這次是全新安裝,所以選擇「New Install」,如果是升級的話就要選擇「Upgrade from cacti 0.8.x」,同時可以看到剛剛在 /etc/cacti/db.php 裡設定的資料庫名稱、使用者、平台。
這邊會檢查所有必要的套件是否已正確安裝,如果有任何一個訊息不是 [OK: FILE FOUND] 的話,別忘了把它補上。
最後按下「Finish」就完成了。
進入 Web UI
Web UI 設定完畢之後,就會自動跳到登入畫面,預設的帳號密碼是 admin / admin。
系統會馬上要求更改 admin 的密碼。
接著就進到 Cacti Web UI 的主畫面了。
如果我們馬上就打開圖表來看的話,很可能只會看到這樣子的空白畫面。
這是因為 Cacti 還沒有抓到回報的資料,先點選 Console -> System Utilities -> View Cacti Log File。
看一下 Cacti 是不是已經正確的抓到本機的 SNMP 資料。
確認有資料而且正確的話,稍等個 3 ~ 5 分鐘,就可以看到實際的圖表資料了。
異常排除
- FATAL: Cannot connect to MySQL server on '127.0.0.1'. Please make sure you have specified a valid MySQL database name in 'include/config.php' 之類的錯誤訊息。
這個代表連不到 MariaDB / MySQL 資料庫,請確認 DB Server、網路連線是否正常,帳號、密碼、資料庫名稱是否正確。
- 在 Cacti Installation Guide 的「Cacti Log File Path」顯示 [NOT FOUND]。
或是在 /usr/share/cacti 目錄下,手動建立一個 log 目錄,然後在 log 目錄裡新增一個 cacti.log 空檔案,別忘了調整它們的 owner / own group 權限。
參考資料
- Tecmint.com - Install Cacti (Network Monitoring) on RHEL/CentOS 7.x/6.x/5.x and Fedora 21-12
- Cacti - Cacti Manual 0.8.8
- HKITBLOG - (第一章) Cacti 免費、統一網絡監測軟件 – 介紹
圖片來源
- MRTG / RRDTool / Cacti 官網
- UWW ResNet via Visual Hunt / CC BY-NC-SA
更新紀錄
- 2016/03/03 撰文。
- 2016/06/07 更新異常處理問題,感謝匿名網友的留言協助。
請問開網頁就跳出cacti的部分如果沒跳出 那是哪個部分有問題
回覆刪除請問開啟網頁跳出cacti的部分如果沒有跳出是哪個部分有問題
回覆刪除呃...
刪除「沒有跳出」指的是什麼沒有跳出? 有沒有錯誤訊息?
老師謝啦 , 但 7 版 某些指令都翻新好不習慣阿。
回覆刪除我發現我都卡在資料庫帳號密碼沒有連結到
or 防火牆。
老師謝啦
回覆刪除我都卡在資料庫帳號密碼
( 7 翻新指令 好難搞阿)
重新安裝數次
回覆刪除檢查所有必要的套件的步驟
[NOT FOUND]Cacti Log File Path (略)
路徑為: /usr/share/cacti/log/cacti.log
請問是少了哪個套件呢 謝謝
後來解決,自問自答一下,
刪除去cacti網站下載壓縮檔,將Log資料夾放入cacti資料夾,
即解決問題
感謝樓上朋友的分享,方便把完整的錯誤訊息和下載連結貼上來嗎?
刪除我可以把它加到「異常排除」的段落裡,讓其他朋友也可以參考。
你好, 近期出差沒有用到測試電腦,先簡單回復。
刪除貴網站的圖片
https://2.bp.blogspot.com/-IKm_6rSYICQ/VtaK9LKgOGI/AAAAAAAAMiQ/hKmRzQkW3fk/s1600/install-cacti-graphing-system-monitoring-tool-on-centos-7-043.jpg
在Cacti Log Filie Path的項目顯示[NOT FOUND]Cacti Log File Path,在/usr/share/cacti/內沒有log資料夾。
解決辦法是去cacti網站下載http://www.cacti.net/downloads/cacti-0.8.8h.tar.gz
解壓縮將Log資料夾複製到/usr/share/cacti/ 裡面。
已更新內容,感謝你的協助 .... ^^
刪除我是卡在 /usr/share/cacti/log/cacti.log is not readable.
刪除後來關閉SELinux就可以了,但不是一個好的解決辦法。
您好,我於 Console -> System Utilities -> View Cacti Log File 步驟時,畫面依舊顯示空白,請問問題是出在哪呢?httpd 與 snmpd 皆以重啟過,煩請您協助了,謝謝
回覆刪除這個代表 Catti 撈不到資料,常見的問題在:
刪除1. SNMP 設定值錯了,或服務沒起來
2. Catti 的排程沒有正確運作,重覆運作的時間頻率太久
版主你好,在使用你提供的安裝方式,目前出現了一點問題,在最後安裝cacti gui的畫面上出現ERROR: Your Cacti database login account does not have access to the MySQL TimeZone database. Please provide the Cacti database account "select" access to the "time_zone_name" table in the "mysql" database, and populate MySQL's TimeZone information before proceeding.
回覆刪除這訊息,我查了一下,好像是1.0.4版才會發生的狀況,但我用了網上很多前輩的方式去解決,可是還是會出現這個訊息,不知版主能否指導一下,該怎樣解決呢?
我自己是沒遇到啦,
刪除就錯誤訊息看來,它是說我們在 MySQL/MariaDB 用的帳號沒辦法存取 TimeZone 這個 DB。
而解決的方法是只要 grant 使用者帳號,增加 select 權限到 mysql 資料庫的 time_zone_name 這張表就可以了。
請問一下這問題具體的指令該如何下?
刪除指令語法類似這樣子:
刪除GRANT SELECT ON mysql.time_zone_name TO 'user'@'localhost';
詳細請參閱 MySQL 官方文件
https://dev.mysql.com/doc/refman/5.7/en/grant.html
我照著步驟做進入cacti顯示
回覆刪除Forbidden
You don't have permission to access /cacti/ on this server.
錯訊訊息是指權限不足,
刪除請檢查一下 cacti 的目錄權限,跟 apache 的 owner/group/目錄 ... 等權限設定有沒有匹配。
我也是照著步驟,結果無法使用
回覆刪除Forbidden
You don't have permission to access /cacti/ on this server.
請檢查一下 /usr/share/cacti 的權限
刪除已經開放權限還是無法
刪除您好..我也遇到相同問題
回覆刪除You don't have permission to access /cacti/ on this server.
請問需要確認哪個資料夾的權限呢?
請檢查一下 /usr/share/cacti 的權限
刪除cat /var/log/httpd/error_log
刪除我看到的問題是找不到 index.html
然後 vi /etc/httpd/conf/httpd.conf 把 index.html 改成 index.php
restart httpd
#systemctl restart httpd
我導入mysql -u user -p -A cactidb < /usr/share/doc/cacti-0.8.8b/cacti.sql
回覆刪除出現了以下問題
-bash: /usr/share/doc/cacti-0.8.8b/cacti.sql: No such file or directory
請問有什麼問題解決呢?
這個訊息的意思是找不到這個目錄或檔案,很可能是因為改版之後有改變,可以試著找一下 /usr/share/doc/cacti 開頭的目錄。
刪除當我嘗試輸入 sudo systemctl restart snmp && sudo systemctl enable snmpd
回覆刪除出現以下錯誤
Failed to restarted snmp service: unit not found
解決了 謝謝
刪除完成設定後 在Chrome輸入 http://XXX.XXX.XXX.XXX/cacti
回覆刪除出現以下信息
Forbidden
You don't have permission to access /cacti/ on this server.
已根據設定 # require host localhost
刪除require all granted
上網尋找到/etc/httpd/conf.d/cacti.conf 里 allow 網段or ip 和重啟httpd services, 更改後也是無法成功.
Forbidden
回覆刪除You don't have permission to access /cacti/ on this server.
原因是因為 沒有安裝PHP的程式
補上一句
sudo yum install php php-gd php-mysql php-mcrypt php-mbstring
就可以了
我的問題跟你一樣
刪除Forbidden
You don't have permission to access /cacti/ on this server.
補上
sudo yum install php php-gd php-mysql php-mcrypt php-mbstring
再補上 重新啟動 Apache,並讓它在開機後自動啟動。
sudo systemctl restart httpd && sudo systemctl enable httpd
即可解決囉~感謝