简介

Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点,Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用 工作原理 gmetad可以部署在集群内任一台节点或者通过网络连接到集群的独立主机,它通过单播路由的方式与gmond通信,收集区域内节点的状态信息,并以XML数据的形式,保存在数据库中,由RRDTool工具处理数据,并生成相应的的图形显示,以Web方式直观的提供给客户端,gmond带来的系统负载非常少,这使得它成为在集群中各台机器中只运行一段代码,并不会影响用户性能,但是当大量小消息同时出现时,会发生网络 “抖动”影响节点性能,可以通过使节点时钟保持一致,来避免这个问题

前期准备

准备三台Centos7虚拟机,配置IP地址和hostname,同步系统时间,关闭防火墙和selinux,修改IP地址和hostname映射

ip hostname
192.168.29.147 monitor
192.168.29.134 node

从官网下载confuse-2.7.tar.gz、ganglia-3.7.2.tar.gz、ganglia-web-3.7.2.tar.gz源码包 安装epel源

[root@monitor ~]# yum install epel-release -y

[root@node ~]# yum install epel-release -y

安装基础包

[root@monitor ~]# yum install wget lrzsz vim lynx lsof unzip -y

[root@node ~]# yum install wget lrzsz vim lynx lsof unzip -y

安装依赖

[root@monitor ~]# yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpm-build glib2-devel dbus-devel freetype-devel fontconfig-devel gcc gcc-c++ expat-devel python-devel libXrender-devel libart_lgpl-devel pcre-devel libtool rrdtool rrdtool-devel

[root@node ~]# yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpm-build glib2-devel dbus-devel freetype-devel fontconfig-devel gcc gcc-c++ expat-devel python-devel libXrender-devel libart_lgpl-devel pcre-devel libtool rrdtool rrdtool-devel

部署基础服务

[root@monitor ~]# yum install httpd httpd-devel php rsync -y

部署ganglia监控本机

安装confuse

[root@monitor ~]# tar -zvxf confuse-2.7.tar.gz 
[root@monitor ~]# cd confuse-2.7
[root@monitor ~]# ./configure --prefix=/usr/local/ganglia-tools/confuse CFLAGS=-fPIC --disable-nls  --libdir=/usr/local/ganglia-tools/confuse/lib64
[root@monitor ~]# make && make install

安装ganglia

[root@monitor ~]# tar zxf ganglia-3.7.2.tar.gz 
[root@monitor ~]# cd ganglia-3.7.2
[root@monitor ~]# ./configure --prefix=/usr/local/ganglia --enable-gexec --enable-status --with-gmetad --with-libconfuse=/usr/local/ganglia-tools/confuse
[root@monitor ~]# make && make install
[root@monitor ~]# mkdir -p /usr/local/ganglia/var/run

修改配置文件

[root@monitor ~]# vi /usr/local/ganglia/etc/gmetad.conf 
data_source "my cluster" 192.168.29.147:8649

安装可视化界面

[root@monitor ~]# tar -zxvf ganglia-web-3.7.2.tar.gz  
[root@monitor ~]# mv ganglia-web-3.7.2 /var/www/html/ganglia
[root@monitor ~]# cd /var/www/html/ganglia/
[root@monitor ~]# useradd -M -s /sbin/nologin www-data
[root@monitor ~]# make install
[root@monitor ~]# chown apache:apache -R /var/lib/ganglia-web/
[root@monitor ~]# mkdir /var/lib/ganglia/rrds -p
[root@monitor ~]# chown -R nobody:nobody /var/lib/ganglia/rrds

启动服务

[root@monitor ~]# systemctl start httpd.service 
[root@monitor ~]# systemctl start gmetad.service
[root@monitor ~]# systemctl start gmond.service

[root@monitor ~]# netstat -tnlp |grep gmetad
tcp        0      0 0.0.0.0:8651            0.0.0.0:*               LISTEN      16874/gmetad        
tcp        0      0 0.0.0.0:8652            0.0.0.0:*               LISTEN      16874/gmetad        
[root@monitor ~]# netstat -tnlp |grep gmond
tcp        0      0 0.0.0.0:8649            0.0.0.0:*               LISTEN      17217/gmond        

访问http://192.168.29.147/ganglia 在这里插入图片描述

部署监控node

node结点安装confuse

[root@node ~]# tar -zxvf confuse-2.7.tar.gz 
[root@node ~]# cd confuse-2.7/
[root@node ~]# ./configure  --prefix=/usr/local/ganglia-tools/confuse CFLAGS=-fPIC --disable-nls --libdir=/usr/local/ganglia-tools/confuse/lib64
[root@node ~]# make && make install

node结点安装ganglia

[root@node ~]# tar -zxvf ganglia-3.7.2.tar.gz
[root@node ~]# cd ganglia-3.7.2/
[root@node ~]# ./configure --prefix=/usr/local/ganglia --enable-gexec --enable-status  --with-libconfuse=/usr/local/ganglia-tools/confuse
[root@node ~]# make && make install
[root@node ~]# mkdir -p /usr/local/ganglia/var/run

#启动服务
[root@node ~]#systemctl start gmond.service
[root@node ~]# netstat -tnlp |grep 8649
tcp        0      0 0.0.0.0:8649            0.0.0.0:*               LISTEN      14797/gmond     

修改monitor配置文件

[root@monitor ~]# vi /usr/local/ganglia/etc/gmetad.conf 
data_source "my cluster" 192.168.29.147:8649 192.168.29.134:8649

重启服务

[root@monitor ~]# systemctl restart gmetad.service 

访问http://192.168.29.147/ganglia 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

扩展监控项nginx

开源扩展监控脚本可从https://github.com/ganglia/gmond_python_modules获取 部署nginx服务

[root@monitor ~]# yum install nginx -y

#修改配置文件
[root@monitor ~]# vi /etc/nginx/conf.d/default.conf
server {
    listen       8000;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    location /nginx_status {
        stub_status   on;
        access_log  off;
	allow      all;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
}

#启动服务
[root@monitor ~]# systemctl start nginx

编写监控配置文件

[root@monitor ~]# mv /gmond_python_modules-master/nginx_status/conf.d/nginx_status.pyconf /usr/local/ganglia/etc/conf.d/

[root@monitor ~]# /usr/local/ganglia/etc/conf.d/nginx_status.pyconf 
modules {
  module {
    name = 'nginx_status'
    language = 'python'

    param status_url {
      value = 'http://192.168.29.147:8000/nginx_status'
    }
    param nginx_bin {
      value = '/usr/sbin/nginx'
    }
    param refresh_rate {
      value = '15'
    }
  }
}

部署监控收集文件和绘图文件

[root@monitor ~]# mkdir /usr/local/ganglia/lib64/ganglia/python_modules
[root@monitor ~]# mv /gmond_python_modules-master/nginx_status/python_modules/nginx_status.py /usr/local/ganglia/lib64/ganglia/python_modules/
[root@monitor ~]# mv /gmond_python_modules-master/nginx_status/graph.d/* /usr/share/ganglia-webfrontend/graph.d/

重启服务

[root@monitor ~]# systemctl restart gmetad.service  gmond.service 

查看图像 在这里插入图片描述