天天看點

cacti監控系統的安裝配置

1、cacti簡介

1)、cacti是用php語言實作的一個軟體,它的主要功能是用snmp服務擷取資料,然後用rrdtool儲存和更新資料,當使用者需要檢視資料的時候用rrdtool生成圖表呈現給使用者。是以,snmp和rrdtool是cacti的關鍵。Snmp關系着資料的收集,rrdtool關系着資料存儲和圖表的生成。

2)、mysql配合PHP程式存儲一些變量資料并對變量資料進行調用,如:主機名、主機ip、snmp團體名、端口号、模闆資訊等變量。

3)、snmp抓到資料不是存儲在mysql中,而是存在rrdtool生成的rrd檔案中(在cacti根目錄的rra檔案夾下)。rrdtool對資料的更新和存儲就是對rrd檔案的處理,rrd檔案是大小固定的檔案檔案(Round Robin Archive),它能夠存儲的資料筆數在建立時就已經定義。

2、軟體包準備

cacti-0.8.8b.tar.gz

httpd-2.2.23.tar.gz 

php-5.4.10.tar.gz

cmake-2.8.11.2.tar.gz

mysql-5.5.28.tar.gz

rrdtool-1.4.8.tar.gz

net-snmp-5.7.2.1.tar.gz

Python-2.7.6.tgz

libxml2-2.9.1.tar.gz

zlib-1.2.8.tar.gz

jpegsrc.v9a.tar.gz

libpng-1.6.12.tar.gz

freetype-2.5.3.tar.gz

libart_lgpl-2.3.21.tar.gz

gettext-0.19.2.tar.xz

libgd-2.1.0.tar.gz

curl-7.37.1.tar.gz

3、apache安裝配置

# tar zxvf httpd-2.2.23.tar.gz

# cd httpd-2.2.23

# ./configure --prefix=/usr/local/apache2 --enable-so

# make && make install

# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd

4、mysql安裝配置

# tar zxvf cmake-2.8.11.2.tar.gz

# cd cmake-2.8.11.2

# ./configure

# groupadd mysql

# useradd mysql

# tar zxvf mysql-5.5.28.tar.gz

# cd mysql-5.5.28

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/  -DMYSQL_DATADIR=/usr/local/mysql/data  -DWITH_INNOBASE_STORAGE_ENGINE=1  -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock  -DMYSQL_USER=mysql  -DWITH_DEBUG=0

# vim /root/.bashrc

PATH=/usr/local/mysql/bin:${PATH}

export PATH

# source /root/.bashrc

# cp support-files/my-medium.cnf /etc/my.cnf

# cp support-files/mysql.server /etc/init.d/mysqld

# chmod 755 /etc/init.d/mysqld

# chmod 755 /usr/local/src/mysql-5.5.28/scripts/mysql_install_db

# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# chown -R mysql.mysql /usr/local/mysql/data

# service mysqld start

# mysqladmin -uroot password 123456 

# mysqladmin --user=root -p create cacti

# mysql -uroot -p cacti<cacti.sql

mysql>GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipassword';

mysql>flush privileges;

5、GD安裝配置

1)、安裝libxml2

# tar zxvf Python-2.7.6.tgz #貌似隻能是這個版本,否則編譯libxml2時會報錯

# cd Python-2.7.6

# ./configure --prefix=/usr/local/python

# tar zxvf libxml2-2.9.1.tar.gz

# cd libxml2-2.9.1

# ./configure --prefix=/usr/local/libxml2

2)、安裝zlib

# tar zxvf zlib-1.2.8.tar.gz

# cd zlib-1.2.8

# ./configure --prefix=/usr/local/zlib2

# yum install -y zlib-devel

3)、安裝jpegsrc

# tar zxvf jpegsrc.v9a.tar.gz

# cd jpeg-9a

# ./configure --prefix=/usr/local/jpegsrc9

4)、安裝libpng

# tar zxvf libpng-1.6.12.tar.gz

# cd libpng-1.6.12

# ./configure --prefix=/usr/local/libpng2 

5)、安裝freetype

# tar zxvf freetype-2.5.3.tar.gz

# cd freetype-2.5.3 

# ./configure --prefix=/usr/local/freetype2

6)、安裝libart_lgpl

# tar zxvf libart_lgpl-2.3.21.tar.gz

# cd libart_lgpl-2.3.21

# ./configure --prefix=/usr/local/libart

7)、安裝gettext

# xz -d gettext-0.19.2.tar.xz

# tar xvf gettext-0.19.2.tar

# cd gettext-0.19.2

# ./configure --prefix=/usr/local/gettext

8)、安裝GD

# tar zxvf libgd-2.1.0.tar.gz

# cd libgd-2.1.0

9)、安裝curl

# tar zxvf curl-7.37.1.tar.gz

# cd curl-7.37.1

# ./configure --prefix=/usr/local/curl

