« 被 copy 之後才體會 copyright 的可貴 | 首頁 | 2006/03, Vol. 122 PChome Magazine »

2006年03月05日

Cacti 圖形化監控介面

話說 MRTG 的作者發展出功能更強大的 RRDtool 之後, 由於太過複雜難用, 因此又發展出以 RRDtool 為基底, 前端為 Web 介面的 Cacti 圖表系統.

除了內建的系統資源圖表之外, 能自行加入各式 SNMP 流量圖表, 甚至透過外掛的 Scripts 和 Templates 建立各種不同的監控圖, 是 Cacti 最迷人的地方.

以下是在 Fedora Core 1 安裝 Cacti 與新增 SNMP Hosts (IP Sharing & Linux NAT) 流量圖的操作記錄:

環境:

  • Fedora Core 1
  • Apache HTTP Server 2.0.x
  • MySQL 3.23
  • PHP 4.3.8
  • Perl 5.8.3

1. 安裝需求套件

yum install mysql-devel net-snmp php-snmp freetype-devel libpng-devel libart_lgpl-devel net-snmp-utils
wget ftp://rpmfind.net/linux/freshrpms/fedora/linux/1/rrdtool/rrdtool-1.0.49-1.1.fc1.fr.i386.rpm
rpm -ivh rrdtool*.rpm (perl 需昇級至 5.8.3 才能安裝 rrdtool-1.0.49-1.1.fc1.fr.i386.rpm)

2. 取得並安裝 cacti

wget http://www.cacti.net/downloads/packages/Fedora/3/cacti-0.8.6h.fc3.i386.rpm
rpm -ivh cacti*.rpm

cacti-0.8.5a.fc1.i386.rpm 這個 for Fedora Core 1 的版本使用過程中會出現不明的 SNMP Error, 所以改用 fc3 的 0.8.6h 版本

安裝成功後出現訊息: Be sure to follow steps 2 through 5 in the install guide for new Cacti installations.
參考頁面為: http://www.cacti.net/downloads/docs/html/install_unix.html

其他版本請參考 cacti 官方下載頁面: http://www.cacti.net/download_cacti.php

--- 2007.04.30 新增 :: 在 Fedora Core 3 以 yum 安裝 cacti

vi /etc/yum.repos.d/fedora-extras.repo

[base]
name=Fedora Core $releasever - $basearch - Extras
baseurl=http://ftp.isu.edu.tw/pub/Linux/Fedora/linux/extras/$releasever/$basearch/
enabled=1
gpgcheck=1

yum install cacti net-snmp-utils

如果執行途中缺少某些元件
到 ftp://ftp.isu.edu.tw/Linux/Fedora/linux/core/3/i386/os/Fedora/RPMS
或是
ftp://ftp.isu.edu.tw/Linux/Fedora/linux/extras/3/i386/
找找看有沒有那些短缺的元件, 手動安裝這些元件後再試一次 yum

如果發生 public key not available 的情況, 可執行以下指令手動安裝:

cd /var/cache/yum
rpm -Uvh `find ./ -name "*.rpm"`

從 Fedora Extras Repository 安裝的 cacti, 它的檔案路徑和本篇有些出入, 將以深灰色字體另行標註

3. 建置 cacti 運行環境

mysqladmin -u root -p create cacti
mysql -u root -p -A cacti < /var/www/html/cacti/cacti.sql (/usr/share/doc/cacti-0.8.6i/cacti.sql)
mysql -u root -p -A mysql
mysql> grant all privileges on cacti.* to cactiuser@localhost identified by 'cactiuser';
mysql> flush privileges;
mysql> exit
cd /var/www/html/cacti (yum 安裝者請略過)
chown -R cactiuser log rra (yum 安裝者請略過)
vi ./include/config.php (/usr/share/cacti/include/db.php)

$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser";

vi /etc/crontab (yum 安裝者請略過)

*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1

