Entries Tagged as 'Cacti'

cacti监测mysql性能

mysql_stats

需要在被检测的mysql库里添加检测机器的权限(仅需要process权限):

grant process on *.* to username@192.168.1.1 identified by ‘password’;
flush privileges;

for cacti0.8.7b的cacti-plguin-arch 2.0的bug?

今天升级cacti0.8.7a版到0.8.7b
但是关键升级cacti plugin architecture的时候有些波折
按照文档升级完了
页面老不对
主要是内部的一些链接不对
查了半天
发现是url_path的问题
include/plugins.php里有一句:

$config['url_path'] = substr(__FILE__, strlen($_SERVER['DOCUMENT_ROOT']), strlen(__FILE__) - strlen($_SERVER['DOCUMENT_ROOT']) - strlen(’include/plugins.php’));

应该是来算url_path
但是就是这句算的url_path不对
我的cacti在/cacti/下
关键是我的incluce/plugins.php绝对路径里有soft link
然后web目录下又是Alias
所以不管怎么样
这句算出来的url_path不对
最后没办法(php我也不是很精通)
直接把这句注释掉
写死url_path为正确值了事

$config['url_path'] = ‘/cacti/’;

cacti+thold插件实现监控硬盘分区使用百分率情况

老大说要监控机器的硬盘分区的使用情况
大于一定比率要报警
知道cacti + thold插件可以做这个
于是就装plug architecture、settings(plugin)
(这两个是thold插件所依赖的,所以要先装)
然后再装thold插件
这都简单
关键是算使用百分比的CDEFs
准确算法应该是:CURRENT_DATA_SOURCE * 100 / hdd_total
但现在的问题是这里不能得到hdd_total的值
于是看了看thold3.8的代码
发现其实在plugin thold 3.8的版本里
已经取好了data source item “hdd_total”的值为special data source:VALUE_OF_HDD_TOTAL
所以只要在定义CDEFs的时候,把最后的字串等于

CURRENT_DATA_SOURCE,VALUE_OF_HDD_TOTAL,/,100,*

于是具体方法就简单了
直接用custom string即可
或者更王道一点的办法是改global_arrays.php
在$custom_data_source_types加上对”VALUE_OF_HDD_TOTAL”的描述
这样设CDEFs的时候就可以在下拉列表框里选择了

upgrade cacti from 0.8.6k to 0.8.7

以前为了解决cact的一个bug(详细情况看这里)
把系统升级到了当时最新的0.8.6-svn
其中的版本就是0.8.6k
现如今cacti的最新的stable版本都已经是0.8.7了
于是我也想升级
当我当下来0.8.7的文件
升级的时候,发现系统报不支持从0.8.6k升级到0.8.7
查了查升级脚本,果然是没有对0.8.6k的支持
于是就求助于cacti的官方论坛
很快有了答案
于是照着做:
1,停掉apache
2,停掉Cron(啊!?这步我没做!!!)
3,备份mysql库
4,取回0.8.7的包,包含patches(我是从这里取了patch回来,不知道对不对)
5,编辑文件install/0_8_6j_to_0_8_7.php,把在其中注释为“Add 1 min rra”的这段程序注释掉
6,在mysql里,执行”

update version set cacti=’0.8.6j’ where cacti=’0.8.6k’

“(其实还要先用use命令进入cacti所用的数据库)
7,把原来0.8.6k的include/config.php拷贝过来到include/config.php
8,把apache起起来
9,通过浏览器访问cacti系统
10,根据提示升级,碰到sql语句执行失败手工确认(因为0.8.6k和0.8.6j的数据库结构还是有变化的,这里等于是强制把0.8.6k当作0.8.6j来往0.8.7上升级,有错基本上是正常的)
11,如果没有问题,再把Cron打开

我照着做了
基本上解决了问题
只有一点:升级完成后,貌似所有的图都给删掉了然后重建的,所以以前的数据图上就显示不出来了
这也许是我没有按回帖里写的那样先停掉Cron最后再启动的原因吧

