Centos6.5部署、配置ganglia到自定义扩展

好记性不如烂笔头,一开始方法没对配置文件搞了很久,有必要记录下。
--------发现真好用特别是粘贴图片很方便!

Ganlia 简介
��Ganglia是一个监控服务器、集群的开源软件,能够用曲线图表现最近一个小时,最近一天,最近一周,最近一月,最近一年的服务器或者集群的cpu负载,内存,网络,硬盘等指标。Ganglia的强大在于:ganglia服务端能够通过一台客户端收集到同一个网段的所有客户端的数据,ganglia集群服务端能够通过一台服务端收集到它下属的所有客户端数据。

Centos6.5部署、配置ganglia到自定义扩展_第1张图片

软件安装
服务端安装:
安装gmetad # yuminstall -y ganglia-gmetad ganglia-devel
安装依赖图形软件rrdtool # yum install -y rrdtool(先确认已卸载旧版本# yum erase rrdtool -y)
安装httpd服务器 # yum install -y httpd
安装ganglia-web及php #yum install -yganglia-web php
客户端安装:
安装gmond #yum install -y ganglia-gmond

软件安装目录说明
ganglia配置文件目录:/etc/ganglia
rrd数据库存放目录:/var/lib/ganglia/rrds
httpd主站点目录:/var/www/html
ganglia-web安装目录:/usr/share/ganglia
ganglia-web配置目录:/etc/httpd/conf.d/ganglia.conf

配置服务端(gmetad)
1.将ganglia-web的站点目录连接到httpd主站点目录# ln -s/usr/share/ganglia/ /var/www/html/
2.修改httpd主站点目录下ganglia站点目录的访问权限,将ganglia站点目录访问权限改为ganglia:ganglia # chown -R apache:apache/var/www/html/ganglia/# chmod -R 755 /var/www/html/ganglia/
3.修改rrd数据库存放目录访问权限 将rrd数据库存放目录访问权限改为ganglia:ganglia,这个是默认权限,也可以在gmetad中修改为root或nobody,这边做相应修改 # chown -R ganglia:ganglia/var/lib/ganglia/rrds/
4.修改ganglia-web的访问权限:# vi/etc/httpd/conf.d/ganglia.conf

Order deny,allow
#Deny from all
#Allow from 127.0.0.1
#Allow from ::1
Allow from all
# Allow from .example.com

将ganglia-web的站点目录连接到httpd主站点目录# ln -s/usr/share/ganglia/ /var/www/html/
修改httpd主站点目录下ganglia站点目录的访问权限,将ganglia站点目录访问权限改为ganglia:ganglia

# chown -R apache:apache/var/www/html/ganglia/
# chmod -R 755 /var/www/html/ganglia/

修改rrd数据库存放目录访问权限
将rrd数据库存放目录访问权限改为ganglia:ganglia,这个是默认权限,也可以在gmetad中修改为root或nobody,这边做相应修改
# chown -R ganglia:ganglia/var/lib/ganglia/rrds/
修改ganglia-web的访问权限:# vi/etc/httpd/conf.d/ganglia.conf
5.配置服务端 gmetad.conf

#vi /etc/ganglia/gmetad.conf  监听端口号(默认是8649)。
data_source "host118" 192.xxx.xxx.118:8649
rrd_rootdir "/var/lib/ganglia/rrds" 

6.配置客户端 gmond.conf
# vi /etc/ganglia/gmond.conf globals内容可不做修改,

user = ganglia可以自行设置。
globals {
daemonize = yes
setuid = yes
user = ganglia
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = no
allow_extra_data = yes
host_dmax = 86400 /*secs. Expires (removes from web interface) hosts in 1 day */
host_tmax = 20 /*secs */
cleanup_threshold = 300 /*secs */
gexec = no
send_metadata_interval = 0 /*secs */
}
cluster {
name = "host118"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
mcast_join = 239.2.11.71
port = 8649
ttl = 1
}
udp_recv_channel {
mcast_join = 239.2.11.71
port = 8649
bind = 239.2.11.71
retry_bind = true
# Size of the UDP buffer. If you are handling lots of metrics you really
# should bump it up to e.g. 10MB or even higher.
# buffer = 10485760
}
tcp_accept_channel {
port = 8649
# If you want to gzip XML output
gzip_output = no
}

