您的位置:首页 > 数据库

5、为Cacti安装插件,通过数据库修改所有模版的step

2013-05-13 15:12 786 查看
批量修改Data Templates的step以及给Cacti安装插件
由于cacti-0.8.8a.tar.gz 这个版本已经安装上了插件管理工具所以这里不需要再安装cacti-plugin-0.8.7h-PA-v3.0.tar.gz,直接可以解压安装插件。
安装settings插件
官网下载地址:
http://docs.cacti.net/plugin:settings#settings
[root@radius ~]# cd /usr/local/nginx/html/cacti/plugins
[root@radius plugins]# wget http://docs.cacti.net/_media/plugin:settings-v0.71-1.tgz [root@radius plugins]# mv plugin\:settings-v0.71-1.tgz settings-v0.71-1.tgz
[root@radius plugins]# tar -zxvf settings-v0.71-1.tgz
安装thold 插件
官网下载地址:
http://docs.cacti.net/plugin:thold#thold
[root@radius ~]# cd /usr/local/nginx/html/cacti/plugins
[root@radius plugins]# wget http://docs.cacti.net/_media/plugin:thold-v0.4.9-3.tgz [root@radius plugins]# mv plugin\:thold-v0.4.9-3.tgz thold-v0.4.9-3.tgz
[root@radius plugins]# tar -zxvf thold-v0.4.9-3.tgz
问题㈠:
如果单击出现500错误解决办法
排错步骤:
1、 试打开php.ini中的display_errors=on看能不能显示出错误来。
2、 在命令行执行/usr/local/php/bin/php –rf define_syslog_variables看是否支持define_syslog_variables函数
3、 define_syslog_variables是在初始化与 syslog 相关的变量,而syslog相关变量已经被全局定义,无需再定义,直接注释掉settings.php 132行即可。
4、 http://www.centos.bz/2012/01/cacti-install-tutorials/
注释掉132行



问题㈡:
如果点击

出现 You are running MySQL in Strict Mode,which is not supported by Thold 就需要修改sql模式一般在安装好MYSQL之后就修改最好,因为你装好CACTI再来修改你的数据库就会出问题



mysql> SET @@GLOBAL.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
增加如下一行
[root@radius ~]# vim /etc/my.cnf



2013年5月13日 13:32:48
今天发现重启之后又出现这个问题了
You are running MySQL in Strict Mode, which is not supported by Thold.
2013年5月13日 14:02:51
找到问题所在,因为配置文件路径不正确,配置文件路径是(下图)我修改的却是/etc/my.cnf,各种坑啊



修改内容如下,修改成空的,或者注释掉就OK



安装monitor插件
官网下载地址:
http://docs.cacti.net/plugin:monitor
[root@radius ~]# cd /usr/local/nginx/html/cacti/plugins
[root@radius plugins]# wget http://docs.cacti.net/_media/plugin:monitor-v1.3-1.tgz
[root@radius plugins]# mv plugin\:monitor-v1.3-1.tgz monitor-v1.3-1.tgz
[root@radius plugins]# tar -zxvf monitor-v1.3-1.tgz
配置报警功能如下图









2、通过数据库修改所有模版的step
查询所有Data Templates的step
[root@radius bin]# cd /usr/local/mysql/bin/
[root@radius bin]# ./mysql -uroot –p
mysql> use cacti;
mysql> select id,t_name,name,t_rrd_step,rrd_step from data_template_data;
修改所有Data Templates的step
[root@radius bin]# cd /usr/local/mysql/bin/
[root@radius bin]# ./mysql -uroot –p
mysql> use cacti;
mysql> update data_template_data set rrd_step='60';
以下内容为可选笔记
修改rrd文件
查询现有rrd的step
[root@radius ~]# /usr/local/rrdtool/bin/rrdtool info /usr/local/nginx/html/cacti/rra/localhost_load_1min_5.rrd |grep step
修改现有rrd的step
下载rrdjig.pl工具
[root@radius src]# wget https://svn.oetiker.ch/rrdtool/trunk/contrib/rrdjig/rrdjig.pl
新增环境变量
[root@radius ~]# vim .bash_profile
增加如下内容
PERL5LIB=/usr/local/rrdtool/lib/perl
export PERL5LIB
完整配置如下:



