`
brandNewUser
  • 浏览: 456041 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ganglia工具用于监测服务器集群状态

阅读更多
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登录验证
 
  • 大小: 94.2 KB
  • 大小: 62.3 KB
  • 大小: 126.3 KB
  • 大小: 42.2 KB
  • 大小: 107.3 KB
分享到:
评论

相关推荐

    Ganglia系统状态监控软件安装配置手册

    Ganglia是一款强大的系统状态监控软件,主要用于监测各种性能指标,包括CPU利用率、内存使用、硬盘I/O、网络流量等,以帮助用户了解系统的工作状态并优化资源分配,提升整体性能。Ganglia的核心组件包括两个守护进程...

    集群监视项目Ganglia

    7. **验证配置**:在Web界面中查看集群状态,确保所有节点都被正确地显示出来,并且数据更新及时准确。 8. **优化与维护**:根据实际需求,可能需要进一步调整Ganglia的配置,例如设置数据保留时间、添加自定义指标...

    ganglia的安装配置

    它能够提供分布式系统的实时状态监测,尤其适合大规模集群环境。本文将基于提供的文件信息,深入解析Ganglia的安装、配置以及简单应用流程,为读者提供一份详尽的操作指南。 ### Ganglia的安装与配置 #### 安装...

    ganglia+nagios集成分布式监控系统

    2. **多级聚合**:Ganglia能够将来自各个节点的数据聚合到一个中心点,展示整个集群的整体状态。 3. **可视化界面**:Ganglia提供直观的Web界面,使得用户可以轻松地查看和分析监控数据。 4. **可扩展性**:...

    ganglia安装文档

    Ganglia是一款开源的分布式监控系统,主要用于监测大规模计算集群的资源使用情况,例如处理器速度、内存使用量等。该项目最初由UC Berkeley发起,旨在提供一种高效、可扩展的解决方案来跟踪和展示集群中的各种性能...

    大数据平台监控Ganglia加Nagios

    大数据平台监控是确保系统稳定性和高效运行的关键,Ganglia 和 Nagios 是两种广泛使用的开源监控工具,它们在监控大数据环境方面有着各自的优势。本文将详细介绍如何在大数据平台上结合使用Ganglia和Nagios进行监控...

    ganglia+hadoop+hbase nagios 学习参考链接

    在Hadoop集群中,Ganglia是常用的选择,因为它可以实时展示集群的健康状况,帮助管理员检测潜在问题。Ganglia通过Gmond(数据收集器)和Gmetad(数据聚合器)组件来工作,提供直观的Web界面展示监控数据。 Hadoop是...

    集群监控工具

    4. **可视化界面**:提供友好的图形化界面,直观展示集群状态,便于理解和管理。 5. **自定义指标**:允许用户添加自定义的监控项,以适应特定业务需求。 描述中提及的“可以查看集群中的机器消耗资源情况”,这...

    ganglia-3.7.2

    总结,Ganglia-3.7.2作为一款成熟的监控工具,其功能强大、易于部署,能有效帮助管理员监控和管理服务器集群,确保系统的稳定运行。无论是在学术研究、企业运维还是云计算环境中,Ganglia都发挥着至关重要的作用。...

    ganglia安装文档--亲自安装成功

    Ganglia是一种分布式监控系统,主要用于监测集群中的各个节点的状态,比如CPU使用率、内存占用情况等。它能够有效地帮助管理员掌握系统的整体运行状况,及时发现潜在的问题。本文将详细介绍在CentOS 5操作系统上安装...

    基于Ganglia和Nagios的云计算平台智能监控系统.pdf

    Ganglia监控集群或计算节点的性能指标,例如CPU、内存、网络、磁盘的使用情况,以及节点上运行的作业和服务的状态等。 Nagios是另一个功能强大的开源监控系统,它具备故障检测和恢复功能。Nagios能够监控网络服务、...

    ganglia-3.2.0.tar.zip

    Ganglia,作为一个开源的分布式监控系统,是IT领域的必备工具之一。其核心在于提供实时的性能数据监控,帮助管理员掌握系统的运行状态,及时发现并解决潜在问题。Ganglia 3.2.0版本是一个稳定且功能强大的监控解决...

    Linux环境下的高性能分子模拟计算集群平台的构建.pdf

    同时,性能监控工具(如Nagios、Ganglia)用于实时监测集群状态,及时发现并解决问题。 6. **应用实例**:文中提到使用该集群平台对等规、间规、无规三种不同聚丙烯的玻璃化转变温度进行了分子动力学模拟,结果与...

    构建高可用Linux服务器.第4版

    系统日志分析、性能监控工具(如Ganglia、Nagios)可以帮助运维人员实时了解服务器状态,预测和预防潜在问题。 最后,版本控制和配置管理工具,如Git和Ansible,可以确保系统配置的一致性和可追溯性,降低因人为...

    Hadoop集群监控工具-Nagios3.4.3详细配置与安装

    Nagios是一款强大的IT运维监控工具,主要用于监测网络服务、主机状态以及各种系统资源,如CPU负载、磁盘空间和网络连接等。它具备实时报警功能,可以通过邮件或短信及时通知管理员潜在的问题,确保系统的稳定运行。...

    linux 搭建 高性能集群

    8. **性能监控与优化**:监控工具如Nagios、Ganglia用于实时监控集群性能,发现瓶颈并进行优化。性能分析工具如gprof、perf可以帮助找出代码中的性能问题。 9. **安全与管理**:集群安全包括防火墙设置、访问控制、...

    Linux下集群系统的构建.pdf

    例如,通过Ganglia或Nagios可以实现集群监控,及时发现并解决潜在问题。 在安全性方面,集群系统需要考虑节点间通信的安全性,可以使用SSH密钥对进行身份验证,减少潜在的攻击风险。同时,防火墙设置也很关键,以...

    LINUX集群

    日常维护包括监控集群状态、定期检查节点健康、更新软件和修复潜在问题。 了解并掌握这些Linux集群的知识点,对于构建和管理高效、可靠的IT基础设施至关重要。通过合理设计和优化,Linux集群能为企业带来显著的性能...

Global site tag (gtag.js) - Google Analytics