Chinaunix首页 | 论坛 | 博客
  • 博客访问: 955317
  • 博文数量: 245
  • 博客积分: 11429
  • 博客等级: 上将
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-15 00:16
文章存档

2011年(56)

2010年(174)

2009年(15)

分类: LINUX

2010-11-17 13:32:47

网络监控之Cacti spine 的安装

                   作者:pkfeiyang   bloghttp://pkfeiyang.cublog.cn

 

一:综述

1.描述

如今换联网发展迅速,服务越来越多,随之你的服务器变增加了,你每天必做的事情就是不断的登录到服务器去查看你的服务器信息,担心负载是不是很高,内存是不是满了等等。

这是你会感到很乏味,那么监控将是你的首选,如今比较流行的监控有,基于服务的nagios,网络的有cactiganglaunnocmrtg这些都是你的首选,然后你每天喝着茶水,就看着报纸了。

Cacti就是rrdtool的一个forefront,它内置了快速的获数据取工具、优秀的绘图模板以及许多设计精良的数据获取脚本,从而可以 通过结合rrdtool强大的数据抓取、数据存储和绘图功能,轻松实现主机负载、网络流量等信息的走势图的绘制。目前其最新的软件版本是0.8.7g

2.绘图器的选择

   关于cacti的绘图器有两种选择,一种是cmd.phpspinespine是一个基于C语言的,非常快速的轮询引擎。使用 spine 使用 cmd.php  效率高,特别是在当 cmd.php 执行接近或超过 300 秒的时候。cmd.php采集存在大的延迟,从添加设备到upspine通常不到一分钟,而cmd.php等的时间较长,超过10分钟。当设备down 2分钟之内spine可以发出alert,而cmd.php可能需要10分钟以上。

3.关于net-snmp工作原理

    NET-SNMP是一種

命令行应用程序

从支持SNMP的设备获得数据.支持独立请求 (snmpget, snmpgetnext), 与重复请求 (snmpwalk, snmptable, snmpdelta).

对支持SNMP的设备配置属性.(snmpset).

从支持SNMP的设备获取特定的信息.(snmpdf, snmpnetstat, snmpstatus).

MIB OIDs的两种表现形式(数字及文字)相互转换.并显示MIB的内容与结构(snmptranslate).

一个图形化的MIB浏览器(tkmib).基于Tk/perl.

一个接收SNMP提示消息(SNMP traps)的守护程序.(snmptrapd).可以将选定的SNMP消息记录到系统日志(syslog),NT 事件日志(NT Event Log),文本文件中.或是转发到其它的SNMP管理程序,也可以传给外部的应用程序.

一个回应SNMP查询的客户端.(snmpd).它集成了大量SNMP的模块.并可通过动态链接库,外部脚本与命令,多路SNMP技术(SMUX),以及可扩客户端协议(AgentX)进行扩展.

一个用来开发SNMP应用程序的程序库.支持C perl APIs.

二:cacti 前期准备

1.       Cacti 工作流程结构

2.       软件下载

  A 系统

  Centos5.5 1386

B 安装库文件

 我的环境都是yum的,如果你想编译安装的话,自行安装lamp即可。

    yum -y install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison utoconf automake bzip2-devel ncurses-devel zlib-devel ibjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel  gettext-devel  pam-devel kernel gd gd-devel LibXML2

LibMcrypt

Cacti 相关软件列表

cacti-spine-0.8.7g.tar.gz

 

ttfonts-zh_CN-2.14-6.noarch.rpm

rrdtool-1.2.13.tar.gz

net-snmp-5.3.1 

(我是yum的)

cacti 0.8.7b   (英文版,这里可以不下载,字体根据自己喜好来设置吧)

PHP 版本 5.1.6

Apache/2.2.3

中文汉化 cactiez

cacti-0.8.7b-cn-utf8.tar.gz  

http://blogimg.chinaunix.net/blog/upfile2/080822131849.gz

cacti-plugin-0.8.7b-PA-v2.1-cn-utf8.diff.gz http://blogimg.chinaunix.net/blog/upfile2/080822131839.gz

补充:因为cacti 需要http 提供服务,当你的服务器运行多种服务时,注意端口的占用。

当无法修改apache的端口时,可以用stenforce 0 关闭selinux

三:安装

1 . 安装net-snmp

rpm -qa | grep net-snmp

net-snmp-perl-5.3.2.2-9.el5_5.1

net-snmp-libs-5.3.2.2-9.el5_5.1

net-snmp-5.3.2.2-9.el5_5.1

net-snmp-devel-5.3.2.2-9.el5_5.1

net-snmp-utils-5.3.2.2-9.el5_5.1

2.创建cacti数据库

mysql –u root –p

mysql>create database cacti default character set utf8;

mysql>grant all on cacti.* to cacti@localhost IDENTIFIED BY 'cacti';

mysql>flush privileges;

mysql> quit

3.       安装cacti

cacti-0.8.7b-cn-utf8.tar.gz

tar –zxvf cacti-0.8.7b-cn-utf8.tar.gz

将解压的目录放到你http的目录