使环境变量生效
[root@radius ~]# . .bash_profile
rrdtool tune 常用用法
rrdtool tune 常用语句如下:
1
2
3
4
5
rrdtool tune filename
[--heartbeat|-h ds-name:heartbeat]
[--data-source-type|-d ds-name:DST]
[--data-source-rename|-r old-name:new-name]
[--minimum|-i ds-name:min] [--maximum|-a ds-name:max]
例:如下是我们建的数据结构
/usr/bin/rrdtool create traffic1.rrd --start $(date -d '1 days ago' +%s) --step 60
DS:In:COUNTER:600:0:U
DS:Out:COUNTER:600:0:U
RRA:AVERAGE:0.5:1:600
RRA:AVERAGE:0.5:4:700
RRA:AVERAGE:0.5:24:775
RRA:AVERAGE:0.5:288:797
如上可以看到heartbeat 是600  dsname有两个In 和Out  DStype 是COUNTER
下面几条命令是我们常用的。
rrdtool tune traffic.rrd  -h In:300 修改In 的heartbeat的值为300
rrdtool tune traffic.rrd  -d In:GAUGE  修改In 的DST为GAUGE
rrdtool tune traffic.rrd  -r In:traffic_in   修改数据源In 为traffic_in (在mrtg 生成的log文件转换rrd,再导入cacti做图的时候,要用到此命令转换)
rrdtool tune traffic.rrd  -i In:800 -a In:1024     修改数据源In 最大值和最小值
rrdtool思维导图



RRDTool基础
? RRDTool介绍
RRDTool是基于RRD数据库来存储时间序列数据,并在需要的时候能够很轻易产生漂亮图表的一套工具包。常用于监控领域,比如监控温度、湿度、流量、CPU、内存、磁盘等等。
? RRD介绍
为什么监控数据采用RRD数据库来存储,如果采用关系数据库将其记录下来有什么问题呢?
1. 首先,监控一般是7*24小时不间断进行的,长期积累下数据量很大,来给运维带来沉重负担。
2. 其次,我们对监控数据的关注点也不一样,通常对最近的数据比较关心,而对一年前的数据就只关心一个大致趋势即可。
3. 再次,我们需要将数据转化为图表以观察变化趋势,如果数据从关系数据库取的话,数据量多、还慢,用户感知也不好。
RRD(Round Robin Database)最大的特点是以循环格式来存储时间序列格式,在持续不断插入新数据的过程中它不断将老数据淘汰掉,因此它不会积累太多的数据,RRD文件大小也会保持在一个合适的范围内。在使用RRDTool之前,首先需要建立RRD数据库,然后持续将监控数据更新至RRD,最后再将数据从RRD中取出来生成趋势图。建议RRD数据库需要涉及两个概念,一个是数据源DS,一个是循环存档RRA。下面我们就来说说什么是DS和RRA。
? 数据源DS
我们将采样来的数据放到哪里,以后出图就从那个地方(数据源)取数据。每个RRD文件可以定义多个DS,也就是一个RRD里可以同时保持多个对象的采样数据,这就方便以后我们将这些数据绘制到同一张图表中对比分析。定义数据源最重要的就是给源取个名字,以及指定其类型。
语法 DS:name:type:heartbeat:min:max
– name:数据源的名称,长度为1-19个字符
– type:数据源类型,COUNTER:累计,GAUGE:离散
– heartbeat:心跳时间,当心跳时间内仍未采样到监控数据时,将此step时间点填充为UNKONWN,一般设置为两倍step,或者取前后采样的平均值
– min:最小数据界限,在不需要限制的情况下,可以指定为U
– max:最大数据界限,在不需要限制的情况下,可以指定为U
? 循环存档RRA
DS里源源不断的记录着新采样回来的数据,我们会如何使用这些数据呢?当然是按照指定的时间周期来绘制走势图表了,就好比我们看股票走势图,有时看日线,有时看周线,有时看月线,有时看年线。RRA就是RRD的日线、周线、月线、年线!每个RRD可以定义多个RRA,一个5分钟为周期的RRA,一个半小时为周期的RRA,一个2小时为周期的RRA,等等。之所以定义这么多的RRA是方便以后快速出图,每个RRA都是即时更新,也就是新来一个采样数据,所有的RRA就会计算一次并保存下来,以后要出图就直接从某个RRA中取数据就好了,不需要在出图时再重新计算平均值什么的。
语法 RRA:cf:xff:steps:rows
– CF: 聚合函数,定义如何对数据进行聚合[平均:AVERAGE | 最小:MIN | 最大:MAX | 最后一笔:LAST]
– xff: 聚合时可以容忍多少个UNKOWN值,这个是UNKOWN个数和全体个数的一个比率,一般定义为0.5
– steps: RRA步长,一般为采样间隔(step)的倍数
– rows: 此RRA最多保留几份这类采样数据,注意高采样频率的RRA不要保存太多的rows,否则会影响出图性能
RRA示例图:



