ganglia install

ganglia master install

1
yum -y install ganglia ganglia-web ganglia-gmond ganglia-gmetad ganglia-devel ganglia-gmond-python pcp-import-ganglia2pcp nordugrid-arc-gangliarc libnodeupdown-backend-ganglia

ganglia node install

1
yum -y install ganglia-gmond

ganglia 简介

1
与Cacti、Nagios、Zabbix等工具相比,Ganglia更关注整个集群的性能和可用性。可以用于集群的性能监控、分析和优化。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1.Gmetad程序:
Gmetad程序可以部署在集群内的任一个节点或者通过网络连接到集群的独立主机,它通过单播路由的方式与gmond通信负责周期性的到各个集群的数据源(datasource)节点去pool各个集群的数据,并更新到rrd数据库中.
一个数据源节点就是是一个gmond节点;一个gmetad节点可以设置多个数据源节点,每个数据源节点可以有多个备份,一个数据源节点失败了还可以从其他节点取数据.可以把Gmetad理解为服务器.
Gmetad只有TCP通道,一方面它向datasource发送请求,获取数据源节点的XML文件,另一方面会使用一个8651的默认TCP端口发布自身收集的XML文件,因此,Gmetad即可以从Gmond也可以从其他Gmetad节点获取XML数据

2.Gmond程序:
Gmond收集本机的监控数据,然后发送到集群内的其他机器上,并获取其他机器上的监控数据,Gmond之间通过udp通信,传递文件格式为XDL
Gmond收集到的数据供Gmetad读取,Gmond通过默认端口8649监听到Gmetad请求后将XML格式数据发送给Gmetad.可以将Gmond理解为客户端.
Gmond收集数据有muticast和unicast两种.Gmond本身具有UDP的发送(send)和接受(recv)通道以及TCP的接收(recv)通道.
其中UDP通道用于向其他Gmond节点发送或接收数据,TCP通道主要接受来自Gmetad的请求,向Gmetad发送XML文件.
在muticast模式下,Gmond节点之间通过UDP向多播目标相互传递数据.

Gmond节点模块结构主要有三个模块组成:
1.collect and publish模块
该模块周期性的调用一些内部命令获得metric data,然后将这些数据通过UDP通道发布给其他Gmond节点
2.Listen Threads模块
监听其他Gmond节点发送的UDP数据,并将这些数据存放在内存中
3.XML Export Threads模块
负责将数据以XML格式发布出去,比如交给Gmetad

在unicast模式下,多个Gmond节点通过UDP向单播的目标主机host的Gmond发送数据,Gmetad然后向目标主机的Gmond请求XML文件
在Unicast模式下,Gmond、Gmetad、rrd数据库以及web前端通常位于集群内的同一个节点上,该节点负责收集、存储、显示被监控的各节点的状态信息.
Web前端通常和Gmetad安装在同一个节点上,它从Gmetad中取数据,并且读取rrd数据库,生成图片显示出来.
1
2
3
4
5
6
7
8
9
10
11
在动手部署Ganglia之前,首先要对监控体系进行初步的规划.主要考虑两方面的问题:
1.单集群 or 多集群
如果节点较少,使用单集群配置起来更容易;如果节点很多,使用多集群可以避免广播风暴
但是需要为每个集群配置不同的组播通道(通过端口区分),同时要配置gmetad同时监听这多个通道

2.组播模式 or 单播模式
组播模式是ganglia的默认模式,同一集群的多个gmond之间互相交换数据,gmetad中可以指定集群中的任意一个或多个节点作为"data_source";
组播模式可能会带来网络的"抖动(Jitter)"据说设置节点的时钟同步可以避免抖动的问题;但如果网络环境不支持组播()比如Amazon’s AWS EC2)就需要使用单播模式
单播模式时,将大部分节点的gmond.conf中,global的deaf设置改为"yes",则这些节点只发生数据,不接收其他节点的数据,同样也不能作为gmetad中的"data_source"。
单播模式中还需要设置"send_metadata_interval",比如30秒,以强制发送元数据.
ganglia将一个gmetad覆盖的所有集群/节点称为一个grid.可以在/etc/ganglia/gmetad.conf中通过gridname指定其名称.多个grid的数据也可以聚合到一个上级gmetad中.

  1. ganglia 安装前选择

    1
    2
    3
    选择多集群,单播模式:
    server端: ganglia-web gmetad gmond
    client端: gmond
  2. 安装基础软件包

    1
    2
    3
    [root@10 ~]# yum makecache
    [root@10 ~]# yum -y install curl wget vim lrzsz net-tools dstat
    [root@10 ~]# yum -y install libart_lgpl-devel gcc gcc-c++ python-devel libconfuse-devel expat-devel apr-devel pcre-devel rpm-build libconfuse libconfuse-devel rrdtool-perl rrdtool-devel
  3. ganglia master install

    1
    2
    3
    4
    5
    6
    7
    [root@10 srv]# yum -y install ganglia ganglia-web ganglia-gmond-python ganglia-gmond ganglia-gmetad ganglia-devel

    [root@10 ~]# mkdir -p /mnt/data
    [root@10 ~]# cp -r /var/lib/ganglia /mnt/data/ganglia
    [root@10 ~]# chown -R apache.apache /mnt/data/ganglia/conf
    [root@10 ~]# chown -R apache.apache /mnt/data/ganglia/dwoo
    [root@10 ~]# chown -R ganglia.ganglia /mnt/data/ganglia/rrds
  4. 修改配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    [root@10 ~]# vim /etc/ganglia/gmetad.conf
    data_source "ssp" 10.0.2.15
    gridname "ssp"
    setuid_username ganglia
    xml_port 8651
    interactive_port 8652
    rrd_rootdir "/mnt/data/ganglia/rrds"
    case_sensitive_hostnames 0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    [root@10 ~]# vim /etc/ganglia/gmond.conf
    globals {
    daemonize = yes
    setuid = yes
    user = ganglia
    debug_level = 0
    max_udp_msg_len = 1472
    mute = no
    deaf = yes
    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
    # By default gmond will use reverse DNS resolution when displaying your hostname
    # Uncommeting following value will override that value.
    # override_hostname = "mywebserver.domain.com"
    # If you are not using multicast this value should be set to something other than 0.
    # Otherwise if you restart aggregator gmond you will get empty graphs. 60 seconds is reasonable
    send_metadata_interval = 30 /*secs */
    }
    cluster {
    name = "ssp"
    owner = "ssp"
    latlong = "unspecified"
    url = "unspecified"
    }
    host {
    location = "unspecified"
    }
    udp_send_channel {
    #bind_hostname = yes # Highly recommended, soon to be default.
    # This option tells gmond to use a source address
    # that resolves to the machine's hostname. Without
    # this, the metrics may appear to come from any
    # interface and the DNS names associated with
    # those IPs will be used to create the RRDs.
    #mcast_join = 239.2.11.71
    port = 8649
    ttl = 1
    host = 10.0.2.15
    }
    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 = yes
    }
    1
    2
    3
    4
    5
    [root@10 ~]# vim /etc/ganglia/conf.php
    <?php
    $conf['gweb_confdir'] = "/mnt/data/ganglia";
    $conf['gmetad_root'] = "/mnt/data/ganglia";
    ?>
  5. 启动服务

    1
    2
    3
    [root@10 ~]# systemctl start gmetad
    [root@10 ~]# systemctl start gmond
    [root@10 ~]# systemctl start httpd