6、php安裝配置

# yum install -y libxml2-devel freetype-devel

# tar zxvf php-5.4.10.tar.gz

# cd php-5.4.10

# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/local/jpeg9/ --with-png-dir=/usr/local/libpng2/ --with-gd --with-freetype-dir=/usr/local/freetype2/ --with-zlib-dir=/usr/local/zlib2/ --with-mysql=/usr/local/mysql --with-curl=/usr/local/curl --with-gettext=/usr/local/gettext --enable-sockets

# cp php.ini-development /usr/local/php/lib/php.ini

# ln -s /usr/local/php/bin/php /usr/bin

# vim /usr/local/apache2/conf/httpd.conf

在#AddType application/x-tar.tgz後追加:AddType application/x-httpd-php .php

在#LoadModule foo_module modules/mod_foo.so後追加:LoadModule php5_module  modules/libphp5.so

在DirectoryIndexindex.html後面追加index.php

7、rrdtool安裝配置

# yum install -y freetype-devel libart_lgpl-devel gd-devel cairo cairo-devel pango pango-devel

# tar zxvf rrdtool-1.4.8.tar.gz

# cd rrdtool-1.4.8

# ./configure --prefix=/usr/local/rrdtool

# ln -s /usr/local/rrdtool/bin/rrdtool /usr/bin 

8、net-snmp安裝配置

# tar zxvf net-snmp-5.7.2.1.tar.gz

# cd net-snmp-5.7.2.1 

# ./configure --prefix=/usr/local/net-snmp

# ln –s /usr/local/net-snmp/bin/* /usr/local/bin/

# cp /usr/local/src/net-snmp-5.7.2.1/EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf

# vim /usr/local/net-snmp/share/snmp/snmpd.conf

添加以下内容

view    all           included   .1

view    systemview    included   .1.3.6.1.2.1.2  

# /usr/local/net-snmp/sbin/snmpd

# lsof -i:161

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

snmpd   41107 root    8u  IPv4 616363      0t0  UDP localhost:snmp 

# snmpwalk -v 1 -c public localhost system

# vim /etc/rc.d/rc.local

追加以下内容,開機自啟動

/usr/local/net-snmp/sbin/snmpd

# 關于snmpd.conf的内容還可以引用以下配置

com2sec notConfigUser  default       test

group   notConfigGroup v1           notConfigUser 

group   notConfigGroup v2c           notConfigUser

view    all           included   .1         

view    systemview    included   .1.3.6.1.2.1.1 

view    systemview    included   .1.3.6.1.2.1.2 

view    systemview    included   .1.3.6.1.2.1.25.1.1

access  notConfigGroup ""      any       noauth    exact  all none none

com2sec local     localhost        test 

com2sec mynetwork 10.0.2.0/24      test

view mib2   included  .iso.org.dod.internet.mgmt.mib-2 fc 

9、cacti安裝配置

# tar zxvf cacti-0.8.8b.tar.gz

# mv cacti-0.8.8b /usr/local/cacti

DocumentRoot "/usr/local/apache2/htdocs" => DocumentRoot "/usr/local/cacti"

<Directory "/usr/local/apache2/htdocs"> => <Directory "/usr/local/cacti">

# vim /usr/local/cacti/include/config.php

$database_type = "mysql";

$database_default = "cacti";

$database_hostname = "localhost";

$database_username = "cactiuser";

$database_password = "cactipassword";

$database_port = "3306";

$database_ssl = false;

/* load up old style plugins here */   #enable plugins

$plugins = array();

//$plugins[] = 'thold';

# useradd cactiuser

# chown -R cactiuser.cactiuser ./rra ./log

# service httpd restart

# rrdtool fetch localhost_users_6.rrd AVERAGE|MAX#檢視rrd檔案是否有資料

10、被監控機安裝snmp服務

# yum install -y net-snmp*

# vim /etc/snmp/snmpd.conf

# service snmpd start

11、問題彙總

問題1:

Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/local/apache2/htdocs/cacti/include/global_constants.php on line 165

解決方法:

# vim /usr/local/php/lib/php.ini

修改

date.timezone = PRC

并取消注釋

問題2:

PHP Strict Standards:  Only variables should be passed by reference in /usr/local/nginx/html/cacti/lib/ping.php on line 382 

socket_select($r = array($this->socket), $w = NULL, $f = NULL, $to_sec, $to_usec){ 

=>修改為

$r = array($this->socket);

$w = NULL;

$f = NULL;

switch(socket_select($r, $w, $f, $to_sec, $to_usec)){ 

問題3:

WARNING: Cron is out of sync with the Poller Interval!  The Poller Interval is '300' seconds, with a maximum of a '300' second Cron, but 2135 seconds have passed since the last poll!

*/1     *       *       *       *       /usr/bin/php /usr/local/apache2/htdocs/cacti/poller.php  > /dev/null 2>&1