最近用cacti 实现了对几台服务器的监控,期间遇到很多问题,通过借鉴网友的方法都一个个的解决了,我把具体的配置过程发在这里,希望对大家有所帮助。
安装用到的 源码包有 cacti-memcached-1.0.tar.gz mysql-cacti-templates-1.1.3.tar.gz php-5.2.10.tar.gz cgilib-0.5.tar.tar httpd-2.2.14.tar.gz rrdtool-1.3.6 cacti-nginx.tar.gz cacti-0.8.7e.tar.gz RPM 还需要一些 rpm包 我是用yum 安装的,如果你能连接公网的话最好找个快点的 yum源 用yum 把他们都装上(省心又省力) yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers pango-devel net-snmp-devel net-snmp net-snmp-utils net-snmp-libs 上面这些就差不多了,呵呵该升级的升级该安装的安装 pango-devel 这个包是装rrdtool 用的,现在先把他装上省的一会儿出错。 Mysql 好了首先是mysql,我用的是二进制包,所以直接解压就能用了 tar zxvf mysql-5.1.38-linux-x86_64.tar.gz mv mysql-5.1.38-linux-x86_64-icc-glibc23 /usr/local/mysql cd /usr/local/mysql groupadd mysql useradd -g mysql mysql scripts/mysql_install_db --user=mysql #初始化数据库 chown -R root . chown -R mysql data chgrp -R mysql . ./bin/mysqld_safe --user=mysql & #启动 ./bin/mysqladmin -u root password admin#给root用户设置密码 cp ./support-files/mysql.server /etc/init.d/mysqld # 使用ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql建立一个软连接,使得可以在命令行下直接使用mysql命令 # 使用ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin/mysqladmin建立一个软连接,使得可以在命令行下直接使用mysqladmin命令 # 使用ln -s /usr/local/mysql/bin/mysqldump /usr/local/bin/mysqldump建立一个软连接,使得可以在命令行下直接使用mysqldump命令 # 使用ln -s /usr/local/mysql/lib/libmysqlclient.so.16 /usr/local/lib/建立一个软连接,是其他软件可以找到编译和运行时的库 /usr/local/mysql/bin/mysql -u root -padmin 让我们进入数据库并给cacti建立一个专用的库cactidb 下面这段授权我从bleach的无废话弄过来的,他写的很好,就是缺东西太多了。 mysql> create database cactidb; mysql> grant all on cactidb.* to root; mysql> grant all on cactidb.* to root@localhost; mysql> grant all on cactidb.* to cactiuser; mysql> grant all on cactidb.* to cactiuser@localhost; mysql> set password for cactiuser@localhost=password('admin'); mysql> exit 好了,到这里mysql的设置就告一段落,下面该apache了 Apache tar zxvf httpd-2.2.14.tar.gz cd httpd-2.2.14 ./configure --prefix=/usr/local/apache --enable-so make make config apache安装没什么好说的,下面就该php了,在编译php的时候经常会报错,不过因为上面yum安装那些包就有针对php的所以这里我没遇到任何错误 如果您遇到了一些错误,请参考博客里的文章《安装php、rrdtool、phpmyadmin时遇到的问题及解决办法》 PHP cd .. tar zxvf php-5.2.10.tar.gz cd php-5.2.10 ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --enable-sockets --with-zlib-dir=/usr/include --with-gd make make install cp php.ini-dist /usr/local/php/php.ini vim /usr/local/apache/conf/httpd.conf #修改apache的配置文件加入下面几行 用来对php进行支持 <Directory /> #一些安全的设置 # Options FollowSymLinks Options None AllowOverride None Order deny,allow Deny from all </Directory> AddType application/x-tar .tgz AddType application/x-httpd-php .php AddType p_w_picpath/x-icon .ico DirectoryIndex index.php index.html index.html.var 保存退出 启动 apache /usr/local/apache/bin/apachectl start lsof -i:80 #查看apache是否已经启动 好了,让我们做个测试页面来验证apache是否已经支持php vim /usr/local/apache/htdocs/ceshi.php <?php phpinfo( ); ?> 在网址里输入http://localhost/ceshi.php 看看是否有php的相关信息 SNMP 如果有的话我们就进行下一步,配置 snmp 。因为我在上面把需要的几个包都已经装好了(net-snmp-devel net-snmp net-snmp-utils net-snmp-libs) 所以直接修改配置文件即可 vim /etc/snmp/snmpd.conf 找到下面几行并修改 #com2sec notConfigUser default public com2sec notConfigUser 127.0.0.1 public #default 改为127.0.0.1 (注意这里:如果你以后想往cacti里添加其他机器,只要在被监控的主机上把127.0.0.1改为cacti服务器的地址就行了) #access notConfigGroup "" any noauth exact systemview none none access notConfigGroup "" any noauth exact all none none #systemview 改为all #view all included .1 80 view all included .1 80 #去掉注释 好了保存退出后 service snmpd restart 让我们测试一下,看看snmp是否已经正常工作 ,下面的命令 应该会得到本机的ip地址信息 snmpwalk -c public -v 1 -m ALL 127.0.0.1 .1.3.6.1.2.1.4.20 如果你添加了远程主机就用下面的命令测试 snmpwalk -c public -v 1 -m ALL 192.168.1.118 .1.3.6.1.2.1.4.20 ok如果成功,咱们就进入下一步,安装rrdtool 这个东西以前装他的时候费了好多功夫,后来他装上后才发现一切竟然如此简单... rrdtool tar zxvf rrdtool-1.3.6.tar.tar cd rrdtool-1.3.6 ./configure 可能会报下面这个错误 configure: error: Please fix the library issues listed above and try again. 解决方法 ls /usr/lib/pkgconfig/freetype2.pc #查看freetype是否已装好,如果装好就直接装pango-devel这个包,我也不知道为什么,反正是解决问题了。 /usr/lib/pkgconfig/freetype2.pc yum install pango-devel 现在再./configure make make install 应该就不会报错了 Cacti 最后我们来安装和配置 cacti useradd cactiuser -s /sbin/nologin tar zxvf cacti-0.8.7e.tar.gz mv cacti-0.8.7e /usr/local/apache/htdocs/cacti cd /usr/local/apache/htdocs/cacti chown -R cactiuser rra/ log/ cd scripts chown cactiuser:users * 这几步权限设置很重要,改完权限后修改配置文件 vim /usr/local/apache/htdocs/cacti/include/config.php $database_type = “mysql”; $database_default = “cactidb”; $database_hostname = “localhost”; $database_username = “cactiuser”; $database_password = “admin”; 只需要修改上面几行即可。 对了,不要忘记把cacti目录下的cacti.sql 导入cactidb数据库 /usr/local/mysql/bin/mysql -u root -padmin cactidb < cacti.sql 好了,让我们测试一下吧 http://192.168.1.163/cacti/ 选择全新安装,路径要数据绝对路径 /usr/local/rrdtool-1.3.6/bin/rrdtool /usr/local/php/bin/php 这两个路径一般cacti找不到,要手动填进去。 还有要注意的是,在Settings 选项里有个rrdtool的版本选项,一定要选择你当前使用的版本,要不没有图像 现在进去应该是看不到图像的因为还要用php去执行脚本 现在以 cactiuser用户身份添加一条计划任务 ,最好让他每分钟执行一次 crontab -u cactiuser -e */1 * * * * /usr/local/php/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1 先手动执行一下,看rrd目录是否生成图像 su cactiuser /usr/local/php/bin/php /usr/local/apache/htdocs/cacti/poller.php ls /usr/local/apache/htdocs/cacti/rra/ 如果有文件生成表示执行成功了,再用浏览器打开http://192.168.1.163/cacti/ 看一下
OK,到这里安装就结束了。 Mysql 监控 至于 cacti的插件,我用了mysql-cacti-templates 来监控mysql 可以参考这篇文章http://xok.la/2009/05/cacti_mysql_monitor.html 需要注意的是数据库权限 ,要在被监控的mysql数据库里面给cacti授权 mysql> grant process,super on *.* to 'cactiuser'@'192.168.1.163' identified by 'admin'; mysql> grant all privileges on cacti.* to cactiuser@"192.168.1.163" identified by "admin"; Nginx 监控 用的是 cacti-nginx 这个插件 可以参考这篇文章 http://xok.la/2009/05/cacti_nginx_monitor.html 不过这篇文章有一点没有提 那就是添加模板最后一步 在 URL of nginx stub status这个里面一定要加上 完整URL,如http://192.168.1.163/NginxStatus client 和socket 两个都要加,要不没有数据