问题一、莫名出现了错误,现象是:
访问http://127.0.0.1/ganglia时,页面显示:
Warning: fsockopen() [function.fsockopen]: unable to connect to 127.0.0.1:8652 (Connection refused) in /usr/local/apache2/htdocs/ganglia/ganglia.php on line 316
There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: Connection refused
这时重启gmetad,输入命令:
service gmetad stop
显示:
Shutting down GANGLIA gmetad: [FAILED]
说明重启gmetad会无效。
输入命令:
service gmetad status
正常情况下,应显示:
gmetad (pid 17915) is running...
此时却显示:
gmetad dead but subsys locked
google解决办法,要么是办法无用,要么是解决了但语焉不详。
当我把ganglia搞死再搞好,再搞死再搞好,两次之后,我终于明白为毛语焉不详了!因为尽管调了两次,我也不知到底是哪一步让ganglia正常的。大ft。
把我能想到的修改的配置写写:
前提:我的apache的httpd.conf中,user是daemon,group是daemon
1、gmetad.conf中,
data_source "suc" localhost
setuid_username "daemon"
2、gmond.conf中
cluster {
name = "suc"
owner = "daemon"
latlong = "unspecified"
url = "unspecified"
}
3、更改rrd数据所在目录的用户(/var/lib/ganglia/rrds)
chown -R daemon:daemon /var/lib/ganglia
以上这些修改完,重启httpd、gmond、gmetad。
此时gmetad很可能还是gmetad dead but subsys locked,那就把上述配置改错,再改对,过程中每操作一步就记得重启httpd、gmond、gmetad。然后不知在什么时候gmetad就会忽然好的!
问题二,gmetric插入数据,...../gmetric -n li -v 0.5
出错,提示:Incorrect options supplied, exiting
疑惑的原因在于,明明昨天写了同样的命令,却执行成功了,而今天却不行。
于是看gmetric.c源文件中,有这么一段:
if( ! (args_info.name_given && args_info.value_given && args_info.type_given))
{
fprintf(stderr,"Incorrect options supplied, exiting.\n");
exit(1);
}
显然name或value或type不对,就会报错了。
也就是插入数据时,必须指明name、value、type,例如这样:
...../gmetric -n li -v 0.5 -t uint32
问题三、ganglia的页面显示不了图片,图片上有个小叉
比如向ganglia推送数据:
/usr/local/ganglia/bin/gmetric -c /etc/ganglia/gmond.conf -n mblog_item_p -v 1944 -t int32
页面上却看不到mblog_item_p的图,图片显示为小叉
这时查看一下apache的user/group和rrd数据库所在文件夹的用户组是否不一样
假设apache的httpd.conf中设置user:daemon,group:daemon
那么rrd所在的目录及子目录的用户也要是daemon,组也要是daemon
执行一下命令:
chown -R daemon:daemon /var/lib/ganglia/rrds
就搞定了。
问题四、打开http://ip/ganglia后,看到的是几个文件夹的文字,而不是增长的ganglia界面。
解决:发现apache放ganglia/web文件的地方,只有文件夹没有文件,不知道为什么会被apache自动删除了。将ganglia/web的所有内容重新copy到apache/ganglia下,重启httpd。注意apache/ganglia的用户和用户组也得时daemon。
问题五、打开http:ip/ganglia,图片不显示。并且提示错误信息:
Notice: Undefined offset: 0 in /usr/local/apache2/htdocs/ganglia2/ganglia.php on line 41
解决办法:
修改conf.php,因为我的rrdtool安装在/usr/local/rrdtool下
# Leave this alone if rrdtool is installed in $gmetad_root,
# otherwise, change it if it is installed elsewhere (like /usr/bin)
define("RRDTOOL", "/usr/bin/rrdtool");
改为:
define("RRDTOOL", "/usr/local/rrdtool/bin/rrdtool");