运维监控平台之ganglia

1、ganglia简介

Ganglia 是一款为 HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以

监视和显示集群中的节点的各种状态信息,它由运行在各个节点上的 gmond 守护进程来采

集 CPU 、内存、硬盘利用率、 I/O 负载、网络流量情况等方面的数据,然后汇总到 gmetad

守护进程下,使用 rrdtool 存储数据,最后将历史数据以曲线方式通过 PHP 页面呈现。

Ganglia 的特点如下:

    良好的扩展性,分层架构设计能够适应大规模服务器集群的需要

   负载开销低,支持高并发

    广泛支持各种操作系统( UNIX 等)和 cpu 架构,支持虚拟

 2、ganglia组成

Ganglia 监控系统有三部分组成,分别是 gmond、 gmetad、 webfrontend,作用如下。

gmond: 即为 ganglia monitoring daemon,是一个守护进程,运行在每一个需要监测

的节点上,用于收集本节点的信息并发送到其他节点,同时也接收其他节点发过了

的数据,默认的监听端口为 8649。

gmetad: 即为 ganglia meta daemon,是一个守护进程,运行在一个数据汇聚节点上,

定期检查每个监测节点的 gmond 进程并从那里获取数据,然后将数据指标存储在

本地 RRD 存储引擎中。

webfrontend: 是一个基于 web 的图形化监控界面,需要和 Gmetad 安装在同一个节

点上,它从 gmetad 取数据,并且读取 RRD 数据库,通过 rrdtool 生成图表,用于

前台展示,界面美观、丰富,功能强大。下图是其结构

wKiom1e6kSGhJFy-AAE5HmmnynE120.png



环境规划(centos6.7)

服务器端  172.16.80.117      

 客户端    172.16.80.117 172.16.80.116 


3、ganglia的安装

[root@centos02 tools]# wget wget 
[root@centos02 tools]# rpm -ivh epel-release-6-8.noarch.rpm  
[root@centos02 tools]# yum install ganglia-gmetad.x86_64  ganglia-gmond.x86_64 ganglia-gmond-python.x86_64  -y

修改服务端配置文件
[root@centos02 tools]# vim /etc/ganglia/gmetad.conf 
data_source "my cluster"  172.16.80.117 172.16.80.116
gridname "MyGrid"


ganglia web的安装(基于LNMP环境)
[root@centos02 tools]# tar xf ganglia-web-3.7.2.tar.gz 
[root@centos02 tools]# mv ganglia-web-3.7.2 /application/nginx/html/ganglia

修改ganglia web的php配置文件
[root@centos02 tools]# vim /application/nginx/html/ganglia/conf_default.php
$conf['gweb_confdir'] = "/application/nginx/html/ganglia";

nginx配置
[root@centos02 ganglia]# cat /application/nginx/conf/nginx.conf
worker_processes  2;
events {
    worker_connections  1024;
}
http {


log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';



    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  www.martin.com martin.com;

        location / {
            root   html/zabbix;
            index  index.php index.html index.htm;
        }
        
         
        location ~ .*\.(php|php5)?$ {
            root  html/zabbix;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
               }

         access_log  logs/access_zabbix.log  main;        
   }

    server {
        listen       80;
        server_name  ganglia.martin.com;

        location / {
            root   html/ganglia;
            index  index.php index.html index.htm;
        }
      
             
        location ~ .*\.(php|php5)?$ {
            root   html/ganglia;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
               }

         access_log  logs/access_bbs.log  main;       

    }

###status
   server{
      listen 80;
      server_name status.martin.org;
      location / {
      stub_status on;
      access_log off;
        }
   }

}

访问测试,报错如下
Fatal error:Errors were detected in your configuration.
DWOO compiled templates directory '/application/nginx/html/ganglia/dwoo/compiled' is not writeable.
Please adjust $conf['dwoo_compiled_dir'].
DWOO cache directory '/application/nginx/html/ganglia/dwoo/cache' is not writeable.
Please adjust $conf['dwoo_cache_dir'].
in /application/nginx-1.6.3/html/ganglia/eval_conf.php on line 126

解决办法:
[root@centos02 tools]# mkdir /application/nginx/html/ganglia/dwoo/compiled
[root@centos02 tools]# mkdir /application/nginx/html/ganglia/dwoo/cache

