之前有寫過一篇Cacti 監控系統介紹與安裝 ,有興趣的可以參考看看。兩篇設定後都是可以使用的,只是寫這篇更新版主要是為了把一些相關資料再次重新整理一次。
前置動作
安裝Cacti會使用到的套件
統一把下載的檔案放在 /tmp裡
RPMforge :
[root@localhost ~]# cd /tmp #統一把下載的資料存放在tmp [root@localhost tmp]# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm [root@localhost tmp]# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt #安裝 DAG 的 GPG 金鑰 [root@localhost tmp]# rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm #審核所下載的套件 [root@localhost tmp]# rpm -i rpmforge-release-0.5.2-2.el5.rf.*.rpm #安裝套件,這樣做會新增一個yum軟件庫的設定檔及匯入應有的GPG金鑰 [root@localhost tmp]# yum install htop #安裝軟件 |
[root@localhost ~]# yum install mysql-server mysql-devel |
Apache
[root@localhost ~]# yum install httpd |
PHP and PHP Modules (include LDAP Authentication Module)
[root@localhost ~]# yum install php php-mysql php-snmp php-ldap |
RRDTool (需要加入 RPMForge 套件來源後,才能直接用 yum 安裝 RRDTool)
[root@localhost ~]# yum install libart_lgpl-devel zlib-devel libpng-devel freetype-devel dejavu-lgc-fonts cairo-devel libxml2-devel pango-devel pango freetype [root@localhost ~]# yum install rrdtool |
[root@localhost ~]# cd /tmp [root@localhost ~]# wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.5.tar.gz [root@localhost ~]# tar -zxvf rrdtool-1.4.5.tar.gz [root@localhost ~]# cd rrdtool-1.4.5 [root@localhost ~]# export PKG_CONFIG_PATH=/usr/lib/pkgconfig/ [root@localhost ~]# ./configure [root@localhost ~]# make && make install [root@localhost ~]# ln -s /tmp/rrdtool-1.4.2 /usr/local/rrdtool |
等等會使用到編譯原碼,所以安裝以下兩個套件
[root@localhost ~]# yum -y install gcc [root@localhost ~]# yum -y install gcc-c++ |
Spine for Cacti for centos安裝
[root@localhost ~]# yum install net-snmp-devel mysql-devel openssl-devel libtool [root@localhost ~]# cd /tmp [root@localhost ~]# wget http://download.faq-book.com/Linux/Cacti/cacti-spine-0.8.7g-patched.tar.gz [root@localhost ~]# tar -zxvpf cacti-spine-0.8.7g-patched.tar.gz [root@localhost ~]# cd cacti-spine-0.8.7g [root@localhost ~]# ./bootstrap [root@localhost ~]# ./configure [root@localhost ~]# make [root@localhost ~]# make install |
SNMP Library and Utility 可參考此篇 【Linux SNMP安裝】
[root@localhost ~]# yum install net-snmp net-snmp-libs net-snmp-utils |
設定 SNMP
[root@localhost ~]# vim /etc/snmp/snmpd.conf #註解下列三行 # 41 #com2sec notConfigUser default public # 47, 48 #group notConfigGroup v1 notConfigUser #group notConfigGroup v2c notConfigUser #能查詢的功能,格式為 # 57 #view <VIEW_NAME> included .1.x view systemview included .1.3.6.1.2.1.2 #設定可以抓取網卡資料 view all included .1 80 # 提供所有的 SNMP 資訊 #定義可以抓取資料的來源 建議未避免被其他第三方抓取可以將 public改為其他名稱 # 74, 75 #com2sec <USERNAME> <NETWORK_SOURCE> <COMM_STRING> com2sec local localhost public com2sec mynetwork 10.40.0.0/16 public #設定使用者群組,格式為 #78 79 80 81 #group <GROUPNAME> <SNMP_VERSION> <USERNAME> group MyRWGroup v1 local group MyRWGroup v2c local group MyROGroup v1 mynetwork group MyROGroup v2c mynetwork #存取權限設定,讓 local 可讀可寫,讓 mynetwork 只能讀 #94 95 #access <GROUPNAME> <CONTEXT> <SEC_MODEL> <SEC_LEVEL> <PREFIX> <READ> <WRITE> <NOTIF> access MyROGroup "" any noauth exact all none none #network只能讀 access MyRWGroup "" any noauth exact all all all #local可讀可寫 |
[root@localhost ~]# snmpd -f –Le #查看當前的SNMP有沒有出什麼錯 [root@localhost ~]#/etc/init.d/snmpd start #啟動SNMP [root@localhost ~]# snmpwalk -c public -v 2c localhost #可測試看SNMP是否正常 |
設定 Apach
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf ServerName rhel5-cacti:80 |
啟動Apache, MySQL, SNMP 服務,設定開機自動啟動
[root@localhost ~]# /etc/init.d/httpd start [root@localhost ~]# /etc/init.d/mysqld start [root@localhost ~]# /etc/init.d/snmpd start [root@localhost ~]# chkconfig httpd on [root@localhost ~]# chkconfig mysqld on [root@localhost ~]# chkconfig snmpd on |
可先到Cacti官網 http://www.cacti.net/downloads/ 下載最新或是所需要的Cacti版本
這邊我是用cacti-0.8.7e為範例
[root@localhost ~]# cd /tmp [root@localhost ~]# wget http://www.cacti.net/downloads/cacti-0.8.7e.tar.gz [root@localhost ~]# tar -zxvpf cacti-0.8.7e.tar.gz [root@localhost ~]# mv cacti-0.8.7e /var/www/html/ |
建立 Cacri 的系統使用者
[root@localhost ~]# cd /var/www/html/ [root@localhost ~]# groupadd cactiuser #建立一個cactiuser的群組 [root@localhost ~]# useradd -r -M cactiuser #cactiuser可自己設定 [root@localhost ~]# usermod -G cactiuser apache #把apache加入到cactiuser組群 |
修改目錄權限
[root@localhost ~]# cd /var/www/html/ [root@localhost ~]# chown -R root:root * [root@localhost ~]# cd /var/www/html/cacti/ [root@localhost ~]# chown -R cactiuser: cactiuser rra/ log/ |
設定MySQL
幫MySQL設定新密碼
[root@localhost ~]# mysqladmin -u root password NEW_PASSWORD # NEW_PASSWORD 部份可自行輸入 |
建立cacti 的資料庫
[root@localhost ~]# mysql -uroot -ppassword #連線到MySQL mysql> CREATE DATABASE cacti; #建立Cacti 資料庫 mysql> GRANT ALL PRIVILEGES ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipasswd'; #設定cacti 資料庫所有權限給本機的cactiuser 並設定密碼為 cactipasswd,密碼也可自行修改 mysql> FLUSH PRIVILEGES; mysql> quit |
匯入cacti資料庫 :
[root@localhost ~]# mysql -u cactiuser --password=cactipasswd cacti < /var/www/html/cacti/cacti.sql |
檢查看看是否有匯入成功
[root@localhost ~]# mysql -u cactiuser --password=cactipasswd cacti mysql>show tables; mysql> quit |
修改相關設定檔
修改Cacti設定檔 include/config.php 連接 MySQL 的使用者、密碼及資料庫名稱
[root@localhost ~]# vi /var/www/html/cacti/include/config.php $database_type = "mysql"; $database_default = "cacti"; $database_hostname = "localhost"; $database_username = "cactiuser"; #修改為自行建立的資料庫使用者帳號 $database_password = "cactipasswd"; #修改為自行建立的資料庫使用者密碼 $database_port = "3306"; |
設定Spine修改連接資料庫的帳號密碼
[root@localhost ~]# cp /usr/local/spine/etc/spine.conf /etc/spine.conf [root@localhost ~]# vi /etc/spine.conf DB_Host localhost DB_Database cacti DB_User cactiuser #修改為自行建立的資料庫使用者帳號 DB_Pass cactipasswd #修改為自行建立的資料庫使用者密碼 DB_Port 3306 DB_PreG 0 |
測試Spine是否正常
[root@localhost ~]# /usr/local/spine/bin/spine SPINE: Using spine config file [/etc/spine.conf] SPINE: Version 0.8.7g starting SPINE: Time: 2.7348 s, Threads: 1, Hosts: 4 |
設定排程
[root@localhost ~]# vi /etc/crontab */5 * * * * cactiuser /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1 |
Cacti 後台設定
打開瀏覽器輸入自己的網址
http://your-server(ip)/cacti
會看到下圖
請點選【Next】
一樣在點選【Next】
此部份會檢查路徑若有問題,綠色字體會變成紅色告知。
此為路徑正常的圖
路徑設定為:
RRDTool Binary Path: /usr/bin/rrdtool
PHP Binary Path: /usr/bin/php
snmpwalk Binary Path: /usr/bin/snmpwalk
snmpget Binary Path: /usr/bin/snmpget
snmpbulkwalk Binary Path: /usr/bin/snmpbulkwalk
snmpgetnext Binary Path: /usr/bin/snmpgetnext
Cacti Log File Path: /var/www/html/cacti/log/cacti.log
SNMP Utility Version: NET-SNMP 5.x
RRDTool Utility Version: RRDTool 1.x.x
登入的帳號密碼
登入的帳號密碼預設都是 admin
【Console】→【Settings】→【Paths】→【Spine Poller File Path】
路徑位置加入 /usr/local/spine/bin/spine
修改Cacti使用的Poller Type
【Console】→【Settings】→【Poller】→【Poller Type】
選擇spine
到這邊 Cacti的安裝大至上就完成了。
再來介紹Cacti 補丁
由於這邊是用Cacti 0.8.7e安裝,所以先說明Cacti 0.8.7e
有關補丁下載和說明也可參考官網【Cacti 0.8.7e補丁】
[root@localhost ~]# cd /var/www/html/cacti [root@localhost ~]# wget http://www.cacti.net/downloads/patches/0.8.7e/cli_add_graph.patch [root@localhost ~]# wget http://www.cacti.net/downloads/patches/0.8.7e/snmp_invalid_response.patch [root@localhost ~]# wget http://www.cacti.net/downloads/patches/0.8.7e/template_duplication.patch [root@localhost ~]# wget http://www.cacti.net/downloads/patches/0.8.7e/fix_icmp_on_windows_iis_servers.patch [root@localhost ~]# wget http://www.cacti.net/downloads/patches/0.8.7e/cross_site_fix.patch [root@localhost ~]# patch -p1 -N < cli_add_graph.patch [root@localhost ~]# patch -p1 -N < snmp_invalid_response.patch [root@localhost ~]# patch -p1 -N < template_duplication.patch [root@localhost ~]# patch -p1 -N < fix_icmp_on_windows_iis_servers.patch [root@localhost ~]# patch -p1 -N < cross_site_fix.patch |
若想要了解最新版本的補丁可參考 http://cacti.net/download_patches.php
Cacti 其他文章:
Cacti Windows Server 2008 R2開啟SNMP服務
1. 選擇適當的作業系統
請用 CentOS 或 Red Hat Enterprise,不要使用 Fedora 或是 Redhat 9 之前的版本。Red Hat Enterprise 的 kernel 已經是最佳化了,非常適合當 Server 使用。
2. 使用 Spine (Cactid)
Spine 使用 C 來取代呼叫 cmd.php,在效能上提升很多。官方網頁也寫說 ,如果執行 php poller.php 時間超過 300 秒,就需要使用 Spine 。使用方法很簡單,照著官方網頁作就可以了。目前cmd.php存在的意義只是因為 php 讓 cacti 達成跨平台的特性。
3. filesystem 選擇
如果可以的話,切割一塊獨立的分割區掛載 cacti 。檔案格式 reiserfs 是比較好的選擇 比 ext3 還要快許多。另外,我們還可以使用 noatime 的選項掛載 。加了noatime後,系統不更新上次檔案的存取時間,這個資訊對 cacti 這個系統不是很重要,也不會有其他不良影響,對於繁忙的檔案系統,將可以大大減少檔案系統的 IO。
ex.
/dev/sda3 /var/www/html/cacti ext3 defaults,noatime 0 0
4. 加大 php 的記憶體使用的上限
vi /etc/php.ini
memory_limit = 32M (預設是 8mb, 可以改大一點)
5. 定期 optimize cacti 資料庫
不知道從甚麼時候開始,我家的 cacti 的 poller_output 會不明原因的長大,差不多兩個禮拜後,就會大到資料越寫越慢,直到無法更新。一開始我是每隔一段時間手動 "Truncate poller_output table" 後,就會繼續正常運作。但實在是太麻煩了,現在改成用 crontab 去 optimize 整個 cacti 資料庫。如果不會寫 SQL 的人,用 phpMyAdmin 執行 optimize 時,
同時也會顯示執行 SQL 的語法,直接拿來用就好了。在設定 cron 請注意,請不要跟 cacti 同時執行,假設你的 cacti 執行一次要 4 分鐘,請在第四分鐘後再執行。
其實正常來說 poller_output 的資料只是暫存的,系統會自行清空。但很奇怪的是,MySQL 有時候並沒有馬上實體刪掉,而是註記成冗餘資料,依舊占據資料表的空間。可能是這種原因導致資料表越長越大,所以後來我改用 optimize 的原因。
除錯建議:
1. rebild poller cache 或是 truncate poller_output table, 不可以在 cacti 的 poller.php 運作時執行
2. 善用 cacti web 的 debug 功能,以方便一個一個排除問題。
3. 建立新的device,最好先用 snmpwalk 測試一遍,可以抓到資料再來設定也不遲。
評論
此文章尚無評論。