GlassFish Performance Advisor 的なもの、自作しよう

しばらく前にサブスクリプション購入者に提供される GlassFish Enterprise Manager についてご紹介 (その 1234) しましたが、その中でも Performance Advisor その 2 でお見せしたような機能は比較的簡単に自作できるので、サブスクリプション購入していない人は自分で作ってしまいましょう。

何を作ればよいのか。GlassFish に備わっている管理ルールの機能で実現できるので、必要な MBean を作成すればよいことになります。今回は第 1 ステップとして、システム負荷と空きメモリの情報を監視する MBean を作ってみます。Performance Advisor だと、他にメモリーリーク、スループット、GC による停止時間、ログファイルの監視、など色々あるのですが、まずは簡単そうなものからということで。あと、他にアクション (監視データに異常があった際、通知メールを送信、など) の MBean も作りたいですが、それは後日書くことにします。

GlassFish 開発者ガイドの Custom MBeanについての章を参考にしつつ、下記のような MBean インタフェースと実装クラスを書いてみます。

package poormansem.mbean;

/\*\*
 \*
 \* @author ogino
 \*/
public interface SystemMonitorMBean {

	public int getFreeMemoryInPercent();

	public double getCPULoad();
}

そしてその実装クラス。 com.sun.management.OperatingSystemMXBeanを使っているので、Sun の Java での使用だけ想定してます。

package poormansem.mbean;

import com.sun.management.OperatingSystemMXBean;
import java.lang.management.ManagementFactory;

/\*\*
 \*
 \* @author ogino
 \*/
public class SystemMonitor implements SystemMonitorMBean {

	OperatingSystemMXBean osBean;
	long total;

	public SystemMonitor() {
		super();
		osBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
		try {
			total = osBean.getTotalPhysicalMemorySize();
		} catch(Exception ex) {
			throw new RuntimeException(ex);
		}
	}

	public int getFreeMemoryInPercent() {
		return (int) (100 \* osBean.getFreePhysicalMemorySize() / total);
	}

	public double getCPULoad() {
		return osBean.getSystemLoadAverage();
	}
}

これらを適当な jar にパッケージして配備します。管理コンソールを使って次のような感じで。管理コンソール左側ツリーの「カスタム MBean」 -> 「配備」とクリックし以下のように作成したカスタム MBean を配備します。

SystemMonitor_deploy01
SystemMonitor_deploy02

配備できたら動作確認です。jconsole を使って GlassFish のインスタンスに接続します。下のように 2 つの属性を監視できることを確認です。

SystemMonitor_deploy03

アクションと管理ルールの作成はまた次回。

Comments:

Post a Comment:
Comments are closed for this entry.
About

ogino

Search

Categories
Archives
« 4月 2014
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today