cacti中监测apache性能的模板apachestats0.4的问题

自打用上这里的用于cacti监控apache的模块儿apachestats后
总觉得还行,能用(也有些小问题,主要是图上显示的细节问题)
但最近发现有个问题比较大
就是有的服务器的监控图明显不对
我们有好些web server的机器(跑的apache),访问量很大,httpd进程经常被打到2000个,被打满(2048)
但是在这些服务器的监控图上一般最多能显示1000个httpd进程
为了查这个问题
我仔细的看了下这个模块儿的实现过程
import进来的每一个Data Templates和Graph Templates都看过了
最后发现是新生成的那个叫”WebServer - Apache Statistics”的Data Templates有问题
这里面的几乎每一个Data Source Item的“Maximum Value”都设的偏小
这样出来的监控图自然当数据小的时候都没什么
但数据一大,马上出问题!
知道原因了
再改正就快了
重新把数据设大
再删掉所有的用这些Templates建的图
再进rra目录删掉所有相关的rra文件(这步貌似非必须的:)
再重建新图
最后看图:终于搞定了
最后把改过的xml文件贴上来,以免大家重复劳动
改过的apachestats0.4的模板文件

apachestats:用cacti监测apache性能

cacti系统缺省没有带监测apache性能的template
但其论坛上有:http://forums.cacti.net/about9861.html
把这里下下来的ws_apachestats.pl.gz解开,放到<path_cacti>/scripts/下
变成<path_cacti>/scripts/ws_apachestats.pl
然后把下载下来的cacti_host_template_webserver_apache.xml在cacti里import进去
(console–>Import Templates)
成功以后
再给某台机器画图
就可以在”Associated Graph Templates”里选一堆”WebServer - Apache Statistics”之类的模板
然后画出相应的图来
这里有2个问题:
1,需要在要监测的apache上打开mod_status,并打开extend_status
方法是:
编辑文件/etc/httpd/conf/httpd.conf

LoadModule status_module modules/mod_status.so
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 10.10.
Allow from 192.168.
Allow from 127.0.0.
</Location>

然后再重启apache

还有个问题

当画图”Bytes/Requets“或这是”Thread Details (%)“的时候

会报个空comments的错误:
ERROR: Expected some arguments after ‘COMMENT’:

这个问题在cacti-0.8.6k已经被修正

如果你还是cacti-0.8.6.j或以前版本

可以升夏季

用snmpwalk检测远端服务器上的net-snmp是否支持64位计数

主要是工作中需要用cacti来画服务器的流量图
这就牵扯到远端服务器上的net-snmp是否支持64位计数
如果不支持的话当流量大于100M得出来的数据就不准了
所以存在有检测一说
snmpwalk -v 2c -c public 10.10.10.10 ifHCInOctets
这里”2c”是snmp的版本号、”public”是远端服务器的community string
10.10.10.10是远端的服务器的ip地址
这个命令如果返回“IF-MIB::ifHCInOctets = No Such Object available on this agent at this OID”类似的错误的话,就说明远端的net-snmp不支持64位计数
反之如果返回的有几行含有“Counter64:”的话
那么表明是支持的

cactid 0.86g的bug

cactipollercmd.php改成cactid
如果cactid的版本是0.86g的话
由于环境变量变化了
所以导致系统找不到”perl”这个脚本执行程序而导致出错
多半是检测本地的状态的时候出错
出错一般是:

“WARNING: Result from SCRIPT not valid. Partial Result: …”

或者是:

“ERROR: Empty result [127.0.0.1]: ‘perl /usr/local/cacti-0.8.6j/scripts/linux_memory.pl”

解决方法:
Console–>Data Input Methods
然后把Data Input Method是”Script/Command“都点击开来看
把里面用到perl脚本的全改成/usr/bin/perl(perl的绝对路径)
例如:

/usr/bin/perl /scripts/unix_users.pl

cacti抓流量大于100M的机器的流量不准的问题

cacti要通过snmp来抓流量

当被抓机器的流量超过100M的时候

数据不出错的条件有二:

1,需要用snmp v2来抓数据;

2,需要用64位方式采集数据

难点在第二点

虽然从net-snmp5.2开始

就支持用–enable-mfd-rewrites参数打开64位数据采集

但是要命的是我们常用的rpm包里都没有加这个参数

所以我就把fedora core 3/4的net-snmp的srpm下下来

加上这个参数重新build了一下

用附件传上来了

下下去直接rpm -Uvh就可以了

注意redhat enterprise as4的net-snmp的版本是5.1.x

没有发布合适的srpm

因为他的kernel版本和fc3的差不多

直接用fc3的rpm也行
net-snmp-5.2.1.2-FC3.2.i386.rpm.zip
net-snmp-devel-5.2.1.2-FC3.2.i386.rpm.zip
net-snmp-libs-5.2.1.2-FC3.2.i386.rpm.zip

用cacti画多个设备的总流量图(Aggregating traffic of multi devices into one graph)

最近有需求,要了解业务线所用的流量

于是想到用cacti画一张业务线所有机器所用流量和的总流量图

本来cacti已经有每一台设备的流量图(数据)了

现在所要做的就是把需要的数据加起来,画在一张图上

我只知道这个东西做起来应该不难

但由于大家以前都习惯用mrtgcacti这个东东的中文资料不多

所以我最后在cacti的官方论坛forum.cacti.net 上翻出了这么一篇类似的解决方案

http://forums.cacti.net/post-42426.html

下面这是原文:

1. Create a new CDEF - Management/Graph Management/CDEFs:
- Click 'Add'
- Create as per the 2nd image above

2. Create a new Graph - Management/Graph Management:
- Click 'Turn Off Graph Debug Mode'
- Click 'Add'
- Leave 'Selected Graph Template' and 'Host' as 'None'
- Click 'create'
- Give your graph a destinctive title and click 'create'
- Add the first data source by clicking 'Add' beside 'Graph Items'
- select your first data source
- select your colour
- in 'Graph Item Type' select 'Area'
- in 'CDEF Function' select 'Bytes into bits'
- give the data source a title
- Click 'create'
- Click 'add' again and create a legend (all values the same as above, except 'Graph Item Type' is 'Legend')
- Add your second data source exactly at the first except 'Graph Item Type' is 'Stack'
- add legend for second data source as above
- Continue adding sources in the same fashion until you are done.

To get the total on the graph, add another Graph Item:
- use the same data source as your last data source
- select your colour
- in 'Graph Item Type' select 'Line 3' (use Line 2 or Line 1 for smaller lines)
- in 'CDEF Function' select 'Total All Data Sources and Bytes into Bits' (the one you created at the start)
- In Text Format, call it 'Total'.
- Click 'create'
- Click 'add' again and create a legend (all values the same as above, except 'Graph Item Type' is 'Legend')

Now you should have a graph with the output from different data sources, plus a total at the bottom.

 

这里作者应用的建CDEF的图我没有贴出来

其实就是新建一个名字叫“Total All Data Sources and Bytes into Bits”的CDEF,其

cdef=SIMILAR_DATA_SOURCES_NODUPS,8,*

这里的意思我想是把流量(bytes为单位)变成以bites为单位的流量

然后再建一张新的图

在新图的"graph items"里把要统计的数据(这里是网络设备的流量)"Add"进来

最后再添加一个"graph item"

用来画总流量曲线

他的Data Source就用上面最后一个graph itemData Source

CDEF function选开始建的"Total All Data Sources and Bytes into Bits"

(前面的graph itemCDEF function都选"Turn Bytes into Bits",他的cdef值是

cdef=CURRENT_DATA_SOURCE,8,*

Graph Item TypeLine1(Line2Line3都行,就是线条的粗细不一样)

(前面的graph item除了第一个选area外,都选stack

同样

还有个需要注意的:

就是每添加上面所讲的一个“graph item

还需要接着添加一个跟其匹配的"graph item"

这个"graph item"除了Graph Item Type选"legend"外其他都跟其匹配的"graph item"相同