vi /etc/httpd/conf/httpd.conf

<Directory /var/www/html/cacti> (/usr/share/cacti)

SSLRequireSSL
Order allow,deny
Allow from 192.168 someip.outside.your.lan

</Directory>

/etc/init.d/httpd reload

SSL 憑證的建立方式參考這篇: Apache HTTP Server + Mozilla Calendar / Sunbird
讓 Apache HTTP Server 不顯示版本編號的方法: 編輯 httpd.conf, 修改 ServerTokens 參數為 Prod

4. 第一次登入 cacti 頁面

開啟瀏覽器, 輸入網址: https://your.host.ip/cacti/ (因 SSLRequireSSL 參數強迫 SSL 連線)

第一次連入時, 會出現 Required Tool Path 的設定畫面. 設定完成後, 首次登入的帳號密碼皆為 admin, 登入後會出現重設密碼的畫面, 完成後才會進入 cacti 主畫面.

cacti 預設即有本機的 Memory Usage、Load Average、Logged in Users 和 Processes 等圖表, 點選 graphs 即可查看. (但要等 poller.php 執行後才會有圖)

5. 新增網路流量圖

5.1 支援 SNMP 的 IP 分享器 (以 Vigor 2900 為例)

點選 console → New Graphs → Create New Host
輸入Description: Vigor2900 (或其他自定描述)
輸入 Hostname: 192.168.0.254 (IP Sharing 的內部 IP)
點選 Host Template: Generic SNMP-enabled Host
點選 create
出現 Save Successful. 後點選 Create Graphs for this Host
勾選 Ethernet0 (LAN) 與 Ethernet1 (WAN)
點選 create

修改圖表抬頭, 讓圖表更容易閱讀

點選 console → Graph Management → Vigor2900 - Traffic - Ethernet0/1
原 Graph Fields: Title 為: |host_description| - Traffic - |query_ifDescr|/|query_ifIndex|
修改成: |host_description| - Traffic - LAN
點選 save 後, 依同樣步驟修改 Vigor2900 - Traffic - Ethernet1/4 為 WAN

5.2 Linux NAT with snmpd (建置參考: Building Linux NAT with MRTG network monitoring)

點選 console → New Graphs → Create New Host
輸入Description: Linux NAT (或其他自定描述)
輸入 Hostname: 192.168.0.254 (Linux NAT 的內部 IP)
點選 Host Template: Generic SNMP-enabled Host
點選 create
出現 Save Successful. 後點選 Create Graphs for this Host
勾選 lo、eth0、eth1
點選 create

5.3 將新圖表加入 Tree View

點選 console → Graph Trees → Default Tree → Add
點選 Tree Item Type: Host
點選 Host: 指定的 Host (以上述 5.1 和 5.2 為例, 可選擇 Vigor2900 或 Linux NAT)
點選 create
點選 graphs → Tree Mode (預設即是 Tree Mode, 亦可點選樹的圖案)
原先只有 Host: localhost 的項目, 現在可點選 Host: 剛剛指定的 Host

後記:

在 Pentium II 333MHz, 192MB RAM 的環境下跑 cacti (預設 localhost + 一個 snmp host 圖表) 還蠻順的, 並不會影響系統效能. MRTG 可以安心退休了 :P


相關網頁:

Posted by Jamyy at 2006年03月05日 23:04

Trackback Pings

TrackBack URL for this entry:
http://cha.homeip.net/cgi-bin/mt/mt-tb.cgi/175

Comments

您介紹的很棒耶~
給您加油和鼓勵~~
對了~
怎麼都沒看見您自我介紹呢?

Posted by: 小米糕 at 2006年03月07日 02:20

謝謝您的鼓勵
關於自我介紹這個問題最近剛好也有想過
不過我構思非技術性文章的速度真的很慢
也許還要再蘊釀一陣子才會放上去吧 :P
香港網友 Enoch 這篇關於自我介紹的文章寫得不錯:
http://enochng.mysinablog.com/index.php?op=ViewArticle&articleId=56904