[root@centos02 tools]# chmod 777 /application/nginx/html/ganglia/dwoo/compiled
[root@centos02 tools]# chmod 777 /application/nginx/html/ganglia/dwoo/cache
[root@centos02 html]# chmod -R 777 /var/lib/ganglia/rrds


修改客户端配置文件(所有的客户端都需要做)
[root@centos02 tools]# vim /etc/ganglia/gmond.conf 
cluster {
  name = "my cluster"    #这个名字要和服务器端定义的data_source后面的名字一样
  owner = "unspecified"
  latlong = "unspecified"
  url = "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
  host = 172.16.80.117      #这里我们采用单播方式,默认是组播
  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
}

4、再次访问测试

wKioL1e6wAXB1fl1AAIDhE_zm6U167.png


这里是整个集群的一个总的汇总图,而不是单台服务器的图,下面我们打开单台服务器的图看看

wKioL1e6wRGiE1uGAAGQKOfS9EE696.png

再来看看对同一指标,每台服务器一起显示的图

wKiom1e64UTDTxRbAAD4QHpvi9k830.png


5、扩展 Ganglia 监控功能的方法

默认安装完成的 Ganglia 仅向我们提供基础的系统监控信息,通过 Ganglia 插件可以实

现两种扩展 Ganglia 监控功能的方法。

1) 添加带内( in-band)插件,主要是通过 gmetric 命令来实现。

这是通常使用的一种方法,主要是通过 crontab 方法并调用 Ganglia 的 gmetric 命令来向

gmond 输入数据,进而实现统一监控。这种方法简单,对于少量的监控可以采用,但是对

于大规模自定义监控时,监控数据难以统一管理。

2) 添加一些其他来源的带外( out-of-band)插件,主要是通过 C 或者 Python 接口来

实现。

在 Ganglia3.1.x 版本以后,增加了 C 或 Python 接口,通过这个接口可以自定义数据收集

模块,并且可以将这些模块直接插入到 gmond 中以监控用户自定义的应用。


这里我们举例通过带外扩展的方式 来监控nginx的运行状态

配置 ganglia 客户端,收集 nginx_status 数据
[root@centos02 nginx_status]# pwd
/tools/gmond_python_modules-master/nginx_status
[root@centos02 nginx_status]# cp conf.d/nginx_status.pyconf /etc/ganglia/conf.d/
[root@centos02 nginx_status]# cp python_modules/nginx_status.py  /usr/lib64/ganglia/python_modules/
[root@centos02 nginx_status]# cp graph.d/nginx_* /application/nginx/html/ganglia/graph.d/

[root@centos02 mysql]# cat /etc/ganglia/conf.d/nginx_status.pyconf 
#

modules {
  module {
    name = 'nginx_status'
    language = 'python'

    param status_url {
      value = 'http://status.martin.org/'
    }
    param nginx_bin {
      value = '/application/nginx/sbin/nginx'
    }
    param refresh_rate {
      value = '15'
    }
  }
}

collection_group {
  collect_once = yes
  time_threshold = 20

  metric {
    name = 'nginx_server_version'
    title = "Nginx Version"
  }
}

collection_group {
  collect_every = 10
  time_threshold = 20

  metric {
    name = "nginx_active_connections"
    title = "Total Active Connections"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_accepts"
    title = "Total Connections Accepted"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_handled"
    title = "Total Connections Handled"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_requests"
    title = "Total Requests"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_reading"
    title = "Connections Reading"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_writing"
    title = "Connections Writing"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_waiting"
    title = "Connections Waiting"
    value_threshold = 1.0
  }
}

