cacti簡介
Cacti是基於PHP/MySQL的開源網絡監控及繪圖工具,它通過SNMP獲取數據並使用RRDTool予以存儲,然後在需要時利用RRDTool繪圖引擎繪圖並通過php展示。
Cacti的操作流程很簡單:獲取數據-->存儲數據-->展示數據。Cacti通過poller獲取數據。poller是一個通過調度的方式每隔一段時間(通常爲5分鐘)執行的程序,它通常通過SNMP來獲取遠程主機上的數據。
cacti的安裝及配置
本文檔中的平臺是RHEL5.8用到的程序爲:
cacti-0.8.8a (安裝路徑:/web/vhosts/cacti)
httpd-2.4.2 (安裝路徑:/usr/local/apache)
php-5.4.4 (安裝路徑:/usr/local/php)
MySQL-5.5.25a (安裝路徑:/usr/local/mysql)
rrdtool-1.4.7.tar.gz(安裝路徑:/usr/local/rrdtool)
一、 編譯安裝lamp平臺
(這裏不再給出詳細步驟,若沒有lamp平臺以下是一個腳本,執行即可;若已經安裝了則跳過此步驟,從“二” 開始即可)
準備工作:
1、若想支持mcrypt擴展,下載libmcrypt-2.5.7-5.el5.i386.rpm libmcrypt-devel-2.5.7- 5.el5.i386.rpm 並安裝 rpm -ivh libmcrypt-*
2、提供了一個httpd服務的腳本,如下,放到/root目錄下,命名爲httpd.sh
注意:要求php在configure時指定了--enable-sockets選項,否則,cacti將無法運行。
- #!/bin/bash
- #
- # httpd Startup script for the Apache HTTP Server
- #
- # chkconfig: - 85 15
- # description: Apache is a World Wide Web server. It is used to serve \
- # HTML files and CGI.
- # processname: httpd
- # config: /etc/httpd/conf/httpd.conf
- # config: /etc/sysconfig/httpd
- # pidfile: /var/run/httpd.pid
- # Source function library.
- . /etc/rc.d/init.d/functions
- if [ -f /etc/sysconfig/httpd ]; then
- . /etc/sysconfig/httpd
- fi
- # Start httpd in the C locale by default.
- HTTPD_LANG=${HTTPD_LANG-"C"}
- # This will prevent initlog from swallowing up a pass-phrase prompt if
- # mod_ssl needs a pass-phrase from the user.
- INITLOG_ARGS=""
- # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
- # with the thread-based "worker" MPM; BE WARNED that some modules may not
- # work correctly with a thread-based MPM; notably PHP will refuse to start.
- # Path to the apachectl script, server binary, and short-form for messages.
- apachectl=/usr/local/apache/bin/apachectl
- httpd=${HTTPD-/usr/local/apache/bin/httpd}
- prog=httpd
- pidfile=${PIDFILE-/var/run/httpd.pid}
- lockfile=${LOCKFILE-/var/lock/subsys/httpd}
- RETVAL=0
- start() {
- echo -n $"Starting $prog: "
- LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
- RETVAL=$?
- echo
- [ $RETVAL = 0 ] && touch ${lockfile}
- return $RETVAL
- }
- stop() {
- echo -n $"Stopping $prog: "
- killproc -p ${pidfile} -d 10 $httpd
- RETVAL=$?
- echo
- [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
- }
- reload() {
- echo -n $"Reloading $prog: "
- if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
- RETVAL=$?
- echo $"not reloading due to configuration syntax error"
- failure $"not reloading $httpd due to configuration syntax error"
- else
- killproc -p ${pidfile} $httpd -HUP
- RETVAL=$?
- fi
- echo
- }
- # See how we were called.
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- status)
- status -p ${pidfile} $httpd
- RETVAL=$?
- ;;
- restart)
- stop
- start
- ;;
- condrestart)
- if [ -f ${pidfile} ] ; then
- stop
- start
- fi
- ;;
- reload)
- reload
- ;;
- graceful|help|configtest|fullstatus)
- $apachectl $@
- RETVAL=$?
- ;;
- *)
- echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
- exit 1
- esac
- exit $RETVAL
接下來就可以執行腳本了
- #!/bin/bash
- #
- <<mark
- prepare the source packages
- apr-1.4.6.tar.bz2
- apr-util-1.4.1.tar.bz2
- httpd-2.4.2.tar.bz2
- cmake-2.8.8.tar.gz
- mysql-5.5.25a.tar.gz
- libmcrypt-2.5.7-5.el5.i386.rpm
- libmcrypt-devel-2.5.7-5.el5.i386.rpm
- php-5.4.4
- mark
- ################compileing httpd######################
- #yum -y groupinstall "Development Libraries" "Development Tools" "X Software Development"
- #setenforce 0
- #mkdir /source
- SOURCE=/source
- SysDir=/etc/rc.d/init.d
- PathDir=/etc/profile
- cd $SOURCE
- wget http://apache.etoak.com//apr/apr-1.4.6.tar.bz2
- wget http://apache.etoak.com//apr/apr-util-1.4.1.tar.bz2
- wget http://apache.etoak.com//httpd/httpd-2.4.2.tar.bz2
- wget http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz
- wget http://anduin.linuxfromscratch.org/sources/BLFS/svn/m/mysql-5.5.25a.tar.gz
- wget http://downloads.php.net/stas/php-5.4.4.tar.bz2
- tar xf apr-1.4.6.tar.bz2
- cd apr-1.4.6
- ./buildconf
- ./configure --prefix=/usr/local/apr
- make
- make install
- cd $SOURCE
- tar xf apr-util-1.4.1.tar.bz2
- cd apr-util-1.4.1
- ./buildconf --with-apr=$SOURCE/apr-1.4.6
- ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
- make
- make install
- cd $SOURCE
- yum -y install pcre-devel
- tar xf httpd-2.4.2.tar.bz2
- cd httpd-2.4.2
- ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-suexec --enable-ssl --enable-rewrite --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-modules-shared=most --enable-mpms-shared=all
- make
- make install
- cd $SOURCE
- echo "PidFile \"/var/run/httpd.pid\" " >> /etc/httpd/httpd.conf
- cp /root/httpd.sh $SysDir/httpd
- chmod +x $SysDir/httpd
- chkconfig --add httpd
- service httpd start
- echo "PATH=\$PATH:/usr/local/apache/bin" >> $PathDir
- export PATH=$PATH:/usr/local/apache/bin
- echo "MANPATH /usr/local/apache/man " >> /etc/man.config
- ln -sv /usr/local/apache/include /usr/include/httpd
- service httpd start
- #########################compileing mysql###################################
- cd $SOURCE
- tar xf cmake-2.8.8.tar.gz
- cd cmake-2.8.8
- ./bootstrap
- make
- make install
- cd $SOURCE
- groupadd -r mysql
- useradd -g mysql -r -d /data/mysql mysql
- tar xf mysql-5.5.25a.tar.gz
- cd mysql-5.5.25a
- cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLE_PROFILING=1
- make
- make install
- cd /usr/local/mysql
- chown -R :mysql .
- mkdir -pv /data/mysql
- chown -R mysql:mysql /data/
- cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
- cp /usr/local/mysql/support-files/mysql.server $SysDir/mysqld
- chmod +x $SysDir/mysqld
- chkconfig --add mysqld
- scripts/mysql_install_db --user=mysql --datadir=/data/mysql
- sed -i '/\[mysqld\]/a \datadir = /data/mysql' /etc/my.cnf
- sed -i 's/thread_concurrency = 8/thread_concurrency = 2/g' /etc/my.cnf
- echo "PATH=\$PATH:/usr/local/mysql/bin" >> $PathDir
- export PATH=$PATH:/usr/local/mysql/bin
- echo "MATHPATH /usr/local/mysql/man" >> /etc/man.config
- ln -sv /usr/local/mysql/include /usr/include/mysql
- echo " /usr/local/mysql/lib " >> /etc/ld.so.conf.d/mysql.conf
- ldconfig
- service mysqld start
- cd
- ##########################compiling php#########################
- cd $SOURCE
- tar xf php-5.4.4.tar.bz2
- cd php-5.4.4
- ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-sockets
- cd $SOURCE
- make
- make install
- cd $SOURCE
- cp php-5.4.4/php.ini-production /etc/php.ini
- echo "AddType application/x-httpd-php .php " >> /etc/httpd/httpd.conf
- echo "AddType application/x-httpd-php-source .phps" >> /etc/httpd/httpd.conf
- sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html/g' /etc/httpd/httpd.conf
- service httpd restart
- cd
- echo "The End!"
OK,此時lamp平臺架構好了
二、 安裝配置cacti
1、cacti虛擬主機
在LAMP平臺上,專門爲cacti準備了一個虛擬主機cacti.magedu.com,其配置如下:
- #vim /etc/httpd/httpd.conf
- 啓用虛擬主機
- # vim /etc/httpd/extra/httpd-vhosts.conf //把原有的虛擬主機註釋掉
- 添加內容如下:
- <VirtualHost *:80>
- ServerName cacti.forman.com
- DocumentRoot /web/vhosts/cacti
- <Directory "/web/vhosts/cacti">
- Options Indexes
- AllowOverride none
- Require all granted
- </Directory>
- ErrorLog "logs/cacti-error_log"
- CustomLog "logs/cacti-access_log" common
- </VirtualHost>
- #mkdir /web/vhosts/cacti -pv
2、net-snmp
2.1 安裝
由於本機即是監控端(NMS),又是被監控端,因此我們這裏直接通過yum安裝net-snmp和net-snmp-utils
- # yum -y install net-snmp net-snmp-utils
2.2啓動服務
- # service snmpd start
- # chkconfig snmpd on
- 使用如下命令進行測試:
- # snmpwalk -v 2c -c public localhost system
- 如果有正常監控信息輸出即爲OK。
3、安裝rrdtool
- #pwd
- /source
- #wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz
- # tar xf rrdtool-1.4.7.tar.gz
- # cd rrdtool-1.4.7
- # ./configure --prefix=/usr/local/rrdtool
- # make
- # make install
- #echo "MANPATH /usr/local/rrdtool/share/man" >> /etc/man.config
- #echo "PATH=\$PATH:/usr/local/rrdtool/bin " >> /etc/profile
- #export PATH=$PATH:/usr/local/rrdtool/bin
- #ln -sv /usr/local/rrdtool/include /usr/include/rrdtool
- #echo "/usr/local/rrdtool/lib" >> /etc/ld.so.conf.d/rrdtool.conf
- #ldconfig
- #cd
4、安裝cacti
4.1 安裝
- #pwd
- /source
- #wget http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz
- # tar xf cacti-0.8.8a.tar.gz -C /web/vhosts
- # cd cacti-0.8.8a
- # mv ./* /web/vhosts/cacti
4.2 初始配置:
爲cacti創建數據庫,並初始化所需要表:
- # mysqladmin -uroot -p create cacti //此時的密碼爲mysql的密碼
- # cd /web/vhosts/cacti
- # mysql -uroot -p cacti < cacti.sql
創建mysql用戶,使用cacti能訪問其cacti數據庫
- # mysql -uroot -p -e "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser'";
- //創建了用戶cactiuser 密碼也爲cactiuser
- # mysqladmin -uroot -p flush-privileges
- # mysql -ucactiuser -p //驗證一下是否正確
- cactiuser
接着創建系統用戶cactiuser,以之運行cacti的數據獲取和日誌記錄等工作
- # useradd cactiuser
- # chown -R cactiuser:cactiuser /web/vhosts/cacti/{log,rra}
以cactiuser用戶的身份,每5鍾獲取一次數據:
- # echo '*/5 * * * * /usr/local/php/bin/php /web/vhosts/cacti/poller.php &> /dev/null' > /var/spool/cron/cactiuser
php的時區不一致,把php配置文件/etc/php.ini中的時區改爲如下格式:
- #vim /etc/php.ini
- date.timezone = Asia/Shanghai
- # hwclock -s //同步系統時間
- # service httpd restart
編輯cacti的配置文件include/config.php,將實際訪問cacti的URL路徑,啓用並修改如下行:
//$url_path = "/cacti/";
我們這裏將之修改爲:
$url_path = "/";
在外面的物理機的hosts文件中添加:
X .X.X.X cacti.forman.com //實現域名的訪問
而後在瀏覽器中打開http://cacti.forman.com/install,按提示一步步配置即可完成安裝。
密碼第一次輸入的時候,會讓修改密碼,用戶默認爲admin 密碼爲admin
提示圖片如下:
第一次登陸的時候,會提示修改密碼,如下圖
重新登陸即可
device--->Localhost ---->version2 --->save即可 點擊graphs可看到生成的圖像,如下所示:
到這裏,cacti的基本工作做完了,後面的工作就是根據自己的需要進行配置了。本文不足之處期待指正