Posted by: Jamyy at 2006年03月07日 09:47

你好!
我按照你的叙述进行配置,环境和所需的软体都是一致的
但我用配置cacti那台机的mozilla进行访问时,得出的结果是:Forbidden
You don't have permission to access /cacti on this server.
cacti的目录是/var/www/html 权限是775
和它在同一目录/var/www/html下的文件都可访问,为何cacti却不能访问呢?是不是要加一个名为cactiuser的用户或组?

Posted by: liozhou at 2006年09月22日 11:45

又或者是SSL没有配置好?

Posted by: liozhou at 2006年09月22日 11:49

您好~

1. 請先確定 /var/www/html/cacti 的權限是 775 或 755

2. 請確定 httpd.conf 中, DirectoryIndex 是否包含 index.php

3. 請確定 httpd.conf 中, cacti 路徑的 Allow from 是否依照您的網路環境設定正確

4. 若啟用 SSLRequireSSL 設置, 則必須以 https:// 連線才能瀏覽, 否則一樣會出現 Forbidden 的錯誤

Posted by: Jamyy at 2006年09月22日 13:15

问题已解决,谢谢!
我接触linux的时间不是很长,所以还是想再向你请教一下:刚才发生问题的时候,我到网络上去寻找相关的信息,看到有很多人的配置文档中除了上述步骤外,都还配置了/etc/snmp/snmpd.conf
但在你的文章中却没有提及,配与不配置有什么差别吗?

Posted by: liozhou at 2006年09月22日 16:27

啊... 真的沒提到這部份耶, 真是不好意思, 謝謝您的提醒 ^^'
其實這篇主要是架構在 MRTG 升級 Cacti 的情況下
而在建置 MRTG 的時候就有提到 snmpd 的設置了:
/blog/archives/2005/03/building_linux.html
其實我對 snmp 也只是一知半解, 依樣畫葫蘆而已 :P
就我所知, 若 MRTG 只用來分析某個 host 或 device (蒐集非本機所產生的資訊), 則本機不需設置 snmpd
但若 MRTG 要統計的是本機的資訊 (如本機即為 NAT), 就必需在本機設置 snmpd
而 cacti 即預設蒐集本機資訊, 所以本機的 snmpd 是必備的

Posted by: Jamyy at 2006年09月22日 17:04

哦,原来是这个样子,不过好彩我事先把snmpd启动了。
谢谢此次你的帮助,我原来是做windows网络管理的,现在进入linux网络管理才几个月的时间,所以碰到的问题也是多多啊!比如一个postfix就差点让我打了退堂鼓,最后无赖只有用exchange替代了。
在网上我也看到了有很多人在学习linux方面的编程语言,我没有什么这方面的基础,可很想往这方面发展,所以想请教一下我应该先从哪步开始呢?先学哪种linux语言比较好起步呢?

Posted by: liozhou at 2006年09月23日 10:18

歡迎你, Linux 的新朋友 :)
我之前是在微軟平台寫 ASP 網頁程式的
自從轉換跑道當了網管後, 才開始使用 Linux
提到 Linux 的程式開發, C 語言是公認的第一首選
但我是以 "管理者" (administrator) 和 "使用者" (application user) 的角度來切入 Linux 領域
Linux 上的程式開發對我來說並不是重點
所以我先學習 shell script 和 perl 這兩種語法簡單, 能達到管理需求的程序語言
當然, 從 IIS 跨足 Apache http server, PHP 也是一定要接觸的
C、Java 對我來說都太 "硬" 了, 而且也沒有這方面的需求...
必要的話, 我還是會在 MS 平台用 VB 寫 (看得出來, 我都挑 "軟" 的吃 :P)
所以我恐怕沒能力推薦, 只能說, 先確立自己的學習目標, 再去瞭解與選擇適合的工具 (程式語言), 才是最理想的方式唄

