快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

cacti 批量监控服务器以及其 PHP 运作环境

    本文主要介绍说明用于支持 Cacti 运作的 PHP+RRDtool 环境的详细配置方法。使其能集中式监控多台,不同平台类型的服务器。以及支持 SNMP 网络设备运作状态。
    前言

    Cacti 功能类似于我们所熟悉的 MRTG 。 MRTG 确实是非常好的老牌系统监控工具,但由于他历史实在很久了,使得许多功能以及配置等方面都比较落后。实现得比较费劲,管理起来很麻烦。比如我有几百个被监测点,分布在不同的机房,而且我需要将这些服务器和网络设备分类,这样的话我就要将这些被监测点放在不同的 mrtg 配置文件中,运行多个 crontab,而且还要自己写了一些 html 页面对其进行管理。

    Cacti 其实是一套 php 程序,一个 rrdtool 工具。它运用 snmpget 采集数据,使用 rrdtool 绘图。界面非常漂亮,它提供了强大的数据管理和用户管理功能,一张图是属于一个 host 的,每一个 host 又可以挂载到一个树状的结构上。

    用户的管理上,作为一个开源软件,它做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与 LDAP 结合进行用户的验证。 Cacti 还提供自己增加模板的功能,让你添加自己的 snmp_query 和 script 。功能相当强大!

    本文前半部分是教程,主要介绍了 Cacti 以及其 PHP 运行环境的安装配置。后半部分将实际举例如何使用 Cacti 监控诸如 Linux,Windows 。以及支持 SNMP 管理协议的路由器等网络设备。

    环境搭建

    Cacit 运行环境需要 PHP + Mysql + rrdtool 以及 snmp 工具的支持。

    下边是本次配置需要用到的软件。

    Catci:

    cacti-0.8.6j.tar.gz
    rrdtool-1.2.27.tar
    net-snmp-5.0.9-2.30E.15
    net-snmp-devel-5.0.9-2.30E.15
    net-snmp-libs-5.0.9-2.30E.15
    net-snmp-utils-5.0.9-2.30E.15
    PHP:

    php-5.2.6.tar.gz
    curl-7.15.0.tar.gz
    freetype-2.1.9.tar.gz
    gettext-0.16.1.tar.gz
    gd-2.0.35.tar.gz
    jpegsrc.v6b.tar.gz
    libart_lgpl-2.3.17.tar.gz
    libpng-1.2.18.tar.gz
    libxml2-2.6.32.tar.gz
    ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz
    zlib-1.2.3.tar.gz
    libxml2-2.6.32.tar.gz
    Apache:

    httpd-2.2.6.tar.gz

    Mysql:

    mysql-5.1.24-rc.tar.gz

    开始构建完整的 PHP 运行的环境,我们以全新安装的 RedHatAs4 updata4 操作系统环境为例。

    首先编译安装Apache httpd server

    # tar zxvf httpd-2.2.6.tar.gz
    # cd httpd-2.2.6
    # ./configure --prefix=/usr/local/apache26 --enable-module=so --with-mpm=worker --enable-module=rewrite
    # make && make install
    第二步安装 PHP+GD 等所需的支持插件

    编译安装libxml

    # tar zxvf libxml2-2.6.32.tar.gz
    # cd libxml2-2.6.32.tar.gz
    # ./configure --prefix=/usr/local/libxml2/
    # make && make install
    编译安装zlib

    # tar zxvf zlib-1.2.3.tar.gz
    # cd zlib-1.2.3
    #./configure --prefix=/usr/local/zlib2/
    # make && make install
    编译安装jpeg支持

    # tar -zxf jpegsrc.v6b.tar.gz
    # cd jpeg-6b/
    # ./configure --prefix=/usr/local/jpeg6
    # make
    # make install-lib
    # make install
    ( 该版本的 jpeg 在实际安装过程中,make install 的时候会出现好几个找不到目录,或目录不存在的 error 。只需按照提示人手创建缺失目录,然后再令其 make install 直到无任何错误提示且顺利完成为止。 )

    编译安装 libpng

    # tar zxvf libpng-1.2.18.tar.gz
    # cd libpng-1.2.18.tar.gz
    #cp scripts/makefile.gcmmx makefile
    #./configure --disable-shared --prefix=/usr/local/libpng2/
    # make && make install
    编译安装 freetype

    # tar zxvf freetype-2.1.9.tar.gz
    # cd freetype-2.1.9
    #./configure --disable-shared --prefix=/usr/local/freetype2/
    # make && make install
    编译安装 libart_lgpl

    # tar zxvf libart_lgpl-2.3.17.tar.gz
    # cd ibart_lgpl-2.3.17
    #./configure --disable-shared --prefix=/usr/local/libart/
    # make && make install
    编译安装 gettext

    # tar zxvf gettext-0.16.1.tar.gz
    # cd gettext-0.16.1
    # ./configure --prefix=/usr/local/gettext/
    # make && make install
    编译安装 gd 库 :

    # tar zxvf gd-2.0.35.tar.gz
    # cd gd-2.0.35
    # ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ --with-libart=/usr/local/libart/ --with-gettext=/usr/local/gettext/ --with-libxml=/usr/local/libxml2
    # make && make install
    编译安装 Curl 支持

    # tar zxvf curl-7.15.0.tar.gz
    # cd curl-7.15.0
    # ./configure --prefix=/usr/local/curl
    # make && make install
    编译安装 PHP

    # tar zxvf php-5.2.6.tar.gz
    # cd php-5.2.6
    # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache26/bin/apxs --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng2/ --with-gd=/usr/local/gd2/ --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
    # make && make install
    # cp php.ini-dist /usr/local/php/lib/php.ini ( 拷贝 PHP 配置文件至安装目录 )
    # vi /usr/local/apach26/conf/httpd.conf ( 修改 apache 配置文件并加载 PHP 支持 )
    要改的有如下几处

    一般都在 #AddType application/x-tar .tgz 下加一行 :
    #LoadModule php5_module modules/libphp5.so
     AddType application/x-httpd-php .php


    如果你搜索其它地方没有以下这行 :
    LoadModule php5_module modules/libphp5.so


    请把上面的 # 号去掉,还有找到
    DirectoryIndex index.html index.html.var
    在后面加 index.php 让它把 index.php 做为默认页

    保存 httpd.conf 文件 .
    启动 apache
    # /usr/local/apache2/bin/apachectl start
    如果没有出错 , 写一个测试页放到你网页目录下 . 访问就应该可以看到 php 的版本等信息了 !
    用 ZendOptimizer 加速 PHP

    #tar zxvf ZendOptimizer-2.5.3-linux-glibc21-i386.tar.gz
    #cd ZendOptimizer-2.5.3-linux-glibc21-i386
    #./install.sh

    安装的时候注意输入正确的安装 apache 的路径等内容 !
    安装完毕 , 再看看 phpinfo 页面的 zend 选项就发现了 !!

        安装MYSQL# groupadd mysql
     # useradd -g mysql mysql
     # tar zxvf mysql-5.1.24-rc.tar.gz
     # cd mysql-5.1.24-rc
     # ./configure --prefix=/usr/local/mysql
     --localstatedir=/data/mysql ( 指定数据文件目录 )
     --without-innodb --without-debug --with-extra-charsets=gbk
     --with-extra-charsets=all --enable-assembler --with-pthread
     --enable-thread-safe-client  --with-client-ldflags=-all-static
     # make && make install

     # cp ./support-files/mysql.server /etc/init.d/mysql ( 复制 Mysql 启动服务至系统 )
     # chmod 777 /etc/init.d/mysql    ( 赐予可执行权限 )
     # chown mysql:mysql /data/mysql  ( 设置数据文件目录属性 )


    设置数据文件目录属性这一步相当重要,许多朋友第一次使用 tar 包安装 Mysql 的时候就因该目录权限问题导致 Mysql 无法启动。相当头大 .

    # /usr/local/mysql/bin/mysql_install_db   ( 初始化数据库 )
     # service mysql start      ( 启动 Mysql)
     # /usr/local/mysql/bin/mysqladmin -u root -p password 'xxxxx' ( 设置管理员密码 xxx 默认值为空 )


    好了,至此 mysql 安装完毕 .

    这样构建 Cacit 运行的 PHP+Mysql 环境就基本上完成了。

    下边开始安装 Cacit 所需要的 rrdtools 图形工具以及 snmp 工具

    编译安装 rrdtools

    # tar zxvf rrdtool-1.2.27.tar
     # cd rrdtool-1.2.27
     # ./configure --prefix=/usr/local/rrdtool
     # make && make install


    如果 ./configure 时出现下面这个错误

    configure: error: Please fix the library issues listed above and try again.


    表明系统有功能缺失,需安装 libart_lgpl-devel.rpm 这个包

    如果还是提示听样的错误,有可能是找不到 FreeType

    把 /usr/local/freetype2/lib/pkgconfig 下的 .pc 文件拷贝到 /usr/lib/pkgconfig 下即可

    如果 make install 时出现 [tclrrd.o] 错误

    就安装 tcl-8.4.7-2.i386.rpm 以及 tcl-devel-8.4.7-2.i386.rpm 这 2 个包

    安装 net-snmp、snmpwalk 和 snmpget 命令
     # rpm -qa | grep net-snmp   ( 查看系统中有否已经装有所需的软件 )
     net-snmp-5.0.9-2.30E.15
     net-snmp-devel-5.0.9-2.30E.15
     net-snmp-libs-5.0.9-2.30E.15
     net-snmp-utils-5.0.9-2.30E.15


    没有或者缺少的话都需要逐一安装上。

    而且还很有可能会因 rpm 的依存关系无法顺利安装,须使用 - - nodeps 参数。

    以上所需的 rpm 安装包都能在 RedHatAs4 安装光盘上找到 .

  安装配置

    至此,Cacti 所需的运行环境都已经准备好了,接下来开始进行安装以及配置。

    稍微修改系统中 snmp 的配置

    # vi /etc/snmp/snmpd.conf


    com2secnotConfigUser default public
    改为:com2secnotConfigUser 127.0.0.1 public
    access  notConfigGroup ""  any   noauth    exact  systemview  none none
    改为:accessnotConfigGroup""anynoauthexact all none none

    #view all    included  .1         80
    将前面的 # 注释 去掉。
    保存退出 :wq
    重新启动 snmp 服务
    # service snmpd restart
    安装 / 配置 cacti

    # tar zxvf cacti-0.8.6j.tar.gz

    # mv cacti-0.8.6j /data/web_server/admin/cacti
    ( 把 cacit 剪切到自定的 web 目录下 )

    # chmod 777 – Rf /data/web_server/admin/cacti
    ( 设置目录权限 , 避免因权限问题而导致目录无法写入 )

    # cd /data/web_server/admin/cacti
    在Mysql中创建一个新的库,并导入cacti 目录中cacti.sql 并设置好该表的用户权限,然后编辑 cacti 的数据库配置文件。

    # vi /data/web_server/admin/cacti/include/config.php $database_type= “ mysql ” ;
     $database_default = “数据库名称” ;
     $database_hostname = “默认是 localhost ” ;
     $database_username = “用户名” ;
     $database_password = “密码” ;

    更改用户、密码等项与上面给出的对应保存退出

    # crontab – e (加入自动执行规则,每 5 分钟执行。) */5 * * * * /usr/local/php/bin/php /data/web_server/admin/cacti/poller.php  \
           > /dev/null 2>&1
    (其中 /usr/local/php/bin/php 这个为 php 的安装目录)


    保存退出:wq
    在 apache 上设置好 cacti 所在 web 目录

    打开浏览器 http://youhostname/cacti

    进入 cacti 的初始设置页面
    第一次默认登陆账号:admin 密码 admin
    登陆后它就会让你立即修改新密码

    说一下 cacti 设置页中各项“零件”的路径。

    当修改好新密码进入,第一个显示出的页面就是让你设置 rrdtool,snmp 等工具的路径。这是个很重要的环节,必须无误,要不然 cacti 将无法生成出统计图。

    snmpwalk Binary Path : /usr/bin/snmpwalk
     snmpget Binary Path: /usr/bin/snmpget
     RRDTool Binary Path: /usr/local/rrdtool/bin/rrdtool
     PHP Binary Path: /usr/local/php/bin/php
     Cacti Log File Path: /data/web_server/admin/cacti/log/cacti.log
     Cactid Poller File Path: /data/web_server/admin/cacti/poller.php

    默认的配置中会出现许多“ NotFound ”

    按照上边的路径把“ NotFound ”的项都重新填上。

    手动运行一次

    /usr/local/php/bin/php /data/web_server/admin/cacti/poller.php > /dev/null 2>&1

    你就能在顶上 graphs 中 localhost 里头看到本机的内存,CPU,登陆用户等的统计图 .

    图 1. Cacti 统计图


    但默认 Cacti 是没有创建网卡流量的监控图的。要我们自己来加。

    回到 console 菜单

    选择 Devices 监控设备。

    图 2. 设备监控


    图 3. 添加设备


    然后点击右上角的 Add 进行添加

    Description 设备名称 ( 可随意输入 )

    Hostname 设备地址 ( 如果是本机就填 127.0.0.1 )

    Host Template 设备的类型 ( 选择 ucd/net SNMP Host )

    然后其他按照默认即可,如下图

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论