? 创建RRD
语法:
rrdtool create filename [--start|-b start time]
[--step|-s step]
            [DS:name:type:heartbeat:min:max]
            [RRA:cf:xff:steps:rows]
? 更新RRD
语法:
rrdtool update filename timestamp:datapoints
? 简单示例
#!/usr/bin/python
import subprocess
import random
START_TIME = 1324474748
END_TIME = 1324996652
# create RRD for cpu traffic
cmd = 'rrdtool create cpu.rrd'
cmd += ' --step 300'
cmd += ' --start %d' % START_TIME
cmd += ' DS:sys:GAUGE:600:U:U'
cmd += ' DS:usr:GAUGE:600:U:U'
cmd += ' DS:idle:GAUGE:600:U:U'
cmd += ' RRA:AVERAGE:0.5:1:8640' # 5 min, save 1 month data
cmd += ' RRA:AVERAGE:0.5:6:5760' # 30 min, save 4 month data
cmd += ' RRA:AVERAGE:0.5:24:2160' # 2 hour, save 6 month data
cmd += ' RRA:MIN:0.5:1:8640' # 5 min, save 1 month data
cmd += ' RRA:MIN:0.5:6:5760' # 30 min, save 4 month data
cmd += ' RRA:MIN:0.5:24:2160' # 2 hour, save 6 month data
cmd += ' RRA:MAX:0.5:1:8640' # 5 min, save 1 month data
cmd += ' RRA:MAX:0.5:6:5760' # 30 min, save 4 month data
cmd += ' RRA:MAX:0.5:24:2160' # 2 hour, save 6 month data
cmd += ' RRA:LAST:0.5:1:8640'
subprocess.call('rm -rf cpu.rrd', shell = True)
subprocess.call(cmd, shell = True)
# update RRD
for i in xrange(START_TIME, END_TIME, 300):
sys = random.randint(0, 15)
usr = random.randint(25, 55)
idle = 100 - (sys + usr)
cmd = 'rrdtool update cpu.rrd -t sys:usr:idle %d@%d:%d:%d' % (i, sys, usr, idle)
retcode = subprocess.call(cmd, shell = True)
# draw graph
cmd = 'rrdtool graph cpu.png -h 250 -w 800'
cmd += ' --start %d --end %d' % (START_TIME, START_TIME + 86400 * 2)
cmd += ' --title "CPU Load"'
cmd += ' -v "use percent"'
cmd += ' DEF:v1=cpu.rrd:sys:AVERAGE'
cmd += ' DEF:v2=cpu.rrd:usr:AVERAGE'
cmd += ' DEF:v3=cpu.rrd:idle:AVERAGE'
cmd += ' AREA:v1#FF2626:"sys"'
cmd += ' AREA:v2#00FF00:"usr":STACK'
cmd += ' AREA:v3#C0C0C0:"idle":STACK'
subprocess.call(cmd, shell = True)





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