Posted by: Jamyy at 2006年09月23日 11:16

英雄所见略同,我刚开始接触linux的时候也是这么想的,身为一个网络的管理者,适当的工具是为了更方便我的工作,如果花在语言上的时间太多,那必然又会造成网络管理上的疏忽。
其实我是商学院毕业的,玩电脑是我的爱好之一,没想到毕业之后这个爱好竟让我走上了网管之路。
现在我所管理的网络还只是刚刚起步,可以说是一个windows和linux的合成体:windows 2003作为AD server
exchange 2003作为mail server
linux squid作为NAT
vsftpd作为ftp server
最近的目标是再配置一台apache
虽然再往后做都是我所不了解的区域,一步更会比一步难走,但我想这世界上应该没什么事情是简单的吧!当然这也需要你的更多帮助。交个朋友吧,我的E-MAIL:liozhou@163.com

Posted by: liozhou at 2006年09月23日 15:19

jamyy老大,你发给我的E-MAIL已经开始折磨我了,超想看,可不管用什么方法都只能看到乱码,请问你用的是哪个版本的系统?我也照着装一个好了

Posted by: lio at 2006年09月26日 11:24

^^' 不好意思, 我後來試著用 UTF-8 編碼, 看來還是沒能成功... 我已經寄了 gmail 邀請函給你, 你加入後應該就能正常通訊了 :)

Posted by: Jamyy at 2006年09月26日 13:39

請教各位,Cacti應該可以抓Windows平台的Memory使用狀況吧,各位可知其Graph Templates應該要怎樣創建?

多謝!!

Posted by: Jely at 2007年02月08日 13:46

Dear Jamyy:

不好意思又來打擾您嚕,我照您的步驟安裝cacti,在rpm -ivh cacti*.rpm這個步驟時,它說snmp錯誤,需要cacti-0.8.6h-1.fc3.i386,請問這是我有少這個檔嗎?

Wanye

Posted by: wanye at 2007年04月29日 00:24

Wanye 您好!

若您執行的是 rpm -ivh cacti*.rpm 這個指令的話
它回應的訊息應該是缺少 net-snmp 這類的套件吧?
這個時候您只要依提示安裝相關的套件, 把需求套件都裝齊了
就能安裝 cacti*.rpm
如果您使用的是 fc3 以上的版本, 執行 yum install cacti 就行了
若是 fc2 (含) 以前的版本, 加入 rpmforge (DAG) 的 repository, 就能用 yum 安裝 cacti
http://dag.wieers.com/rpm/packages/rpmforge-release/

用 yum 安裝 cacti 只要執行 yum install cacti 就行了
安裝完成後請從本篇第三個步驟繼續操作

Posted by: Jamyy at 2007年04月29日 23:33

Dear Jamyy:

它回應的訊息是→error:Failed dependencies:php-snmp is needed by cacti-0.8.6h-1.i386,網路上好像找不到,不過用您說明的yum是ok的,而從步驟三執行,他會說沒有這些檔案或目錄,是需要自己建立嗎?另附帶一點:我是fc3,有mail、ftp、ntop、mrtg,目前是想要嘗試用cacti,畫面的感覺和一些方式好像都不錯!

wanye

Posted by: wanye at 2007年04月30日 00:11

Wanye,

yum 安裝的 cacti 它的路徑是 /var/www/cacti
和本篇的 /var/www/html/cacti 不一樣

Posted by: Jamyy at 2007年04月30日 09:07

Dear Jamyy:

我確定沒有這個資料夾或檔案存在,而且有錯誤訊息,就算我直接走步驟三,他會說我cacti的datadase不存在!

Cannot open/read repomd.xml file for repository: updates-released
failure: repodata/repomd.xml from updates-released: [Errno 256] No more mirrors to try.

mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'cacti'. Database exists'

wanye

