cacti监控

最近用cacti 实现了对几台服务器的监控,期间遇到不少问题,经过借鉴网友的方法都一个个的解决了,我把具体的配置过程发在这里,但愿对你们有所帮助。
 php

 


 
 安装用到的 源码包有 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/
选择全新安装,路径要数据绝对路径
 html


/usr/local/rrdtool-1.3.6/bin/rrdtool
/usr/local/php/bin/php
这两个路径通常cacti找不到,要手动填进去。
还有要注意的是,在Settings 选项里有个rrdtool的版本选项,必定要选择你当前使用的版本,要不没有图像
 mysql



如今进去应该是看不到图像的由于还要用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/ 看一下linux

 


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 两个都要加,要不没有数据
 

 nginx

相关文章
相关标签/搜索