monitoring sun java system identity manager through jmx
DESCRIPTION
TRANSCRIPT
JMXによるIdentity Managerシステムの監視
岡崎 隆之ソフトウエア・ビジネス統括本部ソリューション・アーキテクトhttp://blogs.sun.com/okazaki
Copyright © 2007 Sun Microsystems K.K. 2
本セッションの概要
Identity Manager 7.0から導入されたJMXによるシステム監視機能についてご紹介します
Copyright © 2007 Sun Microsystems K.K. 3
本セッションがカバーしない範囲
• 監視の設計や実装について> どの項目を監視すべきか等
• JVMや AppServerの監視について
Copyright © 2007 Sun Microsystems K.K. 4
ご紹介内容
• JMX とは ?• Identity Manager と JMX• 設定• デモ• TIPS
Copyright © 2007 Sun Microsystems K.K. 5
JMXとは ?• アプリケーション、サービス、 JVMなどのリソースを監視するための標準 API> JSR 3: Java Management Extensions (JMX)
• リモートからの監視も可能> JSR 160: JMX Remote API
• JMXの用途> アプリケーション設定の参照と変更> アプリケーション動作に関する統計の蓄積と公開> 状態変更とエラー状況の通知
Copyright © 2007 Sun Microsystems K.K. 6
JMXの利点• 軽量である• セキュリティも十分考慮されている• スケーラブルな管理アーキテクチャを構築可能• 既存の管理ソリューションとの組み合わせが容易> ただし現状で SNMPアダプタが利用できる範囲は限定的
(後述 )
Copyright © 2007 Sun Microsystems K.K. 7
JMX仕様のカバーする範囲
Copyright © 2007 Sun Microsystems K.K. 8
JMXで得られる情報• Java VMの情報> 環境変数、 JVMオプション、メモリの利用状況、スレッドの動作状況など
• Web コンテナ・アプリケーションサーバの情報> パーフォマンス情報、キャッシュやコネクションの状態、コネクションプールやスレッドプールの情報
• アプリケーションの情報> アプリケーションによって公開されたMBean(管理される情報オブジェクト )の情報
Copyright © 2007 Sun Microsystems K.K. 9
JMXで得られる情報の例
メモリ
クラス
スレッド
CPU利用状況
Copyright © 2007 Sun Microsystems K.K. 10
その他JMXで可能なこと• JMX クライアント (監視端末 )にイベントを通知> エラーや警告などの通知> 状態の変更や処理の完了を通知
• 公開されている操作の呼び出し> ガーベジコレクションの実行> テストコネクションの実行> 状態の更新など
• 応用例> Web コンテナの自己管理/セルフチューニング
GlassFish v2以降
Copyright © 2007 Sun Microsystems K.K. 11
JMXRemoteとセキュリティ• ユーザ認証> MBeanサーバ側に用意されたユーザ認証を利用
• 通信経路の保護> TLS/SSLによる通信経路の保護
ユーザ名 /パスワードによる認証
Copyright © 2007 Sun Microsystems K.K. 12
SNMPと JMX• 設定により SNMP経由で JMXにアクセスが可能> 参照
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/management/snmp.html
• ただし現状 SNMP経由でアクセスできる情報は限定的> OSに関する情報、クラスパス/起動オプション、 JITに関する情報、クラスローダの情報、スレッドの情報、GCの情報、メモリの情報、メモリプールの情報、ロギングの情報
Copyright © 2007 Sun Microsystems K.K. 13
JMX対応監視ツール• JConsole> JDK 5以降に付属
• MC4J (http://mc4j.org)> オープンソースの監視コンソール
• Sun Java System Management Framework> Java ES 5 より付属> オープンソース版は http://proctor.dev.java.net
• Googleサーチ結果> HP Openview, AdventNet ManagemeEngine Applications
Manager, ...
Copyright © 2007 Sun Microsystems K.K. 14
JConsole• グラフィカルな管理ツール、 JDK標準なのでお手軽• JConsole プラグインを開発すれば高度な監視も可能
• 監視対象 (サーバ ) と JConsole( クライアント )のJDKバージョンは別々でもよい
Copyright © 2007 Sun Microsystems K.K. 15
Identity Managerと JMX• Identity Manager 7.0 より利用可能• クラスタ/サーバの状態、スケジューラの情報、リソースの情報、 ActiveSyncの状態を取得可能
Copyright © 2007 Sun Microsystems K.K. 16
クラスタの情報
項目 説明
ActiveServers
KnownServers
NewlyFailedServers
Alive
PollingInterval
動作中のIDMサーバのリスト
既知のIDMサーバのリスト
最近障害が検出されたIDMサーバのリスト
ポーリングスレッドが動作しているか?
ポーリングの間隔(ミリ秒)
ObjectName=IDM:type=Cluster
Copyright © 2007 Sun Microsystems K.K. 17
クラスタの情報(取得例 )ObjectName=IDM:type=Cluster
Copyright © 2007 Sun Microsystems K.K. 18
サーバの情報
項目 説明
CreateDate サーバが作成された日時
Creator サーバを作成したユーザ名
Deleted
最後のハートビート時刻
このサーバの状態およびその文字列表現
このオブジェクトが削除されたか?
Heartbeat・HeartbeatDate
State・StateString
ObjectName=IDM:type=Cluster,service=Server,name=”<サーバ名 >”
ObjectName=IDM:type=Server
項目 説明
Name サーバ名称
状態を表す値およびその文字列表現Status・StatusDisplay
Copyright © 2007 Sun Microsystems K.K. 19
サーバの情報 (取得例 )
クラスタ中のすべてのサーバについて情報を得られる JMX接続している
サーバのみ
ObjectName=IDM:type=Cluster,service=Server,name=”<サーバ名 >”
ObjectName=IDM:type=Server
Copyright © 2007 Sun Microsystems K.K. 20
リソースの情報
項目 説明
CreateDate リソースが作成された日時
Creator リソースを作成したユーザ名
Deleted
LastModificationDate 最終更新日時
MostRecentActivity このリソースに最後に行われたアクティビティ
このオブジェクトが削除されたか?
MostRecentActivityDateMostRecentActivityDateMS
このリソースに最後に行われたアクティビティの日時
ObjectName=IDM:type=Cluster,service=Resource,resType=”<リソースタイプ >”,name=”< リソース名 >”
リソースに対しては JMX経由でテスト接続が可能
Copyright © 2007 Sun Microsystems K.K. 21
リソースの情報(取得例 )ObjectName=IDM:type=Cluster,service=Resource,resType=”<リソースタイプ >”,name=”< リソース名 >”
すべてのリソースタイプ/リソースについて情報を取得可能
Copyright © 2007 Sun Microsystems K.K. 22
リソースへの接続テスト正常終了時 接続テストの実行
異常終了時
Copyright © 2007 Sun Microsystems K.K. 23
ActiveSyncの情報
項目 説明
ProgressString 進捗状況を示す文字列
ErrorStatusString エラーを示す文字列
LastPollAttempt
NextPollAttempt
LastModNum 最終更新シーケンス番号
LastModDate 最終更新日時
LastKnownServer
LastStartTime 最終実行日時
State, StateString
最後にActiveSyncが試みられた日時
次にActiveSyncが試みられる日時
最後にこのActiveSyncを開始したサーバ名
このActiveSyncの状態番号およびその文字列表現
ObjectName=IDM:type=Cluster,service=Synchronization,component=ActiveSyncresType=”<リソースタイプ >”,name=”< リソース名 >”
Copyright © 2007 Sun Microsystems K.K. 24
ActiveSync情報の取得ObjectName=IDM:type=Cluster,service=Synchronization,component=ActiveSyncresType=”<リソースタイプ >”,name=”< リソース名 >”
実行中、異常終了、スケジュールされた ActiveSyncのみ正常終了した ActiveSyncは表示されない
Copyright © 2007 Sun Microsystems K.K. 25
SPE Syncの情報
項目 説明
ProgressString 進捗状況を示す文字列
ErrorStatusString エラーを示す文字列
LastPollAttempt
NextPollAttempt
LastModNum 最終更新シーケンス番号
LastModDate 最終更新日時
LastKnownServer
LastStartTime 最終実行日時
State, StateString
最後にSPE Syncが試みられた日時
次にSPE Syncが試みられる日時
最後にこのSPE Syncを開始したサーバ名
このSPE Syncの状態番号およびその文字列表現
ObjectName=IDM:type=Cluster,service=Synchronization,component=SPE SyncresType=”<リソースタイプ >”,name=”< リソース名 >”
Copyright © 2007 Sun Microsystems K.K. 26
設定手順
• Identity Managerに対して設定• アプリケーションサーバに対して設定> ここでは Sun Java System Application Serverの場合> それ以外の AppServerはそれぞれのマニュアルをご覧ください
• JConsole で監視の確認
Copyright © 2007 Sun Microsystems K.K. 27
Identity Managerに対する設定 (1)(1)設定
(2)サーバ
(3)JMXを有効化したいサーバを選択
Copyright © 2007 Sun Microsystems K.K. 28
Identity Managerに対する設定 (2)
(1) JMXタブ
(2) デフォルトはオフなので、チェックをはずす
(3)ここにチェックが入ると有効化される
Copyright © 2007 Sun Microsystems K.K. 29
Application Serverに対する設定
JConsoleを使う場合はSecurityをオフにしておく
設定は Admin Serviceから
ユーザ認証はこのレルムが使用される
ポート番号を控えておく
Copyright © 2007 Sun Microsystems K.K. 30
JConsoleで接続 (1)
JDK 5の JConsole
JDK 6の JConsole
使うのはこちら
Copyright © 2007 Sun Microsystems K.K. 31
JConsoleで接続 (2)
JMX URLservice:jmx:rmi:///jndi/rmi://<ホスト名 >:<port>/management/rmi-jmx-connector
ユーザ名とパスワード
Sun Java System App Serverのデフォルトはadmin-realmに設定されているので、 SJSASの管理ユーザを入力(デフォルトインストールでは” admin”)
Copyright © 2007 Sun Microsystems K.K. 32
デモ
idm1
idmdb
idm2resource1
resource2
Solarisコンテナ
JConsole
Copyright © 2007 Sun Microsystems K.K. 33
コマンドラインからの JMX• 多くの場合、監視ツールは導入済みでそれが JMX対応とは限らない
• 多くの監視ツールはコマンドの実行による管理が可能
• Java VM上でスクリプト言語を使った JMXの利用> JRuby, JavaScript, Groovy, Pnuts, ... etc> カスタマイズが柔軟
Copyright © 2007 Sun Microsystems K.K. 34
JRubyの例#!/usr/bin/env jruby
include Javainclude_class 'javax.management.ObjectName'include_class 'javax.management.remote.JMXConnectorFactory'include_class 'javax.management.remote.JMXServiceURL'
jmxurl = 'service:jmx:rmi:///jndi/rmi://idm1:8686/jmxrmi'username, password = 'admin', 'adminadmin'
svcurl = JMXServiceURL.new(jmxurl)cred = java.lang.String[2].newcred[0], cred[1] = username, passwordenv = {'jmx.remote.credentials' => cred}conn = JMXConnectorFactory.connect(svcurl, env).getMBeanServerConnectionnames = conn.query_names(ObjectName.new('IDM:type=Cluster,service=Synchronization,component=ActiveSync,*'), nil)
names.each do |name|cname = name.get_canonical_nameif /name="(.+?)",resType="(.+?)"/ =~ cnameputs "Resource Type: #{$2}, Name: #{$1}, ”+ “Status: #{conn.get_attribute(name, 'StateString')}"
endend
Resource Type: FlatFileActiveSync, Name: My FlatFile, Status: downResource Type: LDAP, Name: SPE End-User Directory, Status: down
ActiveSyncのステータス取得
Copyright © 2007 Sun Microsystems K.K. 35
参考情報
• JRuby を使った JMXの利用方法> http://blogs.sun.com/nishigaya/entry/custom_jmx_client_
using_jruby> http://blogs.sun.com/nishigaya/entry/custom_jmx_client_
using_jruby1
Takayuki [email protected]://blogs.sun.com/okazaki
JMXによるIdentity Managerシステムの監視