Posted by: wanye at 2007年04月30日 11:05

Wanye,

1. Cannot open... 那個訊息是 yum 無法下載相關檔案所致, 通常多試幾次就能排除這個問題, 或是參考 /blog/archives/2006/04/yum_apt.html 修改載點

2. 'Database exists' 那串訊息表示資料庫已存在, 無法重複建立

請執行 rpm -q cacti 查詢 cacti 是否已安裝
若確定已安裝, 執行 rpm -ql cacti 可列出 cacti 所有檔案, 就能確定相關檔案的所在路徑

Posted by: Jamyy at 2007年04月30日 11:48

Dear Jamyy:

我確認過用apt和yum都無法取得cacti套件,而且用rpm確定沒有安裝cacti,這跟我有安裝ntop有關係嗎?

wanye

Posted by: wanye at 2007年04月30日 14:05

Wanye,

以下是在 Fedora Core 3 以 yum 指令安裝 cacti 的操作過程:

請參考 /blog/archives/2006/04/yum_apt.html 建立 /etc/yum.repos.d/fedora-extras.repo
再執行 yum install cacti 就能安裝 cacti 了

安裝過程中也許會發生一些狀況..
如果執行途中缺少某些元件
到 ftp://ftp.isu.edu.tw/Linux/Fedora/linux/core/3/i386/os/Fedora/RPMS
或是
ftp://ftp.isu.edu.tw/Linux/Fedora/linux/extras/3/i386/
找找看有沒有那些短缺的元件, 手動安裝這些元件後再試一次 yum

如果發生 public key not available 的情況, 可執行以下指令手動安裝:
cd /var/cache/yum
rpm -Uvh `find ./ -name "*.rpm"`

