Ganglia的基本结构
Ganglia是由gmond, gmetad和gweb三部分组成。
gmond(Ganglia Monitoring Daemon)是一种轻量级服务,安装在每台需要收集指标数据的节点主机上。gmond在每台主机上完成实际意义上的指标数据收集工作,并通过侦听/通告协议和集群内其他节点共享数据。使用gmond,你可以很容易收集很多系统指标数据,如CPU、内存、磁盘、网络和活跃进程的数据等。
gmetad(Ganglia Meta Daemon)是一种从其他gmetad或gmond源收集指标数据,并将其以RRD格式存储至磁盘的服务。gmetad为从主机组收集的特定指标信息提供了简单的查询机制,并支持分级授权,使得创建联合监测域成为可能,该组件真正对gmond集群进行轮询,并将指标数据保存到硬盘。
gweb(Ganglia Web)gweb是一种利用浏览器显示gmetad所存储数据的PHP前端。在Web界面中以图表方式展现集群的运行状态下收集的多种不同指标数据。
ganglia安装和配置
可以直接使用yum命令来进行ganglia的安装:
yum install ganglia-gmond -y yum install ganglia-gmetad -y yum install httpd php
安装ganglia-web只需要在主节点上安装,下载对应的tar包,修改MakeFile,执行make install,并安装在apache上启动httpd进程,就可以。
GDESTDIR = /var/www/html/ganglia2
同样地gmetad进程也不需要每个节点都存在,但是每个节点都需要有gmond进程,用于向gmetad上传数据。
如果这种方式启动,所有的服务都属于同一个分组(unspecified),如果我们有测试环境和solr环境需要对其进行分组统计压力,则需要对其进行配置的修改,在gmetad服务中:/etc/ganglia/gmetad.conf配置文件中,修改datasource部分:
data_source "Test" localhost 192.168.1.xx:8650 data_source "Solr" 192.168.1.2xx:8649
这表示数据来源,后面配置的ip分别为每个组的组长,但组长是不需要配置gmetad服务的,每个组长需要分配不同的端口号(因为IP是单播IP路由指南,ganglia实际的传输数据通过多播IP来进行)。
客户端配置在 /etc/ganglia/gmetad.conf 中,相对来说就比较复杂,根据具体的分组配置对应的cluster name以及端口即可:
cluster { name = "Solr" owner = "unspecified" latlong = "unspecified" url = "unspecified" } /* The host section describes attributes of the host, like the location */ host { location = "unspecified" } /* Feel free to specify as many udp_send_channels as you like. Gmond used to only support having a single channel */ 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 } /* You can specify as many udp_recv_channels as you like as well. */ 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 }
当前使用的Linux系统版本可以通过 cat /etc/issue查看:CentOS release 6.5,如果需要使用yum安装软件,本机保证能够连接到外网,但我们的服务器并不总是这样(外网ip数量有限,需要购买,而且不便宜),因此需要设置固定的ip值,重新启动,然后随时切换ip。
需要编辑网卡地址:/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 HWADDR=00:50:56:9x:4x:A0 TYPE=Ethernet UUID=49cb486a-1d12-44d7-b7c1-b012xx51823f ONBOOT=no NM_CONTROLLED=yes BOOTPROTO=static DNS1=192.168.1.1 IPADDR=xxx GATEWAY=xxx NETMASK=255.255.255.240
设置对应的IPADDR,GATEWAY,NETMASK,如果DEVICE=eth0,则需要使用下面的命令启动网卡:
>ifup eth0 Determining if ip address xxx is already in use for device eth0...
系统会判断该ip是否可用,并将其启用,启用完成后,使用ifconfig命令就可以看到对应的外网ip,此时就可以通过命令ifdown命令关闭对应的网卡即可。
如果没有配置的话,ganglia会默认使用eth0网卡,而eth0网卡一般被配置成外网地址,如果想要配置成使用内网网卡(例如为eth1),则在启动gmetad和gmond进程之前都需要执行下面的命令:
ip route add 239.2.11.71 dev eth1
这里的ip:239.2.11.71为组播地址,在gmond.conf配置文件中设置。注意在设置完成之后,需要将gmond服务重新启动才能生效。
分组完成之后,就可以在ganglia首页中看到所有分组,以及其物理视图(physical view,静态信息,当前服务器的CPU,内存等配置信息):
以及首页上的根据分组对应的服务器列表,这样更加能够对每个分组中服务器的特性进行监控,例如nginx比较耗费cpu核数以及网络带宽,metaq比较耗费硬盘,solr耗费cpu...针对不同类型的服务器,可以做到相应的监控报警:
附一张完整的首页整体图:
清除ganglia运行数据,ganglia的运行数据在gmetad节点上的目录:/var/lib/ganglia/rrds,/var/lib/ganglia-web/dwoo/cache(默认值)下,将该目录下的文件删除并重启gmetad进程即可。
监控JVM
借助jmxtrans,可以监测java进程内部的数据指标:
JMXTrans官网介绍 写道
jmxtrans is a tool which allows you to connect to any number of Java Virtual Machines (JVMs) and query them for their attributes without writing a single line of Java code. The attributes are exported from the JVM via Java Management Extensions (JMX). Most Java applications have made their statistics available via this protocol and it is possible to add this to any codebase without a lot of effort. If you use the SpringFramework for your code, it can be as easy as just adding a couple of annotations to a Java class file.
jmxtrans工具的安装可以直接从官网上下载对应的rpm包并命令安装即可:
sudo rpm -ivh jmxtrans-287e3ce6fe-0.noarch.rpm Preparing... ########################################### [100%] 1:jmxtrans ########################################### [100%]
安装完成后,jmxtrans并没有启动,需要增加配置文件: /var/lib/jmxtrans/solr.conf,该文件为收集java vm jmx的相关参数。我们当前监测的节点为solr,对应的host必须为-Djava.rmi.server.hostname设置的名称,端口为-Dcom.sun.management.jmxremote.port对应的端口:
{ “servers” : [ { "host" : "127.0.0.1", "alias" : "solr", "port" : "3000", "queries" : [ { "obj" : "java.lang:type=Memory", "resultAlias": "solr1.heap", "attr" : [ "HeapMemoryUsage", "NonHeapMemoryUsage" ], “outputWriters” : [ { "@class" : "com.googlecode.jmxtrans.model.output.GangliaWriter", "settings" : { "groupName" : "Product-JVM", "host" : "239.2.11.71", "port" : "8649" } }] }, { “obj” : “java.lang:name=CMS Old Gen,type=MemoryPool”, “resultAlias”: “solr1.cmsoldgen”, “attr” : [ "Usage" ], “outputWriters” : [ { "@class" : "com.googlecode.jmxtrans.model.output.GangliaWriter", "settings" : { "groupName" : "Product-JVM", "host" : "239.2.11.71", "port" : "8649" } }] }, { “obj” : “java.lang:type=GarbageCollector,name=*”, “resultAlias”: “solr1.gc”, “attr” : [ "CollectionCount", "CollectionTime" ], “outputWriters” : [ { "@class" : "com.googlecode.jmxtrans.model.output.GangliaWriter", "settings" : { "groupName" : "Product-JVM", "host" : "239.2.11.71", "port" : "8649" } }] }, { “obj” : “java.lang:type=Threading”, “resultAlias”: “solr1.threads”, “attr” : [ "DaemonThreadCount", "PeakThreadCount", "ThreadCount", "TotalStartedThreadCount" ], “outputWriters” : [ { "@class" : "com.googlecode.jmxtrans.model.output.GangliaWriter", "settings" : { "groupName" : "Product-JVM", "host" : "239.2.11.71", "port" : "8649" } }] }, { “obj” : “solr/collection1:type=queryResultCache,id=org.apache.solr.search.LRUCache”, “resultAlias”: “solr1.queryCache”, “attr” : [ "warmupTime","size","lookups","evictions","hits","hitratio","inserts","cumulative_lookups" ,"cumulative_hits","cumulative_hits","cumulative_hitratio","cumulative_inserts","cumulative_evictions" ], “outputWriters” : [ { "@class" : "com.googlecode.jmxtrans.model.output.GangliaWriter", "settings" : { "groupName" : "Product-JVM", "host" : "239.2.11.71", "port" : "8649" } }] }, { “obj” : “solr/collection1:type=searcher,id=org.apache.solr.search.SolrIndexSearcher”, “resultAlias”: “solr1.searcher”, “attr” : [ "maxDoc","numDocs","warmupTime" ], “outputWriters” : [ { "@class" : "com.googlecode.jmxtrans.model.output.GangliaWriter", "settings" : { "groupName" : "Product-JVM", "host" : "239.2.11.71", "port" : "8649" } }] }] }] }
至于其他的选项,直接参考对应的应用中的jmx选项即可,并配置对应的名称,host以及port需要对应ganglia组播的主机名称以及datasource端口。
配置完成后,就可以直接启动了,但启动需要满足jps安装在某个特定位置:
sudo /etc/init.d/jmxtrans start 正在启动 jmxtrans:Cannot execute /usr/bin/jps -l! [失败]
如果没有安装成功,修改 /usr/share/jmxtrans/jmxtrans.sh 文件指定其他jps 目录即可。
传输成功后,就可以在该服务器中能够查看到对应的metric group正常显示出来,以下是配置的product heap jmx相关属性:
Ganglia的一些实用工具
更多的用户贡献的module,请查看 https://github.com/ganglia/gmond_python_modules
ganglia-alert :获取gmetad数据,并报警 https://github.com/ganglia/ganglia_contrib/tree/master/ganglia-alert
gmetad-health-check:监控gmetad服务状态,如果down掉,则restart服务, https://github.com/ganglia/ganglia_contrib/tree/master/gmetad_health_checker
chef-ganglia:用chef部署ganglia, https://github.com/ganglia/chef-ganglia
ansible-ganglia: 使用ansible自动化部署ganglia,https://github.com/remysaissy/ansible-ganglia
ganglia-nagios: 集成nagios和ganglia,https://github.com/ganglia/ganglios
ganglia-api : 对外提供rest api,以特定格式返回gmetad收集到的数据, https://github.com/guardian/ganglia-api
自己实现监控数据指标:Metrics
Metrics 是一个 Java 库,提供了用于记录系统指标的各种工具,基本上是我们自己实现的 MetricMBean 的最佳替代品,功能强大,并且支持很多常用组件如 Jetty,Ehcache,Log4j 等,并且可以发送数据到 Ganglia。如果早点发现这个,我可能就不会自己写上面介绍的那一套方案了。对了,它还有 Clojure 绑定,如果是 Clojure 应用,那更可以考虑使用它了。
ganglia登录验证
相关推荐
走进ganglia之集群配置
从系统管理员接手服务器和主机管理以来,像应用监控这样的工具就成了他们的好帮手。其中比较有名的有 Nagios、Zabbix、Icinga和Centreon。以上这些是重量级的监控工具,让一个...Ganglia能够让你以集群(按服务器组)和
集群资源监控工具集群资源监控工具集群资源监控工具集群资源监控工具
集群级监控工具ganglia。这是一个非常好用的,监控集群级别的监控工具。可以汇总机器服务器的所有资源,比如内存,cpu,磁盘;便于你了解整个集群的负载情况。
ganglia 集群监控 ganglia依赖包 附带监控脚本 安装文档说明
Ganglia系统状态监控软件安装配置手册
服务器监控软件ganglia安装包及其安装文档,非常详细,按照文档操作就能完成安装
Ganglia是一个集群监控工具,由UC Berkeley创建并开源。Ganglia的中文意思是神经中枢,现在支持多部分操作系统(包括linux、unix、windows),可支持2000个节点的网络监控(当然这不是上限,只是一个大集群使用的...
ganglia monitor cluster
它将在轮循数据库中存储数据。随着捕捉的数据变得越来越旧,解析的精确性将变得越来越低。这将占用很少的内存并且在大多数情况下仍然有用。
Ganglia3.4安装配置 Ganlia分布式集群监控系统安装手册 用Ganglia监控hadoop集群
Ganglia分布式集群监控系统安装手册 - 千秋大业奋当先 - 博客频道
ganglia监控工具,适用于服务器集群监控,能够监控CPU、网络、IO等等
Ganglia作为一款最常用的Linux环境中的监控软件,它擅长的的是从节点中按照用户的需求以较低的代价采集数据。但是Ganglia在预警以及发生事件 后通知用户上并不擅长。最新的Ganglia已经有了部分这方面的功能。可我们...
Ganglia是一个基于多点传送的监听/告知协议来监控集群的状态,它使用一个点对点树来访问集群并且可以统计其综合的信息。Ganglia可以广泛地使用像XML这样的技术来表示数据;使用XDR技术来聚合、轻化数据传送;使用...
ganglia+依赖包
ganglia安装配置ganglia安装配置ganglia安装配置ganglia安装配置ganglia安装配置
ganglia各种系统监控扩展脚本.欢迎前来下载使用.
Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,...