完成上面的所有步骤后,重启 Ganglia 客户端 gmond 服务,在客户端通过“ gmond

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
本文主要介绍zabbix在linux及windows下客户端的安装,网卡流量监控配置。 一、linux客户端安装 1. 编译软件 #useraddzabbix-s/sbin/nologin-M#./configure--prefix=/usr/local/zabbix-agent--enable-agent#makemakeinstall 2. 修改 agetn 配置 Server=127.0.0.1,192.168.115.31#本机即是agent和server127.0.0.1地址不可删除Server
通过定时执行python脚本,可以实现定期批量访问网站,如果发现网站打不开,第一时间发邮件到管理员邮箱进行预警 这里用的是python3.5 需要安装的插件: smtplib:发邮件需要用到 pycurl:访问网站时会需要用到 linecache:在读取txt网站清单时需要用到 具体思路: python程序从txt里面批量读取到网站的信息,通过Curl.py模拟浏览器去访问网站,并且把访问的结果写入到以自己的网站名称-日期.txt格式的文件中记录;有几种情况: 1、如果发现打不开了,直接发邮件提示网站已经
vSphere部署系列之09——HA和DRS群集管理 群集(Cluster)是将多台物理主机组织起来,群集管理其中所有主机的资源,形成一个大的资源池。群集中的所有的虚拟机可在池中的任意主机上自由移动,并且群集可做到快速扩容和HA故障冗余。群集的前提条件是要有共享存储,所有虚拟机及其配置文件必须驻留在共享存储器上。 在前面的博文章节中,已搭建了比较基础的实验环境,实现了vCenter对ESXi主机的管理,网络管理、共享存储管理。在这种情况下,各物理主机之间的计算资源(CPU、内存)是完全独立的,在某台主机出
昨天提交代码的时候自己的eclipse抽风了一下,发现自己的Web App Libraries里面的Jar包全部都不会自动加入到Web App Libraries中,导致之前配置的项目全都要重新手动配置,网上搜了一搜,找到了个解决方法: 参考链接http://blog.csdn.net/zhengzhb/article/details/6956130 定位到项目根目录中.settings里面的 org.eclipse.wst.common.component, 如下内容贴到里面保存一下,就能检测到WEB-

Linux NFS自动挂载autofs配置 - 2016-08-29 17:08:21

一、基于Linux下NFS文件系统的自动挂载方式, 前期准备环境两台Linux服务器: 准备一台NFS服务器端(系统环境centos6.5,ip地址192.168.100.100) 准备需要挂载NFS服务端的NFS客户端(系统环境centos6.5,ip地址192.168.100.101) 实施: 现在server端安装NFS保证能正常访问,我们这里通过yum工具安装即可 [root@nfsserver ~]# yum install nfs-utils rpcbind -y 通过修改NFS配置,共享/d
文本处理工具grep,正则表达式在Linux学习过程中很容易出现困惑与障碍的地方,这里分享下学习这方面内容的一些感受。 grep Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的‘ 模式(过滤条件) ’对目标文本逐行进行匹配检查;打印匹配到的行; ‘模式’:由 正则表达式 的元字符及文本字符所编写出的过滤条件。 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [
HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3.10.0-327.el7.x86_64 集群架构: 前端:HAProxy 1、虚拟FQDN:www.simpletime.net 2、VIP:192.168.39.1;DIP:172.16.39.50 3、调度服务器:Varnish1、Varnish2 4、调度算法:URL_Hash_Consistent 5
常见的文件系统 Linux文件系统: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap swap: 交换分区 光盘:iso9660 Windows:fat32, ntfs Unix: FFS, UFS, JFS2 网络文件系统:NFS, CIFS 集群文件系统:GFS2, OCFS2 分布式文件系统:ceph, moosefs, mogilefs, GlusterFS, Lustre 实验环境CentOS7.2 Linux根据其是否支持"journal"功

部署Tomcat及其负载均衡 - 2016-08-29 17:08:51

应用场景 : 使用3台虚拟机操作系统为redhat6.5 Nginx 服务器s3 192.168.90.103 nginx-1.6.0.tar.gz Tomcat服务器s1 192.168.90.106 1.jdk-7u65-linux-x64.gz 2.apache-tomcat-7.0.54.tar.gz Tomcat服务器s2 192.168.90.107 1.jdk-7u65-linux-x64.gz 2.apache-tomcat-7.0.54.tar.gz 实施准备 启动后关闭防火墙 Serv
DNS(域名系统),用于解析域名和IP地址之间的映射关系 协议使用端口: udp 53正常查询解析情况下使用udp53 tcp53当进行主从之间的区域传送时使用tcp53 DNS域的空间划分 DNS的查询方式 递归查询 当主机A要向DNS服务器发送查询主机D的请求时,服务器返回给A最终结果,这种方式就是递归查询,如果客户端要查找的内容直接在服务器上得到结果,刚给出的答案是一个权威答案,否则就是一个参考答案。 迭代查询 NS服务器接收到A的请求后,本地没有D的解析,则会通过以下过程获得 1、NS向根域询问D