cacti-0.8.7d安装
database & user准备
# mysql -u root -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12142 to server version: 3.23.58
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database cacti;
Query OK, 1 row affected (0.00 sec)
mysql> grant select,insert,update,delete on *.* to root@"%" Identified by "123456";
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on cacti.* to cactiuser@"localhost" Identified by "cactipw" WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
上述命令创建了cacti数据库,同时创建了帐户cactiuser,并赋予了对应的访问权限。
cacti安装
软件包路径下载:
a) 安装
shell>tar zxvf cacti-0.8.7d.tar.gz
shell>mv cacti-0.8.7d /data/cacti 这里假设apache配置/data/cacti为主目录
shell>cd /data/cacti
shell>mysql –u root –p cacti < cacti.sql
shell>vi include/global.php,修改如下:
$database_type = “mysql”;
$database_default = “cacti”;
$database_hostname = “localhost”;
$database_username = “cactiuser”;
$database_password = “cactipw”;
上述配置文件说明了和MySQL的连接参数。
b) 新增用户
//添加cacti用户
# useradd cactiuser
//将rra目录的所有权给cacti用户
# chown –R cactiuser /usr/loca/apache/htdocs/cacti/rra
//修改cacti目录所属组
# chgrp –R cactiuser /usr/loca/apache/htdocs/cacti
c) 添加定时采集的crontab
shell>crontab -e 添加如下命令:
*/5 * * * */usr/local/php/bin php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1
表示每隔5分钟,将采集数据并生成rrd文件
d) 为了避免中文环境对rrd文件的影响,最好在执行命令之前加入如下对LANG环境变量的设置:
export LC_ALL=en_US;
export LANG=en_US;
export LANGUAGE=en_US;
export LC_CTYPE=en_US;
export LC_TIME=en_US;
cacti初始化
一切正常后,重新启用Apache服务,然后在浏览器中输入.
然后输入初始化用户名和密码 admin/admin,提示需要修改该密码,修改完毕后,点击Save按钮,进入Cacti管理界面。
cacti创建设备及图表的基本过程
进入主页面后,请选择按照以下步骤创建图表:
选择屏幕左上方的Management->Devices,随后屏幕右边会出现现有的设备情况,然后点击右上方的Add按钮,出现下面的界面:
需要输入:1)设备描述;
2)Hostname(可以是地址或域名);
3)模板,一般是ucd/net SNMP host或cisco router;
4)输入community;
5)选择SNMP Version,最后点击Create添加设备。
如果一切正常的话,下个界面上方将显示该主机的信息,标识SNMP通信正常。
选择屏幕左上方的Management->Devices,点击刚才创建的设备,然后点右上方的“Create Graphs For This Host”,如下图所示:
点击后会出现下面的界面,根据不同的主机情况,可能是不同的,例如下图显示了一台Cisco交换机可以创建的图形模板,包括了:CPU Usage和网络接口:
请在上图选择对应的选项(右侧的Check Box),同时选择Graph Type(例如Cisco – CPU Usage,In/Out Bytes(64-bit Counters)),
然后点击“Create”按钮。确认后,会出现一个页面,此刻可以选择图形中的颜色,点击“Create”按钮后,出现刚才那个页面,但是上方会显示创建图形的结果,如下图所示:
表示图形创建正确。
接下来可以点击Management->Graph Trees,点击右上方的“Add”按钮,可以添加Tree Root,如下图所示,添加了一个”USA ViewToo Portal“:
接着点击上图中创建的Tree Root(例如“USA ViewToo Portal“)后,可以再创建其下面的子节点,如下图所示:
上图中可以看出,在USA..节点下创建了一个名为“San Jose“的子节点。要想同样创建一个这类节点,请单击图形右边的”Add“按钮。
要想在已存在的子节点下创建主机信息,请点击子节点旁边的”Add“按钮(例如Sunnyvale(Add)),将会出现如下界面:
在上图上选择Parent Item为对应的子节点和Tree Item Type为Host,然后选择对应的Host主机,点击“Create“后将会创建主机。
创建后的情况如之前的那幅图所示。选择“Add“按钮后出现如下界面,请输入相应的节点信息,如Sunnyvale,注意Parent Item需要是”[root]“,
同时Tree Item Type为”Header“:
创建完相应的子节点信息后,就可以在刚才那个根下面看到此节点,今后可以将与之关联的主机性能图挂接到这个子节点下对应的主机上。
接下来需要将图形挂接到对应的节点和主机下面(注意:默认情况下若创建了相应的Host,同时也生成了该Host的图形,
那么系统会自动将所有的Host图片挂接到该Host点下,而无需手动完成。若你需要自动调整图形和Host的关系,那么请按照下面步骤完成),
点击Management->Graph Management,选择刚才新建的主机,如下图所示:
选择相应的主机,然后会显示之前已创建的图形,选择“Place on A Tree(USA ViewToo Portal)“后点击”go”按钮。出现下图,
选择之前新创建的子节点,然后选择yes确认。
至此整个配置过程基本完成,我们可以从Graphs Tab上查看刚才添加的子节点,主机,及相应的图形,如下图所示(Sunnyvale->Host:3750-01):
cacti插件安装
cacti还提供了thold,monitor,report等plugin插件,以下说明这些插件的安装过程。
安装包的准备
首先到如下URL下载支持plugin的patch包:
其次到如下URL下载相应的plugin安装包:
Linux或者Unix环境下,最好都下载gzip格式安装包
Patch的安装
强烈建议安装之前先阅读patch文件包中的Readme.txt文件;一般都会有安装patch的说明,根据ReadMe指引进行patch的安装即可。
#wget
#unzip cacti-plugin-0.8.7d-PA-v2.4.zip -d cacti-plugin-arch
#cp -R cacti-plugin-arch/* /usr/share/cacti/
#cd /usr/local/apache/htdocs/cacti/
#mysql -ucacti -p cacti < pa.sql
#patch -p1 -N < cacti-plugin-0.8.7d-PA-v2.4.diff
这样做完后,可能会图象不对(前提,你设置的url是.
#vim include/global.php
$config['url_path'] = '/cacti/';
注意:这儿的cacti后面的/是必需的。
进入"用户管理"->点admin->区域权限->Plugin Management
plugin的安装
a) 安装setting,thold,monitor
>cd cacti/plugins
>wget http://mirror.cactiusers.org/downloads/plugins/settings-0.5.tar.gz
>tar zxvf settings-0.5.tar.gz
>wget http://mirror.cactiusers.org/downloads/plugins/thold-0.4.1.tar.gz
>tar zxvf thold-0.4.1.tar.gz
>wget http://cactiusers.org/downloads/monitor.tar.gz
>tar zxvf monitor.tar.gz
>vim ../include/global.php
在$plugins = array();的后面加上如下内容
$plugins[] = 'thold';
$plugins[] = 'settings';
$plugins[] = monitor;
b) 安装完成之后
OWL中缺少sendmail,因此需要手动安装
procmail-3.22-17.1.el5.centos.x86_64.rpm
c) 进入
修改:/include/global_constants.php.rej文件
在175,178 之间找到
define("SNMP_CMDPHP", 1);
define("SNMP_WEBUI", 2);
--- 175,182 ----
define("SNMP_CMDPHP", 1);
define("SNMP_WEBUI", 2);
下面增加:
define('OPER_MODE_NATIVE', 0);
define('OPER_MODE_RESKIN', 1);
define('OPER_MODE_IFRAME_NONAV', 2);
d) 使用插件
使用monitor插件
刷新cacti系统的web管理界面,可以看到多出两个标签页(thold、monitor)。
1>打开“Console->Settings->Misc”,可以调整Monitor的各项配置。例如:勾选“Show Icon Legend”可以在监控页面显示图例;
“View”可以选用Tiles类型,以显示设备状态表格。
2>为cacti添加新设备时,勾选上“Monitor Host”项。对已添加的设备可以通过“Management->Devices”进去修改。
3>单击Web页面上方的“monitor”标签链接,可以进入查看各设备/主机的状态图示。
使用thold插件
1>打开“Console->Settings->Mail/DNS”,可以调整“SMTP Options”和“DNS Options”等配置,用于确保预警邮件能够发出。
2>打开“Console->Settings->Alerting/Thold”,可以调整Thold的各项配置。例如:“Dead Host Notifications Email”处
可填写设备当机时发送警告信息到哪个邮箱;勾选“
Send alerts as text”项,可以设置只发送文本格式的邮件。
3>打开“Templates->Threshold Templates”,可以添加、取出需要关联到预警系统的模板,例如:可以添加和“Interface-Traffic”模板的关联,
选择 “traffic_in”、"traffic_out”数据项,分别设置警告阈值“High Threshold”(如200000000比特/秒);可以添加和“Unix-Disk Space”模板的关联……。
4>打开“Create->New Graphs”,选择需要提供预警的设备,单击右侧上方的“Auto-create thresholds”创建预警项目。
5>打开“Management->Thresholds”,可以管理已经创建的预警项目。
FAQ
在执行poller.php出现reset错误
错误信息如下:
PHP Warning: reset(): Passed variable is not an array or object in /usr/local/cacti/lib/functions.php on line 146
Warning: reset(): Passed variable is not an array or object in /usr/local/cacti/lib/functions.php on line 146
PHP Warning: Variable passed to each() is not an array or object in /usr/local/cacti/lib/functions.php on line 147
Warning: Variable passed to each() is not an array or object in /usr/local/cacti/lib/functions.php on line 147
PHP Warning: reset(): Passed variable is not an array or object in /usr/local/cacti/lib/functions.php on line 146
Warning: reset(): Passed variable is not an array or object in /usr/local/cacti/lib/functions.php on line 146
PHP Warning: Variable passed to each() is not an array or object in /usr/local/cacti/lib/functions.php on line 147
Warning: Variable passed to each() is not an array or object in /usr/local/cacti/lib/functions.php on line 147
解决方法:
这是在安装插件patch之后的一个小bug,需要修改lib/functions.php,找到function read_default_config_option,修改为如下代码:
function read_default_config_option($config_name) {
global $config, $settings;
if (is_array($settings)) {
reset($settings);
while (list($tab_name, $tab_array) = each($settings)) {
if ((isset($tab_array[$config_name])) && (isset($tab_array[$config_name]["default"]))) {
return $tab_array[$config_name]["default"];
}else{
while (list($field_name, $field_array) = each($tab_array)) {
if ((isset($field_array["items"])) && (isset($field_array["items"][$config_name]))
&& (isset($field_array["items"][$config_name]["default"]))) {
return $field_array["items"][$config_name]["default"];
}
}
}
}
}
}
poller.php无法正常采集数据,一直处于等待状态
输出的日志信息如下:
08/23/2005 11:04:59 AM - POLLER: Poller[0] Maximum runtime of 296 seconds exceeded. Exiting.
解决办法:
这有可能是由于环境中有多个php的程序,cacti初始化所用的php的路径,与crontab中执行的时候所用的php的路径不一致;
并且,cacti初始化指定的php必须是与mysql结合编译的那个php,否则的话,会出现无法连接到mysql数据库的报错。
cacti进阶应用
cacti加入msn预警
a) 获取cacti补丁
b) 补丁安装
#cd /var/www/cacti/plugins
#patch -p1 < cacti_thold-0.3.9_settings-0.5_add_fetion_msn.path
执行过程如下:
root@TS263 cacti]# patch -p1 < cacti_thold-039_settings-05_add_fetion_msn.path
The next patch would create the file index.php,
which already exists! Assume -R? [n] y
patching file index.php
Hunk #1 FAILED at 1.
File index.php is not empty after patch, as expected
1 out of 1 hunk FAILED — saving rejects to file index.php.rej
patching file settings/fetion-test.php
can’t find file to patch at input line 42
Perhaps you used the wrong -p or –strip option?
The text leading up to this was:
————————–
|diff -uNr plugins-old/settings/include/functions.php plugins/settings/include/functions.php
|— plugins-old/settings/include/functions.php 2008-04-29 14:03:40.000000000 +0800
|+++ plugins/settings/include/functions.php 2008-11-24 18:22:10.000000000 +0800
————————–
File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
patching file settings/include/msnpauth.php
patching file settings/include/sendMsg.php
patching file settings/msn-test.php
can’t find file to patch at input line 537
Perhaps you used the wrong -p or –strip option?
The text leading up to this was:
————————–
|diff -uNr plugins-old/settings/setup.php plugins/settings/setup.php
|— plugins-old/settings/setup.php 2008-04-29 14:03:40.000000000 +0800
|+++ plugins/settings/setup.php 2008-11-24 13:07:48.000000000 +0800
————————–
File to patch: plugins/settings/
patch: **** File plugins/settings/ is not a regular file — can’t patch
c) 测试
安装成功之后可以看到:
可以在这里测试邮件和MSN,如图:
测试邮件
测试MSN
因为公司的邮件服务器需要SMTP认证,因此测试时邮件服务器使用图中的就可以了。
建立thold模板时可用选择发送多个用户,如图:
d) 修改文件
需要修改:../cacti/plugins/thold/ thold_templates.php 在352行处
foreach ($users as $user) {
$send_notification_array[$user['id']] = $user['data'] . ' - ' . ucfirst($user['type']);
}
修改数据库:plugin_thold_contacts表
增加需要显示的用户信息,例如:
其中user_id为1表示为管理员,是在user_auth表中的用户信息。
e) 短信提醒可以使用139邮箱附带的短信通知实现。
使用cacti监控url的响应时间
引用一个page_load_time.tar.gz的模板,该模板包含2个文件,一个是获取某个url响应时间的perl脚本page_load_time.pl,
一个是需要导入cacti的模板xml 文件 cacti_graph_template_page_load_time.xml。
具体操作步骤如下:
将page_load_time.pl脚本放置于/scripts/目录下;需要注意的是,脚本中引用的几条命令:perl、wget、time的具体路径,
要根据cacti安装的主机上的实际路径来修改;
在【import templates】模块,将cacti_graph_template_page_load_time.xml的模板文件导入;
在【devices】模块中添加url对应主机的设备;
在【Associated Graph Templates】位置,添加page load time 这个图形模板;
点击【Create Graphs for this Host】,添加page load time图形,并且选择page load time的data source
出现的data source定义页面上,指定需要监控的url。
注意事项:
像陕西aaa这种在url上需要带端口进行监控的。 aaa/portal/login.do?action=autoLogon&way=mine。
通过$host . $url的方式来拼出wget需要的url是有问题的。因此,修改page_load_time.pl,将其输入的参数设置为只有一个url的参数;
在【Data Input Methods】中,将page load time这个方法的命令中去掉对参数的引用,修改为:
perl <path_cacti>/scripts/page_load_time.pl <url>
在【Data Source】中,将需要check的url设置为绝对的url路径,例如:
在最后生成图片的时候,有一个ERROR:the RRD does not contain an RRA matching the chosen CF 这样的报错。需要修改graph templates,
将item1的CFType由原先的Last修改为Average,则图片可以显示正常了。
其他
Cacti提供了非常灵活的模板定制和导入模板功能,包括了数据采集部分,图形部分等。同时可以对用户进行灵活的管理和权限分配,
例如可以指定该用户仅仅有查看图形的权限而不能做任何系统相关配置,更进一步可以做到指定该用户拥有哪幅图/主机/模板/节点(树)的查看权限。
有待我们去做进一步研究和挖掘。其更为详细使用说明,请参考随机带的文档或其网站Documents部分。