`
brandNewUser
  • 浏览: 446539 次
  • 性别: 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
分享到:
评论

相关推荐

    企业数字化转型暨数据仓库(数仓)建设方案.pptx

    企业数字化转型暨数据仓库(数仓)建设方案.pptx

    2024年中国LED切割灯行业研究报告.docx

    2024年中国LED切割灯行业研究报告

    目前世界上最好的机器学习&深度学习&神经网络&图神经网络&卷积网络&多层感知机画图工具&基于PPT

    在当今快速发展的人工智能领域中,一款集成了机器学习、深度学习、神经网络、图神经网络、卷积网络及多层感知机可视化功能的画图工具脱颖而出,成为全球范围内最受欢迎和认可的工具之一。这款工具不仅仅是一个简单的绘图软件,它的设计初衷是为了让复杂的网络结构和算法直观化,从而帮助研究者、学者及开发人员更容易地理解和分享他们的工作。 最令人印象深刻的特色之一是它基于PPT的编辑能力,这允许用户在熟悉的PPT编辑环境中创建、编辑和展示复杂的网络结构。用户可以利用拖拉组件、调整尺寸、修改颜色和形状等功能,无缝地将科研成果或项目展示集成到演示文稿中,极大地提高了工作的效率和表现力。 该工具不仅支持广泛的网络结构和模型,还包含丰富的库和模块,让用户能够轻松自定义和扩展自己的模型。它的用户界面友好、直观,无论是机器学习的新手还是资深研究员,都能快速上手,将精力更多地集中在创新和研究上,而不是图形的绘制和编辑上。 此外,它强大的共享和合作功能,使得团队成员可以实时共享他们的成果,促进了知识的交流和项目的进展。这款工具不仅改善了人工智能领域内部的工作方式,也为更广泛的受众提供了学习和理解复杂算法的窗口。 总

    2024年中国B型超声诊断设备行业研究报告.docx

    2024年中国B型超声诊断设备行业研究报告

    node-v11.0.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v10.8.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    web javaScript 获取终端ip 获取本地ip 获取本机ip地址,403报错解决方案

    内容概要:通过带着读者手写简化版 ajax请求框架,了解网络请求核心原理。在手写ajax的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:XMLHttpRequest、jsonp请求、作用域、资源处理等内容实现。 适用人群:具备一定编程基础,工作1-3年的大前端开发、网络安全的研发人员 适用场景:金融支付、设备识别、IP 限制、网络监控、技术测试 能学到什么:手写ajax请求、兼容jsonp请求、动态添加meta标签、动态获取本地ip、处理403网络请求报错。 阅读建议:可以在以下框架中使用:react、react-native、vue、javaScript、web、jquery框架。在webapp工程,获取终端ip 获取本地ip 获取本机ip地址,403报错解决方案。

    node-v4.4.6-x64.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Stm32学习笔记,超详细.txt

    Stm32学习笔记,超详细

    halcon 3D图像重建

    halcon 3D图像重建。

    node-v8.16.2-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    虚拟网卡库,Python或者C都可以调用

    虚拟网卡库,Python或者C都可以调用,虚拟网卡

    IEC 60364-7-721-2017 低压电气装置.第7-721部分:特殊装置或场所的要求.房车和机动房车中的电气装置.

    IEC 60364-7-721-2017 低压电气装置.第7-721部分:特殊装置或场所的要求.房车和机动房车中的电气装置.pdf

    BS 1363-1-2023 :13A插头、插座、适配器和连接装置第1部分:可重新布线和不可重新布线的13A保险丝插头规范

    BS 1363-1-2023 :13A插头、插座、适配器和连接装置第1部分:可重新布线和不可重新布线的13A保险丝插头规范.pdf

    平安业研一体 BizDevOps—降本增效与业务价值最大化实践-龚明杰.pdf

    平安业研一体 BizDevOps—降本增效与业务价值最大化实践-龚明杰

    2021年美赛A~F题36篇特等奖论文合集.pdf

    大学生,数学建模,美国大学生数学建模竞赛,MCM/ICM,历年美赛特等奖O奖论文

    node-v8.12.0-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2023年美赛特等奖论文-F-2311258-解密.pdf

    大学生,数学建模,美国大学生数学建模竞赛,MCM/ICM,2023年美赛特等奖O奖论文

    超低溫冷凍櫃 Revco RLE、Forma 89000、HERAfreeze HLE系列 安裝和操作

    超低溫冷凍櫃 Revco RLE 系列、Forma 89000 系列、HERAfreeze HLE 系列、 Thermo Scientific TLE 系列 安裝和操作

    node-v10.15.3-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics