Cacti的使用

Cacti的使用

Cacti是一款可在线浏览的系统状态监测工具。

一、下载Cacti

Cacti官方下载地址
写这篇文章时的版本为 0.8.8a
解压cacti到可以通过HTTP访问的目录

$ tar xf cacti-0.8.8a.tar.gz 
$ ln cacti-0.8.8a cacti -s

本文为 http://127.0.0.1/cacti

二、配置Cacti

includes/config.php

$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
$database_ssl = false;

$url_path = "/cacti/";

$cacti_session_name = "Cacti";

创建用户名与数据库

CREATE USER 'cacti'@'localhost' IDENTIFIED BY 'cacti';
CREATE DATABASE cacti;
GRANT ALL ON cacti.* TO 'cacti'@'localhost';
FLUSH PRIVILEGES;

导入表与数据

mysql -u cacti -p cacti < cacti.sql

访问 http://127.0.0.1/cacti,按提示进行安装

完成完装后,使用默认的用户名密码,admin/admin进入

三、关联snmp

Devices -> Localhost 中设定
在Associated Data Queries中添加snmp的相关查询

四、配置Crontab

定时运行poll.php写入监测数据

$ crontab -e
*/5 * * * * /usr/bin/php /var/www/cacti/poller.php &> /dev/null

5分钟间隔与Cacti的System Utilities -> Poller中的Cron Interval设置一致

五、Cacti的监测流程

  1. Data Input Methods 取得数据
  2. Data Template 对取得的数据分类
  3. Graph Template 制作绘图的模版,指定图中要显示的数据的格式
  4. New Graphics 通过New Graphic以Data Template与Graph Template为模版进行监测和绘图

Cacti预设了一系列Data Template与Graph Template,所以一些常用的监测,如CPU负载,网络流量等直接进行4步即可

六、通过Linux命令行自定义数据

如果想监测一些自定义的数据,可以指定新的数据输入方法 Data Input Methods
以CPU温度为例,Linux下温度状态可以通过lm_sensors显示

lm_sensors的输出

$ sensors
w83627thf-isa-0290
Adapter: ISA adapter
in0:          +1.14 V  (min =  +0.00 V, max =  +3.84 V)
in1:          +1.06 V  (min =  +1.28 V, max =  +2.11 V)  ALARM
in2:          +1.81 V  (min =  +0.64 V, max =  +2.43 V)
+5V:          +5.09 V  (min =  +0.05 V, max =  +0.43 V)  ALARM
in4:          +3.42 V  (min =  +0.54 V, max =  +2.61 V)  ALARM
5VSB:         +5.15 V  (min =  +0.08 V, max =  +0.05 V)  ALARM
Vbat:         +3.23 V  (min =  +1.34 V, max =  +0.13 V)  ALARM
fan1:           0 RPM  (min = 33750 RPM, div = 8)  ALARM
fan2:           0 RPM  (min = 337500 RPM, div = 4)  ALARM
fan3:           0 RPM  (min =   -1 RPM, div = 2)  ALARM
temp1:        +56.0°C  (high = +96.0°C, hyst =  +2.0°C)  sensor = thermistor
temp2:        +39.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = CPU diode
temp3:        +38.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = CPU diode
beep_enable: enabled

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +30.0°C  (crit = +100.0°C)
Core 1:       +25.0°C  (crit = +100.0°C)

通过脚本转换成Cacti的格式:

名称:值 名称:值 名称:...

/usr/bin/sensors_cacti.rb

#!/usr/bin/ruby
# encoding: utf-8

puts `sensors`.scan(/^(.+?):\s*(\S+)\s*(RPM|C|V|°C)/u).collect {|name, value, unit|
  name.gsub!(/\s*/, '')
  "#{name}:#{value.to_f}"
}.join(" ")

上述脚本运行结果

in0:1.15 in1:1.07 in2:1.81 +5V:5.12 in4:3.44 5VSB:5.17 Vbat:3.23 fan1:0.0 fan2:0.0 fan3:0.0 temp1:55.0 temp2:38.5 temp3:39.5 Core0:29.0 Core1:25.0

其中Core0和Core1是要监测的数据

七、配置Cacti监测CPU温度

Data Input Methods

指定Data Input Methods,可以通过脚本命令取得Core0和Core1
Data Input Methods: sensors
Input Type: Script/command
Input String: /usr/bin/sensors_cacti.rb
Out Fields: Core0, Core1
Data Input Methods

1. Data Templates

设定Core0与Core1的时间间隔,上下限
Data Templates

2. Graphic Templates

在图中显示Core0和Core1,以及三个GPINT:当前,平均,和最大值
Graphic Templates

3. Graphic

通过New Graphics添加一个作图,像网络流量监测一定要通过New Graphic指定网卡才可正常工作
结合Graphic Template与Data Sources进行最终的作图
Graphic

4. 测试

命令行下 poll.php 加参数 -d –force 进行测试,可以看到两行

05/10/2012 08:17:07 PM - POLLER: Poller[0] Parsed MULTI output field 'Core0:30.0' [map Core0->Core0]
05/10/2012 08:17:07 PM - POLLER: Poller[0] Parsed MULTI output field 'Core1:26.0' [map Core1->Core1]

Poller检测到了Core0 30度与Core1 26度
该信息也可在网页中System Utilities中的 Log File或文件log/cacti.log中看到

九、问题检测

当图形无法显示时有以下几种可能

  1. Cacti配置不正确
  2. Poll未运行,或等待下一个周期
  3. 输入数据无法工作,如snmp无权限,脚本运行错误等

详细的日志可在System Utilities中的View Cacti Log File查看
日志的记录等级在 Setting -> General 中设定

共2条评论
  1. Sandy @ 2012-08-01 17:23:30 回复

    我用的cacti-0.8.8a,在安装了settings-v0.71-1.tgz,thold-v0.4.9-3.tgz,monitor-v1.3-1.tgz三个插件后,所有的功能都正常。但是这时配置项settings打不开了,只要找开,就会返回一个服务器内部错误,HTTP错误500。我把插件卸载了也不行。请问你遇到这样的问题没有?有没有什么好的解决方法?

    • JiangMiao @ 2012-08-01 19:50:33

      没遇到过,你可以看看日志文件,500错误一般都会有记录。

发表评论

电子邮件地址不会被公开。 必填项已用*标注