一种 使用G anglia监控外部 程序 的 方法
目录
概述
在 集群环境中, 实时监测 各个服务的状态 , 及时了解集群的运行情况, 对 集群管理很重要,其中 G anglia 在 这方面使用比较广泛,本文介绍一种使用 G anglia 监控外部 程序 的 方法 。
G anglia 架构
先简单 了解一下 G anglia 的 机制, 上 一张 G anglia 的 架构图, 其中 gmond 是 一个守护进程,它运行在每一个需要监测的节点上,收集监测数据,发送和接收在同一组播或单播通道上的统计信息。 Gmetad 也是 一个守护进程,它定期检查 gmond , 从那里拉取数据,并将他们的指标存储在 RRD 存储 库中。 通过 RRD Tool 可以 查询多个集群 并 聚合 监控 指标 数据 , 同时 它也被 用于生成 用户界面 Web 前端 。 更多 G anglia 技术 细节可以网上了解下,这里就不多说明了。
实现方式
外部 程序 通过引入 JMXetric 实现 监控数据的收集和发送。JMXetric 是 一个 可以 驻留在 JVM中的agent程序, 它会 定时 拉取 MBean的 数据,并把数据发送到 G anglia , 从而 实现 对外部程序运行状态的监控。 数据 流向如下图示。
下面 我以添加对 S olr 监控 为例进行说明:
1 、在 G anglia data_Source 中 增加 Solr 配置 条目,
这里 增加了 UDHSolrServer 条目,用于 监控 S olr 集群 ,其中 udh-yf-dev-28.yonyou.com 为 gmetad 所在 主机名,当然 这里 也可以把所有 ganglia 集群 里主机都配上,其中 8811 是 数据监控和收集端口。
2 、引入 JMX etric , 在 Solr 的启动参数里,增加 以下 启动参数:
这样 当 Solr 服务启动 后, JMXetric 会 驻留在 S olr 的 JVM 中 ,定时向 Ganglia 发送 监控数据。
其中 JMXetric 监控 哪些数据,向哪里发送数据都是通过 配置 文件进行定义。
3 、配置 文件 jmxetric.xml
假如 我们只监控 JVM Momery , JVM Threads , JVM GC 三类 信息,具体配置如下:
4 、 Ganglia 收集 数据后,会存储在 RRD 库 中,我们通过 RRDT ool 可以 获取收集到的时间序列数据,用于图标展示,下图就是收集到的 S olr 三 类 数据 的图标展示。