1. Hyperic插件
Hyperic是插件式的。
从层次模块划分:配置(product plugin),服务发现(detector),数据收集也称为monitor(collector, measurement),事件跟踪(track),报警,处理(control),UI(HQU)。
从功能模块划分:JMX, Script,SQL Query,SNMP等插件,往往一个功能模块包含多个层次。
从业务模块划分:tomcat,mysql等
我们开发插件主要会集中在服务发现,数据收集,处理,UI上。目前script我们主要是通过nagios实现。
开发插件的两种方式:
1. 在Hyperic已有的插件基础上,只关心自己的监控逻辑(比如Mbean,sql, script,SNMP)实现,不关心hyperic插件的接口实现,只自定义了某种插件的一部分。
2. 实现hyperic的接口,用代码实现一个完整的hyperic插件。
ServerDetector
用来发现server和service。我们一般要插件化的都是server和service resource。Hyperic分为三个层级的资源,platform(物理服务器,操作系统,如windows,linux),server(如tomcat,mysql,jvm等),service(具体的资源服务,如缓存的大小)。
我们可以在控制台上将资源进行归类分组,
(1) 方便观察,同种类型的服务要观察的逻辑往往是一致的。
(2) 方便监控,如同组的某个服务失败认为这组服务整体就是有问题的
(3) 方便处理,同时处理整个组的服务
(4) 方便授权,定位相关责任人。某组服务是哪个小组负责开发的。
归类归组我们可以定义application和mixed 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 jar和xml描述符不需要再重启了,hq-server会自动load。
HQ-Agent端 目前,HQ-Agent还不支持热部署,需要重启agent。
1. SIGAR PTQL Hyerpic Sigar有一套进程表查询语法,用于发现运行的进程。Sigar ptql可以用来发现进程,从而发现server和service。一般一个进程对应于一个server。
详见:http://support.hyperic.com/display/SIGAR/PTQL
|