mv cacti-0.8.7b-cn-utf8 /var/www/html/cacti

cd /var/www/html/cacti

修改连接数据库文件

vi include/config.php

$database_type = "mysql";

$database_default = "cacti"; #你建的数据库

$database_hostname = "localhost"; #主机一般不要改

$database_username = "cacti";#cacti 数据库用户

$database_password = "cacti";#密码

$database_port = "3306";# 端口一般不要修改

导入数据信息

pwd

/var/www/html/cacti

mysql -u cacti -p cacti < cacti.sql

4.       安装cactispine 绘图器

tar –xzf cacti-spine-0.8.7g.tar.gz

cd cacti-spine-0.8.7g

打补丁:

wget

patch -p1 -N < unified_issues.patch

执行以下步骤安装

cacti]# aclocal

cacti]# libtoolize --force

Using `AC_PROG_RANLIB' is rendered obsolete by `AC_PROG_LIBTOOL'

Putting files in AC_CONFIG_AUX_DIR, `config'.

cacti]#  autoconf

cacti]#  autoheader

cacti]# automake

cacti]#./configure

cacti]#  ./configure --prefix=/home/cacti/apps/spine

cacti]# make

cacti]# make install

3、安装后,要对配置文件进行修改

spine]#cp ./etc/spine.conf.dist ./spine.conf 建立spine的配置文件

cacti]#  vim /home/cacti/apps/spine/etc/spine.conf

DB_Host         localhost

DB_Database     cacti

DB_User         cacti

DB_Pass         cacti

DB_Port         3306

spine.conf 拷贝到/etc/

/usr/local/spine/bin/spine  #默认读取/etc/spine.conf 文件

SPINE: Using spine config file [/etc/spine.conf]

SPINE: Version 0.8.7g starting

SPINE: Time: 0.3692 s, Threads: 1, Hosts: 2 [root@mycentos52

添加自动化采集任务

*/1 * * * * /usr/bin/php /var/www/html/cacti/poller.php  > /dev/null 2>&1

如果不能出图,多手动运行几次

显示上边为正确,错误会提示你

4         安装rrdtool 支持中文

Yum 安装也可以


#rpm -ivh rrdtool-1.3.4-2.fc9.i386.rpm #
但我没试过呢

因为很多cacti 支持中文,但rrdtool绘图生成的图表里边的设备名不支持中文

如:

这种情况。

此时其他的页面都是中文的,你在怎么修改页面、系统支持中文这里也不会改变,持有让rrdtool支持中文才可以。

首先查看系统支持的字符集有哪些

locale –a

xh_ZA.utf8

yi_US

yi_US.cp1255

yi_US.utf8

zh_CN

zh_CN.gb18030

zh_CN.gb2312

zh_CN.gbk

zh_CN.utf8

zh_HK

zh_HK.big5hkscs

zh_HK.utf8

zh_SG

zh_SG.gb2312

zh_SG.gbk

zh_SG.utf8

zh_TW

zh_TW.big5

zh_TW.euctw

zh_TW.utf8

zu_ZA

zu_ZA.iso88591

zu_ZA.utf8

红色部分说明支持中文,这个很重要,否则rrdtool 不能生成中文字符

安装yum install ruby        //安装ruby的语言支持环境,编译rrdtool时需要;不安装,编译也可以通过,最好是安装进去

安装字符集

下载地址:

rpm –ivh ttfonts-zh_CN-2.14-6.noarch.rpm

安装完成后会在/usr/share/fonts/ 下面生成一个zh_CN的目录

里边的文件有:

fonts.dir  fonts.scale  gbsn00lp.ttf  gkai00mp.ttf  zysong.ttf

红色部分是支持中文的字符集,自己可以找喜欢的设置

修改 i18n支持中文字符

sed -i -e 's/^LANG=.*/LANG="zh_CN.GB18030"/'   /etc/sysconfig/i18n

下面修改rrdtool 源码文件,让它编译的时候支持中文字符

vi /opt/cacti/rrdtool-1.2.13/src/rrd_graph.c (此为源码包的路径)

删除rrd_graph.c文件中以下两行:

setlocale(LC_TIME,"");

setlocale(LC_CTYPE,"");

在原来setlocale(LC_CTYPE,"")的位置增加以下内容

setlocale(LC_ALL,"zh_CN.gb2312");

补充1.有些人喜欢注释掉,其实这又是会出错,编译不能进行,最好删掉

      2.有很多人将setlocale(LC_ALL,"zh_CN.gb2312"); 换成zh_CN.UTF-8,也是可以的,这就需要你系统支持那些字符了,第一种不行可以使用第二种。

编译安装rrdtool

./configure –prefix=/usr/local/rrdtool

Make && make install

安装完成(需要cacti 安装完后才能添加路径)

:修改Cactirrdtool设置,使其支持中文设备名和图片中输出中文

1)登陆Cacti,在主页的左边点击setting,选择paths (console>>setting>>paths)

RRDTool Binary Path修改为:/usr/local/rrdtool/bin/rrdtool

还需要修改rrdtool的字体设置。

2)登陆Cacti,在主页的左边点击setting,选择paths (console>>setting>>paths)

RRDTool Default Font Path修改为:/usr/share/fonts/zh_CN/TrueType/gkai00mp.ttf

点击save

 

5        收尾工作

1.       修改apache 默认支持关闭gb2312

如:

#AddDefaultCharset UTF-8

AddDefaultCharset  GB2312

2.       设置防火墙,开放80

Iptables –A INPUT -m state --state NEW -m tcp -p tcp --dport 80 –j ACCEPT

 访问:

 3  .进行安装

  1第一次登陆默认用户名和密码都是admin

  2路径设置



3.常规设置


 

这两个地方很重要,一定要写对,否则会报告错误。

4轮询器的设置

记住选择spine

来张效果图

6 错误收集

错误一:

11/15/2010 07:34:42 PM - SPINE: Poller[0] FATAL: Unable to read configuration file! (Spine init)

11/15/2010 07:44:43 PM - SPINE: Poller[0] FATAL: MySQL Error:'1146', Message:'Table 'cacti.settings' doesn't exist' (Spine init)

解决:

检查你的spine 配置文件,或重新安装spine

错误二:编辑spine 时错误

checking if UCD-SNMP needs crypto support... no

checking if Net-SNMP needs crypto support... yes

checking for snmp_timeout in -lnetsnmp... no

Cannot find NET-SNMP libraries(snmp)... checking UCD-SNMP

checking for snmp_timeout in -lsnmp... no

configure: error: Cannot find UCD-SNMP libraries(snmp)

解决:

configure 加上--with-snmp=/usr/local/net-snmp/ 你的net-snmp路径

或不加或加上这个参数--with-static=/usr/local/lib

./configure --with-static=/usr/local/lib

错误三:

checking for mysql_init in -lmysqlclient_r... no

configure: error: MySQL libraries not found

MySQL-client-standard-4.1.21-0.rhel4.i386()

MySQL-devel-standard-4.1.21-0.rhel4.i386 ()

MySQL-server-standard-4.1.21-0.rhel4.i386()

MySQL-shared-standard-4.1.21-0.rhel4.i386()

httpd-2.0.50.tar()

php-5.0.0.tar()

libxml2-2.6.11.tar()

phpMyAdmin-2.6.1-rc1.tar()

#

解决:

和错误二同样

错误四:

 /usr/local/spine/spine

SPINE: Version 0.8.7b starting

11/15/2010 05:19:46 PM - SPINE: Poller[0] ERROR: SNMP Library Version Mismatch (5.3.1 vs 5.3.2.2) (Spine parent)

 

11/15/2010 05:00:01 PM - SPINE: Poller[0] ERROR: SNMP Library Version Mismatch (5.3.1 vs 5.3.2.2) (Spine parent) 

spine net-snmp的版本有问题

解决

先卸载以前安装的net-snmtp spine

 先安装net-snmp 然后再编译安装spine 此时你可以指定你的net-snmp 也可以不指定,都可以的。

错误五

11/15/2010 05:00:01 PM - POLLER: Poller[0] WARNING: Cron is out of sync with the Poller Interval! The Poller Interval is '60' seconds, with a maximum of a '300' second Cron, but 300 seconds have passed since the last poll! 

11/15/2010 04:56:00 PM - SYSTEM STATS: Time:59.2263 Method:spine Processes:1 Threads:1 Hosts:2 HostsPerProcess:2 DataSources:21 RRDsProcessed:0 

11/15/2010 04:56:00 PM - POLLER: Poller[0] Maximum runtime of 58 seconds exceeded. Exiting. 

解决:

因为cron的时间与poller.php的时间差别有关

一般poller.php的跟新时间为60s,所以cron里边也要设置成每分钟跟新一次

如:

*/1 * * * * /usr/bin/php /var/www/html/cacti/poller.php  > /dev/null 2>&1

错误六

##########

11/16/2010 01:10:03 PM - SYSTEM STATS: Time:1.1319 Method:spine Processes:1 Threads:1 Hosts:2 HostsPerProcess:2 DataSources:8 RRDsProcessed:7

11/16/2010 01:10:02 PM - SPINE: Poller[0] Host[4] ERROR: Empty result [127.0.0.1]: '/usr/bin/php -q /var/www/html/cacti/plugins/syslog/syslog_counter.php'

11/16/2010 01:09:11 PM - SYSTEM STATS: Time:1.1314 Method:spine Processes:1 Threads:1 Hosts:2 HostsPerProcess:2 DataSources:8 RRDsProcessed:7

11/16/2010 01:09:10 PM - SPINE: Poller[0] Host[4] ERROR: Empty result [127.0.0.1]: '/usr/bin/php -q /var/www/html/cacti/plugins/syslog/syslog_counter.php'

解决:

暂时的

delete from settings where name = 'syslog_last_incoming' ;

 

 

阅读(5967) | 评论(1) | 转发(0) |
0

上一篇: Squid 优化简谈 

下一篇:nginx的HTTP400

给主人留下些什么吧!~~

chinaunix网友2010-11-18 17:24:43

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com