满天星 发表于 2013-07-12 17:52

请问论坛兄弟们有熟悉cacti的PHP Script Server的Template的吗?

本帖最后由 满天星 于 2013-07-12 17:53 编辑

我这边使用cacti获取juniper设备的MIB信息,但是发现设备的index是四组数据,在cacti官方forum发了个帖子,好多天了都木有人回复:
http://forums.cacti.net/viewtopic.php?f=21&t=50423
有兄弟能帮忙研究下么?好多天了都没搞定,头都搞大了……
官网的manual、debug、howto都翻过了,没有发现太多php script server的具体debug或说明文档,因为设备不像普通的interface 计数,只有一个index来实现,需要针对多个index value进行处理。
不晓得具体的内容怎么搞了

sohusina 发表于 2013-07-14 11:57

你的Data Source Debug是怎样显示的?

满天星 发表于 2013-07-14 13:46

感谢楼上的兄弟,我的Data Query Debug Information在官方forum的帖子里,有一个quote中列出来了。
最近实在迫于无奈了,折腾PHP sourcecode,自己添加debug信息,尼玛搞了好久,发现是在host.php文件中添加data query时写入mysql database时有error,具体问题是:
执行到host.php的form_save()这一步,接着跟踪:
/* recache snmp data */
                run_data_query($_POST["id"], $_POST["snmp_query_id"]);
进入到lib/data_query.php文件,在run_data_query()里的
/* update the sort cache */
        update_data_query_sort_cache($host_id, $snmp_query_id);
有问题,继续跟进这个函数(也在这个文件里):
然后其中的这一行就挂了:
/* get a list of valid data query types */
        $valid_index_types = get_ordered_index_type_list($host_id, $data_query_id);

跟进get_ordered_index_type_list()函数,也在当前文件中,

里面有个while循环:
/* list each of the input fields for this snmp query */
        while (list($field_name, $field_array) = each($raw_xml["fields"])) {

这一步取xml中的index_order项,执行完以后就返回一个空的array了,
后面没有跟踪下去了,实在太累,压根不清楚流程,纯属一行一行加调试信息跟踪的,求熟悉的高手指点!
尼玛看来可能是官方的sourcecode不能处理这中多个index的情况,可能需要想办法修改

sohusina 发表于 2013-07-14 17:04

看了你官网的帖子,请问ss_juniper_kernel.php在哪里下载啊?会不会是这个脚本的问题? 你是不是按照官方文档操作php script server的?

满天星 发表于 2013-07-15 10:33

谢谢,ss_juniper_kernel.php是自己写的,完全修改官网的ss_host_cpu.php文件来的,而且所有的output均正常,官网论坛的帖子里面也get和index之类cmd的所有输出,木有问题哦

sohusina 发表于 2013-07-15 10:59

cacti的源码我前几个月调试过,不过是在windows平台下,我的理解大致是:cacti取到snmp或者自己写的脚本数据经过处理后,就会写入rrd文件,然后用php作图把rrd数据显示成图片。至于数据库如mysql里是不存储这类数据的。

sohusina 发表于 2013-07-15 12:36

试试把xml文件中如下的input换成output<jnxOperatingDescr>
<name>jnxOperatingDescr</name>
<direction>input</direction>
<query_name>jnxOperatingDescr</query_name>
</jnxOperatingDescr>

满天星 发表于 2013-07-17 00:26

sohusina 发表于 2013-07-15 12:36 static/image/common/back.gif
试试把xml文件中如下的input换成output
谢谢兄弟,这二天工作太忙,没顾上看论坛,我已经初步搞定了,官网论坛尼玛一直没人鸟,擦!
只需要在XML的index_order中加上jnxOperatingDescr就OK了,我debug的信息已经打印出来了,再官网论坛的回复里面,原因是jnxOperatingDescr这个index不在index_order中定义,所以if (in_array($index_order_array[$i], $xml_outputs)) 匹配为空,导致后面的一系列数据都是空的,无法生存rra文件……
这里有返回值后即可顺利生成rra,后续的读写数据就没问题了,非常感谢!
页: [1]
查看完整版本: 请问论坛兄弟们有熟悉cacti的PHP Script Server的Template的吗?