lujiguo115 发表于 2015-11-22 11:46:39

性能监控程序cacti的安装(mysql+apache+php)

    cacti是实时显示服务器的状态, Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
  它通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。
  用户可以通过自己开发cacti的php页面自己开发对设备的监控代码
  
  nagios是对服务器的状态进行监控, 当达到设定的阈值后出发报警,
  ZABBIX也是一款开源的性能监控程序
  
  cacti侧重实时展示服务器的状态, 而nagios则侧重监控服务器状态。
  如果在运行过程当中提示找不到某个类库, 如果可以通过find命令找到这个库,
  则可以编译 /etc/ld.so.conf文件, 将这个库所在的目录添加到该文件当中, 然后运行ldconfig命令让其生效。
  还可以将将这个库所在的目录添加到LD_LIBRARY_PATH环境变量当中
  
  
  cacti有可能需要用到libxml jpeg6 freetype zlib libpng fontconfig gd等公共库, 建议最好都安装上
  
  
  
  
  1. 安装mysql
  有些说法是只需要装 mysql-standard就可以了。
  a. 创建mysql group和mysql用户和权限目录(本步骤为可选)
  groupadd mysql
  useradd -g mysql mysql
  #修改mysql目录权限
  hown -R root /usr/local/mysql
  chgrp -R mysql /usr/local/mysql
  chown -R mysql /usr/local/mysql/data
  b. 安装mysql服务器
  rpm -ivhMySQL-server-5.0.45-0.i386.rpm
  c. 安装mysql客户端
  rpm -ivh MySQL-client-5.0.45-0.i386.rpm   
  d. 初始化mysql数据库(一般不需要执行这一步骤)
  /path/to/script/mysql_install_db --user=mysql&
  e. 启动mysql数据库
  /usr/bin/safe_mysqld --user=mysql&或 /etc/init.d/mysql start
  如出现 Starting mysqld daemon with databases from /usr/local/mysql/data 代表正常启动mysql服务了.
  f. 安装 MySQL-devel
  rpm -ivh MySQL-devel-5.0.45-0.i386.rpm
  如果不安装MySQL-devel的话, php生成编译脚本时有可能报错说找不到mysql头文件
  g. 安装MySQL-shared
  rpm -ivhMySQL-shared-5.5.8-1.rhel5.i386.rpm
  如果不安装MySQL-shared的话, 编译cacti-spine 有可能报 libmysqlclient_r.so找不到的错误
  
  // 源码安装, 可以参考 http://wenku.baidu.com/view/837a27fc700abb68a982fb7c.html
  ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql
  #prefix=/usr/local/mysql mysql安装的目标目录
  #sysconfdir=/etc my.ini配置文件的路径
  #localstatedir=/var/lib/mysql 数据库存放的路径
  
  
  
  
  2. 安装apahce
  a. 新建apche安装目录
  mkdir -p /usr/local/apache2
  b. 生成makefile文件
  ./configure --prefix=/usr/local/apache2--enable-module=so [--enable-rewrite] 或
  ./configure --prefix=/usr/local/apache2--enable-module=so--enable-module=alias--enable-module=all--enable-shared=max --enable-module=vhost_alias --enable-shared=vhost_alias--enable-deflate --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache --enable-rewrite --enable-static-support
  c. make && make install
  d. 启动apache
  当apache没有找到默认的启动页面时, 使用/etc/httpd/conf.d/welcome.conf中指定的默认页面, 有时是/var/www/error/noindex.html
  启动脚本 /usr/local/apache2/bin/apachectl start|stop|restart,
  配置脚本 /usr/local/apache2/conf/httpd.conf
  
  
  3. 安装Net-SNMP
  ./configure --prefix=/usr/local/net-snmp--enable-developer; make; make install
  // 运行snmpget -V, snmpwalk -V命令测试是否安装成功
  
  
  4. 安装php
  a. 生成编译脚本
  ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs--with-config-file-path=/usr/local/lib --enable-sockets--with-snmp[=DIR]--with-mysql[=/var/lib/mysql/]或
  ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-mysqli --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --enable-gd-native-ttf--enable-gd-jis-conv --enable-xml --enable-mbstring --enable-sockets --enable-soap [--with-ttf]
  b. 编译与安装
  make; make install
  c. 拷贝配置文件
  cp php.ini-dist /usr/local/php/lib/php.ini
  d. 测试安装是否正确
  安装完php后, 在/usr/local/apache2/bin/htdocs目录下创建index.php文件, 内容如下:
  <?php
  phpinfo();
  ?>
  然后启动apche, 打开http://10.46.142.56/index.php, 检查php是否正常
  注意:
  安装php的时候, 有可能提示找不到libmysqlclient.so文件, 这时可以尝试通过源码安装mysql-5.0.20a.tar.gz(./configue; make; make install)
  php的session存在哪里?
  php的配置文件通常位为 php.ini
  因为cacti-0.8.7不少接口在php5.3环境当中已经不支持, 运行当中可能存在问题,建议最好安装php5.2版本
  
  
  5. 配置apache, 让其支持php
  # vi /usr/local/apache2/conf/httpd.conf
  找到AddType application/x-gzip .gz .tgz, 添加
  AddType application/x-httpd-php .php
  AddType application/x-httpd-php-source .phps
  
  找到DirectoryIndex index.html, 修改成
  DirectoryIndex index.html index.phpindex.html.var
  
  
  6. 安装rrdtool
  ./configure –prefix=/usr/local/rrdtool; make; make install;
  装完后,执行rrdtool看是否正确,如果执行不成功,提示命令不存在,则建立rrdtool到执行目录的符号连接或者直接拷贝
  cp /usr/local/rrdtool/bin/* /usr/local/bin
  ln –s /usr/local/rrdtool/bin/* /usr/local/bin/
  
  
  7. spine(rrdtoold)
  ./configure --with-snmp=/usr/local/net-snmp/   --with-mysql
  运行spine命令检查安装是否成功
  
  
  8. 安装cacti
  a. 拷贝cacti到apache的安装目录
  tar -zxvf cacti-0.8.7b.tar.gz
  cd cacti-0.8.7b
  mv cacti-0.8.7b /usr/local/apache2/htdocs/cacti
  cd /usr/local/apache2/htdocs/cacti/
  b. 增加cactiuser用户以及授权
  useradd cactiuser
  chown -R cactiuser rra
  chgrp -R cactiuser /usr/local/apache2/htdocs/cacti/
  c. 配置数据库以及执行初始化脚本
  shell>mysql –u root –p
  mysql>create database cactidb; (新建一个数据库)
  mysql>grant all privileges oncactidb.* to cactiuser@localhost identified by "cactipw";(新增一个数据库用户并授权)
  mysql>quit;
  shell>mysql -u cactiuser -pcactipw (以cactiuser用户登录)
  mysql>use cactidb; (使用cactidb数据库)
  mysql>source cacti.sql(执行数据库初始化脚本)
  d. 增加性能采集的定时任务
  crontab -ucactiuser -e
  */5 * * * * /usr/local/php/bin/php /usr/local/apache2/htdocs/cacti/poller.php > /dev/null 2>&1
  
  忘记cacti admin密码
  进入mysql
  mysql> show databases;
  mysql> use cacti;
  mysql> show tables;
  mysql> update user_auth set password=md5("newpassword") where id='1';
  
  
  9. 安装cactid
  shell>tar -zxvf cacti-cactid-0.8.6g.tar.gz
  shell>cd cacti-cactid-0.8.6g
  shell>./configure --with-mysql=/usr/local/mysql
  shell>make; make install;
  shell>cp cactid cactid.conf /usr/local/cactid/
  
  
  
  
  
  php
  用户名/密码输入正确、数据库的user_log表中正确记录了登录信息,并且result为1(验证成功),
  但是页面始终停留在index.php,不能进入. 可能存在以下原因:
  1. 因为php的session异常。
  经检查发现,在这台机器上,由于另一服务的日志突然暴增,导致/分区的磁盘容量用尽,session无地方可写。
  删除异常的日志文件后,问题得到了解决。
  2. 还有可能是php编译选项不够全, 可以参照如下编译选项
  ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-mysqli --with-gd --with-freetype-dir --with-jpeg-dir --with-png-dir--with-zlib-dir --enable-gd-native-ttf --with-ttf --enable-gd-jis-conv--enable-xml --enable-mbstring --enable-sockets --enable-soap
  3. /var/lib/php/session 对当前运行apache的账户nobody无写权限。
  chmod 777 session 后。问题消失。
  
  
  手工编译安装php后,如果一切顺利解决了的话,重启apache时,libphp5.so: cannot restore segment prot after reloc: Permission denied 错误:
  有可能是因为开了seliunx,将其关闭即, 或者用chcon命令修改libphp5.so文件的标签。
  如果 没有开selinux 的话,找到libphp5.so,然后chmod 777 libphp5.so
  chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so
  <chcon是selinux有关的命令,更改文件的标签。ls命令在命令后加个 -Z 或者加 –context 查看标签>
  
  
  关闭SELINUX的方法:
  方法1.
  vi /etc/selinux/config 将SELINUX=enforcing 改成SELINUX=disabled 需要重启
  这个方法可能会对服务器带来风险。
  方法2. 开启SELINUX的方法:
  shell> setenforce 0 | 1
  0 关闭, 1 开启selinux
  
  
  
  
  
  
  
  
页: [1]
查看完整版本: 性能监控程序cacti的安装(mysql+apache+php)