cacti 0.8.8a 的安装

ubuntu 13.04 server
cacti: 0.8.8a+dfsg-4
cacti-spine: 0.8.8a-1

由于0.8.8a版本直接集成了PIA,免去了以前安装插件时要先安装PIA的麻烦。这里直接使用这个版本,顺便解决一些问题:如中文显示、邮件提醒、获取不了图的情况。

cacti服务器端
1.安装
cacti 需要apache2、mysql-server的支持,那就快速安装一个lamp服务器,接着是安装cacti、cacti的轮询服务、snmpd服务器、snmp查询工具。
sudo apt-get install tasksel
sudo tasksel install lamp-server
sudo apt-get install cacti cacti-spine snmpd snmp

2.安装后的配置
由于debian系列的cacti默认安装的路径是 /usr/share/cacti,在plugins目录中有个提示,为了管理方便,建议把一些目录移动到 /usr/local/share/cacti,下面是操作过程:
* 创建/usr/local/share/cacti/plugins目录:
mkdir /usr/local/share/cacti/plugins
* 移动/usr/share/cacti/site/plugins到/usr/local/share/cacti/plugins
mv /usr/share/cacti/site/plugins/* /usr/local/share/cacti/plugins/
* 删除/usr/share/cacti/site/plugins目录;
rmdir /usr/share/cacti/site/plugins
* 创建链接
ln -s /usr/local/share/cacti/plugins /usr/share/cacti/site/plugins
ln -s /usr/share/cacti/site/include /usr/local/share/cacti/include
ln -s /usr/share/cacti/site/lib /usr/local/share/cacti/lib

3.常用插件配置
首先停用、卸载cacti自带的thold,接着去
上传 settings ,thold 。有了settings插件,在settings中才会出现mail/dns选项。有了thold插件,才会有Thresholds选项。其中需要设置阀值的上下限、触发时间(每隔多少分钟、小时)、再次提醒的时间间隔(默认为每隔1小时)等。

这个过程如果console的settings出错:是因为有个define_syslog_variables()函数在php5.4中已不使用,注释掉即可找到 /usr/local/share/cacti/plugins/thold/includes/settings.php,在132行。
// define_syslog_variables();

4.邮件设置
settings里面的mail/dns只是用来测试发送的email帐号是否能发送邮件。其中的test email不是用来接收邮件的。
mail/dns:这里最好使用SMTP来发送邮件。
Thresholds:在Emailing Options中可以设置宕机提醒的email,在devices中可以设置是否启用宕机提醒。
记住:在 User Management 中修改admin的email address,因为默认会发邮件给admin。

5.显示中文
这里不是汉化界面,而是能显示中文字。

检查数据库、数据表的编码是否为utf8,如果不是就先把整个库导成一个sql文件,并把CHARSET=latin1 替换为 CHARSET=utf8后重新导回去。这样就可以显示中文标题、发送中文邮件。

RRDTool 1.4以上的版本支持中文显示的。这里可以配置一下字体:

settings -> paths -> RRDTool Default Font
中文字体:
sudo apt-get install ttf-wqy-microhei
字体路径在 /usr/share/fonts/truetype/wqy/wqy-microhei.ttc
被监控端
1.安装snmpd
sudo apt-get install snmpd

安装过程会建议安装snmp-mibs-downloader,不过可以不安装。
因为授权的问题,ubuntu默认的snmp包没有 mibs 库,所以只能以数字方式显示,如果安装了snmp-mibs-downloader就可以以文字显示,如:
snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4
iso.3.6.1.4.1.2021.4.1.0 = INTEGER: 0
iso.3.6.1.4.1.2021.4.2.0 = STRING: "swap"
iso.3.6.1.4.1.2021.4.3.0 = INTEGER: 979928
iso.3.6.1.4.1.2021.4.4.0 = INTEGER: 974568
iso.3.6.1.4.1.2021.4.5.0 = INTEGER: 507524
iso.3.6.1.4.1.2021.4.6.0 = INTEGER: 90052
iso.3.6.1.4.1.2021.4.11.0 = INTEGER: 1064620
iso.3.6.1.4.1.2021.4.12.0 = INTEGER: 16000
iso.3.6.1.4.1.2021.4.13.0 = INTEGER: 0
iso.3.6.1.4.1.2021.4.14.0 = INTEGER: 2064
iso.3.6.1.4.1.2021.4.15.0 = INTEGER: 245644
iso.3.6.1.4.1.2021.4.100.0 = INTEGER: 0
iso.3.6.1.4.1.2021.4.101.0 = ""

snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 979928 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 979928 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 507516 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 30044 kB
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 1009972 kB
UCD-SNMP-MIB::memMinimumSwap.0 = INTEGER: 16000 kB
UCD-SNMP-MIB::memShared.0 = INTEGER: 0 kB
UCD-SNMP-MIB::memBuffer.0 = INTEGER: 26236 kB
UCD-SNMP-MIB::memCached.0 = INTEGER: 395256 kB
UCD-SNMP-MIB::memSwapError.0 = INTEGER: noError(0)
UCD-SNMP-MIB::memSwapErrorMsg.0 = STRING:

虽然snmd.conf里面说要加载MIBs需要注释掉mibs:这一行,但是不注释也是可以的。安装后需要重启:
service snmpd restart

2.配置snmpd
编辑/etc/snmp/snmpd.conf
把agentAddress udp:127.0.0.1:161
改成agentAddress udp:161

3.模板说明
模板说明:
http://docs.cacti.net/templates
主机模板:监控本地linux主机用local_linux ,远程电脑主机用ucdnet_snmp_host,一般交换机用snmp_enabled_host,其他4种从字面上比较好理解。

图形模板:
cacti监控远端Linux服务器时,使用的是ucd/net 模板,例如ucd/net - CPU Usage是监控远端cpu的,还有ucd/net - Load Average 、ucd/net - Memory Usage都是远端的服务器监控。
Unix- Load Average还有其他以Unix开头的是监控cacti所在服务器的状态,因为Unix开头的是执行cacti服务器本地的perl脚本获得的值。这些可以通过导出的数据模板(data template)的xml文件的input_string项查看到。
SNMP一般用是WINDOWS的,因为微软的SNMP库里没有相应的信息,所以当有些值取不到的时候需要安装NET-SNMP来丰富其库。

4.常见故障
4.1监控不了远程机器的CPU Usage等
使用ucd/net模板无法监控远程的主机,是因为
/etc/snmp/snmpd.conf 默认情况下只允许监控下面两项:
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1

改成:
view systemonly included .1.3.6.1.2.1
view systemonly included .1.3.6.1.4.1.2021

就可以了。如果这里的OID不知道怎么写,上网去查就可以了。
http://www.php-oa.com/2010/02/01/linux-snmp%E5%B8%B8%E7%94%A8oid%E8%BD%AC.html

4.2更改子目录
找到/usr/share/cacti/site/include/global.php,把$url_path = "/cacti/";改成新的目录名