以普通用户运行Ganglia监控框架

来源:互联网 发布:linux上安装oracle 编辑:程序博客网 时间:2024/05/16 23:41
现在有这样的一个应用场景:需要以普通用户运行Ganglia监控框架,具体的来说就是以普通用户运行Ganglia中的gmond,gmetad和gweb。
接下来分别介绍。
一、以普通用户运行gmond
通过"man gmond"可知,可通过"--conf"命令行参数来指定运行gmond时所需要的配置文件路径。

在gmond的配置文件中的globals小节下有两个相关属性:setuid和user。如果setuid属性值为yes,那么运行gmond时会将进程的EUID设置为user属性值对应的用户的UID,这需要root权限。而现在需要以普通用户运行gmond,因此设置setuid属性的属性值为no。


二、以普通用户运行gmetad
通过"man gmetad"可知,可通过"--conf"命令行参数来指定运行gmetad时所需要的配置文件路径。
在gmetad的配置文件中有3个相关属性:setuid,setuid_username,rrd_rootdir。
如果setuid属性的属性值为on,那么运行gmetad时会将进程的EUID设置为setuid_username属性值对应的用户的UID,这需要root权限。而现在需要以普通用户运行gmetad,因此设置setuid属性的属性值为off。

rrd_rootdir属性的默认值为/var/lib/ganglia/rrds,在该值对应的目录下增加文件需要root权限或者当前用户是nobody。而现在需要以普通用户运行gmetad,因此设置rrd_rootdir属性的属性值为该普通用户具有操作权限的目录路径。


三、以普通用户运行gweb
要运行gweb,首先得运行apache(在作者的环境中,具体是apache2),因此接下来分为两个步骤来讲。
3.1、以普通用户运行apache2
一般是通过"apache2ctl"脚本来管理"apache2"的运行,通过"less apache2ctl"可知,可通过"APACHE_CONFDIR"环境变量来指定运行apache2时所需要的配置文件的所在目录。因此在运行"apache2ctl"脚本前,首先执行如下命令:
APACHE_CONFDIR=自定义apache2配置文件所在目录路径export APACHE_CONFDIR

配置文件所在目录的内容结构如图1所示。

                         图1


其中apache2.conf是主配置文件,它会加载conf-enabled,mods-enabled,sites-enabled目录下的内容和ports.conf的内容,apache2.conf主配置文件和它所加载的内容中会用到一些环境变量,这些环境变量的值在envvars文件中配置。
在ports.conf中和site-enabled/000-default.conf中配置了apache2监听80端口,而绑定0-1024端口需要root权限,而现在需要以普通用户运行apache2,因此修改ports.conf中和site-enabled/000-default.conf中的监听端口为大于1024的某个端口。
在site-enabled/000-default.conf中配置了Web项目的存放目录,默认值为/var/www/html,在该目录下增加文件需要root权限,而现在需要以普通用户运行apache2,因此修改该值为普通用户有权限进行操作的目录路径NEWDIR。与该值对应的是在apache2.conf中配置有允许访问的几个目录路径,本来相应地含有/var/www,现在需要改成NEWDIR或者NEWDIR的父路径。
在envvars文件中配置的环境变量值很多都要求运行的时候具有root权限,因此都得做相应的修改,以使得以普通用户运行时不会出错。
3.2、以普通用户运行gweb
安装gweb的方式是下载ganglia-web.tar.gz包,解压,然后进入该目录,运行"make install"。
在其中的Makefile中的“User configurables”小节下的几个变量原先的值配置都要求运行时具有root权限,因此都得做相应的修改,以使得以普通用户运行时不会出错。
尤其是GDESTDIR和GMETAD_ROOTDIR变量:GDESIDIR变量表示apache2的Web项目存放目录(需要跟apache2中site-enabled/000-default.conf文件的相应配置对应起来);GMETAD_ROOTDIR表示gmetad的RRDFile存放目录(需要跟gmetad.conf中相应的配置对应起来)。
0 0