首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JMX in action第一篇

JMX in action第一篇

作者头像
Dylan Liu
发布2019-07-01 11:32:16
2970
发布2019-07-01 11:32:16
举报
文章被收录于专栏:dylanliudylanliu

一。监控可以做的事

1,监测平台和硬件的健康性

2,在应用层面上配置资源 (譬如数据库过载,可以手动调节连接数)

3,收集应用统计数据

4,调试选项,更改日志级别等

5,监视服务器的性能

实现方案:JMX

二,基本jmx条目

1,可管理的资源

包括任意的应用,设备或其他java可以调用包装的实体

2.MBean

Managed bean:满足jmx规范,具有特定名称和继承规范的java类

jmx包含3种bean:标准,动态,模版

MBean都驻扎在一个叫MBean Server的地方

3.MBean Server

管理一组MBean的java类,是jmx管理环境中的核心,使用注册的方式来查找Mbeans,

并且对注册的MBean暴露管理接口,提供方法来查找MBean

4.Jmx agent

提供一系列服务来管理MBean的一个java进程,是MBean Server的容器

agent可以有一组适配器和连接器来让远程不同的客户端使用自己,适配器可以映射协议,譬如http,snmp

连接器可以把agent暴露出来让客户端通过rmi,jini连接

5.协议适配器和连接器 Protocol adaptor and connector

存在与agent中,通过协议或连接暴露agent

6.管理应用 Management application

通过接口连接agent,管理其中MBean的应用程序

7通知 Notification

Mbean和MBean Server包装的事件,报警,或一般通知

8.设备 Instrumentation

定义如何实现管理资源的规范

三,jmx架构

描述

分布服务层

包含管理应用与代理层通信的各种组件

代理层

包含代理和MBean服务器

设备层

包含代表可管理资源的MBean

四。编码规则 for all MBeans

1,所有的MBean必须是具体的java类,即可以实例化非抽象的类

2,要有public的构造器

3,所有的MBean要么实现自己的MBean接口,要么实现DynamicMBean接口,接口要以MBean结尾

4.标准的接口和实现必须要在同一个包路径下,只能实现单个接口,多个接口实现不允许,但是接口继承后类再实现是可以的。

标准MBean就是实现了自己MBean接口的MBean(好拗口)

所有的MBean还可以实现NotificationBroadcaster接口,这个接口可以发布通知给监听者

五,标准MBean

1.接口组成

  • public级别的构造器constructor

MBean要被JMX管理,可以动态生成MBean,因此必须要有公开constructor

  • 属性(Attributes)

通过声明getter setter方法来暴露属性,所有以get(无参) set开头的方法被认为是属性的一部分

setter方法不能重载,属性不一致jmx认为是无效的

  • 操作(Operations)

非set get开头的方法,用来实现某些功能

  • 通知(Notifications)

通过实现NotificationBroadcaster接口发布通知

2.接口实现与类继承问题

I.单继承无接口

PrinterMBean<interface>

⬆️

Printer <class> ⬅️ CopiedPrinter<class>

CopiedPrinter具有PrinterMBean的相关方法和属性

II.继承与接口

PrinterMBean<interface> CopiedPrinterMBean<interface>

⬆️ ⬆️

Printer <class> ⬅️ CopiedPrinter<class>

由于MBean规范规定只能实现一个接口,MBean agent会查找最近的interface,因此CopiedPrinter只有CopiedPrinterMBean接口定义的相关属性和方法

但是接口继承是没有问题的,如果CopiedPrinterMBean继承了PrinterMBean的话,CopiedPrinter就会有这两个接口相关的属性和方法,见III.

III.接口继承

PrinterMBean<interface> ⬅️ CopiedPrinterMBean<interface>

⬆️ ⬆️

Printer <class> ⬅️ CopiedPrinter<class>

CopiedPrinter具有PrinterMBean相关属性和方法,但是这些并不是从Printer来的,而是从接口CopiedPrinterMBean接口继承来的

IV.接口继承非MBean接口

Printer<interface> ⬅️ CopiedPrinterMBean<interface>

⬆️

CopiedPrinter<class>

CopiedPrinter行为是由两个接口决定的,CopiedPrinterMBean继承了所有的方法

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档