ps. 注意: find ./ -name "*.rpm" 是由 ( ` ) 這個符號框起來的, 這個符號通常和毛毛蟲符號 ( ~ ) 同一個按鍵

以上由 Fedora Extras Repository 安裝的 cacti, 它的網頁路徑是在 /usr/share/cacti, 非本文所指之 /var/www/html/cacti;

Posted by: Jamyy at 2007年04月30日 16:08

Dear Jamyy:

在編輯 /etc/apt/sources.list時,只要不加入rpm ftp://cle.linux.org.tw/apt/heidelberg Fedora os updates freshrpms cle,就不會有錯誤訊息,不過...就算加進去或不加進去,他還是說cacti no match,而且...我真想撞牆= =,一直搞不起來,又一直麻煩您...@@

             Wanye   

Posted by: wanye at 2007年04月30日 18:01

Wanye,

沒那麼嚴重啦! 千萬別想不開呀~
建議你用 yum 安裝, 我已經修改原本的文章
請再照著步驟多試幾次, 相信一定可以成功的

Posted by: Jamyy at 2007年04月30日 18:58

Dear Jamyy:

我晚上試了老半天,終於可以用rpm -ivh cacti*,真的是快吐血嚕!而且還是莫名其妙用出來的!!不過...完成後的狀況是↓
Forbidden
You don't have permission to access /cacti on this server.
是我ssl沒設好嗎?
另外,我可以不需要用ssl連線嗎?若我希望是網際網路都可以看的到我的cacti,又應該怎麼設呢?

wanye

Posted by: wanye at 2007年04月30日 22:13

Dear Jamyy:

補充上面的問題,請問cacti如何中文化?是否要建立介面和圖表呢?因為我進去看只有127.0.0.1的介面,好像也沒有圖表...

  Wanye

Posted by: Wanye at 2007年05月01日 10:29

Wanye,

恭喜你成功了
Cacti 不一定要用 SSL 連線
如果想讓網際網路都連得到你的 cacti, 把 Allow from 192.168 改成 Allow from all 就行了
至於 Cacti 中文化以及其他設定上的問題請參考
http://cacti.xxoo.net/modules/newbb/index.php

Posted by: Jamyy at 2007年05月02日 12:56

Dear Jamyy:

謝謝您的指導,另外,想請問一下,CACTI是否跟MRTG一樣只能抓本機的封包?如果可以抓同一個LAN端的封包,那又要怎麼去設定呢?

Wanye

Posted by: Wanye at 2007年05月02日 17:09

Wanye,

MRTG 和 Cacti 都能配合支援 snmp 的網路設備繪製圖表
本文就有兩個實例, 敬請參考
若您想分析 LAN 的詳細狀況, 建議使用 ntop

Posted by: Jamyy at 2007年05月02日 20:56

大大:
請教一下,我安裝成功也可正常使用!!
有一問題,請教一下,就是cacti可以去捉windows base的機器,但針對 microsoft isa software 不知有無 isa 的xml ??

Posted by: Jeff at 2007年05月15日 14:51

不好意思, 您的問題太深奧了, 在下恐怕幫不上忙
我想 google 應該可以找出一些線索...

Posted by: Jamyy at 2007年05月16日 18:13

您好,請問我用 Redhat Enterprise 4 , mysql 4.1.20
安裝後 , 圖會秀不出來. 但在 fedora 3 , mysql 3.23時,
並沒有這個問題.

請問大大,您有遇過嗎?

Posted by: isgood at 2007年07月02日 23:57

我沒遇過圖出不來的情況
不過您可以查看 error_log 是否有進一步的線索

Posted by: Jamyy at 2007年07月03日 11:31

Jamyy老大,感謝您網站的出現,讓我受益良多.感謝. 想請教個問題.

在Cacti上可以針對某一個Port來監控嗎? 如果此Service被停掉了,是否可以Email通知.

例如 : 我想監控ftp(21) Port .當此Service被停掉了. 則可以Email 通知嗎?

或者監控某個Partition硬碟空間超過85%,則Cacti也會Email通知,請問您有設定過這樣的經驗嗎? 感謝您的回答.

Posted by: Paul at 2007年10月30日 15:08

Paul 您好,

您客氣了, 我只是隨手把心得整理上網而已 (然後就放心的忘記了 :)

其實當初安裝 cacti 只是為了取代 mrtg 而已, 並未再深入研究

不過您的需求看起來不太像是 cacti 的工作, 系統服務和硬碟空間的監控可自行撰寫 shell script 或利用其他工具來處理

Logcheck 在發現異常 log 時會自動 mail 通知管理者
Cfengine 本身就含有程序管理的功能, 若有系統程序沒在執行, 它會自動重新啟動該服務

這兩個工具的說明請參考:

http://cha.homeip.net/blog/archives/2006/03/portsentry_logc.html

http://cha.homeip.net/blog/archives/2006/03/cfengine.html

Posted by: Jamyy at 2007年10月31日 15:16

請問,

我已配置完成,但圖會出不來.
嘗試修改過php.ini檔案仍無法改善.
但小弟的檔案卻是在/etc/php.ini目錄下.(不確定世不正確)

請協助指導是哪裏仍未改正?! 感謝!

Posted by: evan at 2008年01月03日 18:43

updata.
現在圖可以出來,但無法每五分鐘執行.

我用yum安裝,並且在console-->Settings-->Poller,Enabled有勾選、選擇Poller Type:cmd.php

請大大協助指導!

Posted by: Anonymous at 2008年01月04日 08:56

evan 您好,

請編輯 /etc/cron.d/cacti 這個檔案
把最前面的井字符號 ( # ) 拿掉就可以了

Posted by: Jamyy at 2008年01月04日 10:05

我想把cacti中文化,不知道那一些可以找到,或者你有試成功呢?

Posted by: hon0612 at 2008年01月10日 18:47

hon0612 您好,

請參考:
http://cacti.xxoo.net/modules/newbb/viewtopic.php?topic_id=33&forum=5

Posted by: Jamyy at 2008年01月11日 17:09