`
ldd600
  • 浏览: 101608 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
47bb354f-8b5f-3ea6-a206-c7ead38c741c
Hyperic插件开发不完...
浏览量:11068
社区版块
存档分类
最新评论

Hyperic插件开发不完全指南(二)--插件进阶

 
阅读更多

1.      Hyperic插件

Hyperic是插件式的。

从层次模块划分:配置(product plugin),服务发现(detector),数据收集也称为monitorcollector, measurement),事件跟踪(track),报警,处理(control)UI(HQU)

从功能模块划分:JMX, ScriptSQL QuerySNMP等插件,往往一个功能模块包含多个层次。

从业务模块划分:tomcatmysql

 

我们开发插件主要会集中在服务发现,数据收集,处理,UI上。目前script我们主要是通过nagios实现。

 

开发插件的两种方式:

1.      Hyperic已有的插件基础上,只关心自己的监控逻辑(比如Mbeansql scriptSNMP)实现,不关心hyperic插件的接口实现,只自定义了某种插件的一部分。

2.      实现hyperic的接口,用代码实现一个完整的hyperic插件。

 

ServerDetector

用来发现serverservice。我们一般要插件化的都是serverservice resourceHyperic分为三个层级的资源,platform(物理服务器,操作系统,如windowslinux),server(如tomcatmysqljvm等),service(具体的资源服务,如缓存的大小)。

 



 

 

 

 

我们可以在控制台上将资源进行归类分组,

(1)     方便观察,同种类型的服务要观察的逻辑往往是一致的。

(2)     方便监控,如同组的某个服务失败认为这组服务整体就是有问题的

(3)     方便处理,同时处理整个组的服务

(4)     方便授权,定位相关责任人。某组服务是哪个小组负责开发的。

归类归组我们可以定义applicationmixed group

 

MeasurementPlugin

MeasurementPlugin负责监控数据的收集,收集的数据如果出现异常,和警告配置不符,就会报警。

我们自定义measurementplugin主要会实现两个方法。

String translate(String template, ConfigResponse config)

getValue(Metric metric)

 

String translate(String template, ConfigResponse config)

解析配置的template模板

 

getValue(Metric metric)

plugin descriptor组装的metric对象获取对应metric的值。

 

2.      插件开发步骤

(1)     设计自己的监控服务,需要监控哪些数据,以哪种类型的图表展示。

(2)     开发自己的监控插件

(3)     配置plugin descriptor

(4)     测试plugin

目录:/home/hyperic/agent-4.5.1/bundles/agent-4.5.1/pdk/lib

java -jar hq-pdk-4.5.1.jar -p testMbean -m metric Availability -Dmetric-collect=default -Dmetric-indicator=true -Dmetric-cat=AVAILABILITY -Dmetric-iter=3000 -Djmx.url=service:jmx:rmi:///jndi/rmi://192.168.3.60:8849/jmxrmi -Djmx.username= -Djmx.password=

 

(1)     Deploy plugin

创建一个hq-plugins目录。

 

 

Hq-server

创建完hq-plugins目录后,需要重启,但之后添加新的plugin jarxml描述符不需要再重启了,hq-server会自动load

 

HQ-Agent

目前,HQ-Agent还不支持热部署,需要重启agent

 

1.      SIGAR PTQL

Hyerpic Sigar有一套进程表查询语法,用于发现运行的进程。Sigar ptql可以用来发现进程,从而发现serverservice。一般一个进程对应于一个server

 

<server name="My Single Process Server">

 

   <property name="PROC_QUERY" value="State.Name.eq=myprocess"/>

 

   <config>

     <option

       default="State.Name.eq=myprocess"

       name="process.query"

       description="Process Query for singleprocess">

     </option>

   </config>

  <plugin type="autoinventory" class="org.hyperic.hq.product.DaemonDetector" />

 

详见:http://support.hyperic.com/display/SIGAR/PTQL

 

 
  • 大小: 18.6 KB
  • 大小: 22.2 KB
分享到:
评论
1 楼 wenlinguo 2013-11-19  
写得不是很好理解

相关推荐

Global site tag (gtag.js) - Google Analytics