异常情况:
查看错误日志
tail -f /var/log/httpd/error_log
异常1:
Errors were detected in your configuration.
DWOO compiled templates directory '/var/lib/ganglia/dwoo/compiled' is not writeable.
Please adjust $conf['dwoo_compiled_dir'].
DWOO cache directory '/var/lib/ganglia/dwoo/cache' is not writeable.
Please adjust $conf['dwoo_cache_dir'].
in /usr/share/ganglia/eval_conf.php on line 126
解决方法:

mkdir -p /var/lib/ganglia/dwoo/compiled
mkdir -p /var/lib/ganglia/dwoo/cache
chmod 777 /var/lib/ganglia/dwoo/compiled
chmod 777 /var/lib/ganglia/dwoo/cache

异常2:
Starting httpd: httpd: apr_sockaddr_info_get() failed for localhost2
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
vi /etc/httpd/conf/httpd.conf
ServerName = localhost:80
There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: Permission denied
There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: Permission denied
解决方法一:
关闭selinux:把SELINUX=enforcing改成SELINUX=disable;需要重启机器。

vi /etc/selinux/config
SELINUX=disable

解决方法二:
使用命令setenforce 0来关闭selinux而不需要重启,刷新页面,即可访问!但此方法只是权宜之计。想永久修改selinux设置,还是要使用方法一。

异常3:
虚拟机时间不同步可能会导致数据无法同步,解决方法:
rdate -s time-b.nist.gov && hwclock -w (永久性)

异常4:
centOS 6.5防火墙未关闭,导致windows无法访问web,解决方法:
关闭命令: service iptables stop
永久关闭防火墙:chkconfig iptables off
两个命令同时运行,运行完成后查看防火墙关闭状态
service iptables statu
访问连接:服务端IP/ganglia

Centos6.5部署、配置ganglia到自定义扩展_第2张图片

Centos6.5部署、配置ganglia到自定义扩展_第3张图片

自定义扩展:
利用 modpython.so 可执行python脚本扩展,安装方法
yum install -y ganglia-gmond-python.x86_64

vi /etc/ganglia/gmond.conf
include ("/etc/ganglia/conf.d/*.pyconf") 指定执行conf.d下面的所有python脚本。

进入/etc/ganglia/conf.d 添加insight.conf文件:

Centos6.5部署、配置ganglia到自定义扩展_第4张图片
Paste_Image.png
modules {
  module {
    name = "insight"  #与脚本名称相同
    language = "python" #执行脚本语言
  }
}

 collection_group {
  collect_every = 2
  time_threshold = 90

  metric {
    #这里的name值要与insight.py中的d1里的name保持一致
    name = "get_server_status"  #与脚本相应的名称相同
    title = "--server_status--."  #页面显示title
    value_threshold = 0
  }
}

进入/usr/lib64/ganglia/python_modules,添加insight.py脚本文件(metric_init,metric_cleanup):

Centos6.5部署、配置ganglia到自定义扩展_第5张图片
Paste_Image.png
import subprocess  #导入使用python包
descriptors = list()  
def get_insight_status(name):  
    cmd = 'ps -ef|grep insight-server'   #定义命令
    result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
    out, err = result.communicate()  #读取结果
    if out.__contains__('/insight-server'):
        return 1
    return 0

def metric_init(params):  
    global descriptors  
    d1 = {  
        'name': 'get_insight_status',   #业务名称
        'call_back': get_insight_status,    #调用函数名称
        'time_max': 90,     # 最大调度间隔时间
        'value_type': 'uint',  
        'units': 'C',   
        'slope': 'both',  
        'format': '%u',  
        'description': 'service status',   #描述信息
        'groups': 'insight'     #所属模块
    }  
    descriptors = [d1]  
    return descriptors   #返回信息

def metric_cleanup():  
    pass  

    ```

你可能感兴趣的:(Centos6.5部署、配置ganglia到自定义扩展)