【Hinemos】JMX監視のご紹介
投稿日: / 更新日:
■はじめに
こんにちは。
今回、この記事ではJMX監視についてご紹介します。
■JMX監視とは
JMXとは”Java Management eXtensions”の略称で、
Javaアプリケーションをモニターおよび管理するための仕様です。
JMX監視は、JMX接続により取得したJavaアプリケーションのヒープメモリサイズ等の内部状態を監視します。
Hinemosではクラス情報、ガーベジコレクタ情報、メモリ情報、
スレッド情報、JVMプロセス情報、Hinemos状態情報について監視する事が可能です。
■実際に監視設定を作成してみる
今回はJMX監視を使用して、Hinemosマネージャ内部の状態をチェックする設定を作成してみます。
設定したHinemosマネージャサーバ情報とHinemosマネージャで使用したJava情報は以下になります。
- OS:RHEL 8
- Hinemos ver.7.0.1
- Java:OpenJDK1.8.0
Hinemosマネージャ以外を監視対象とする場合ですが、
Hinemosマネージャの場合と一部前提条件が異なるため、今回は説明を省略します。
■前提条件
Hinemosマネージャ自身を監視対象とする際の前提条件は以下になります。
-
-
- 監視対象ノードのホスト名が、ホストのIPアドレスに正しく解決されている
- 監視対象ノードが、マネージャサーバからのJMXのリクエストに応答できる
- 監視対象ノードで、JMXリモートの設定をしている
-
●前提条件1:監視対象ノードのホスト名が、ホストのIPアドレスに正しく解決されている
監視対象ノードで以下のコマンドを実行し、ホスト名がホストのIPアドレスに正しく解決される必要があります。
1 2 |
(root)# hostname -i 【ホストのIPアドレス】 |
実行した際に”127.0.0.1″が出力された場合、正しくJMX監視が出来ません。
ループバックアドレス以外が出力されるようにOSの設定を見直してください。
●前提条件2:監視対象ノードが、マネージャサーバからのJMXのリクエストに応答できる
HinemosマネージャサーバからのJMXリクエストは、デフォルトで7100ポートを使用します。
既に7100ポートが使用されている場合、Hinemosマネージャ起動前にhinemos.cfgを以下のように変更してください。
ファイル配置場所:/opt/hinemos/etc/hinemos.cfg
1 |
JMX_PORT=【JMXが使用するポート番号】 |
●前提条件3:監視対象ノードで、JMXリモートの設定をしている
監視対象にしたいJavaプロセスの起動引数に以下を設定します。
以下を設定する場合、改行は入れず、1行で追加してください。
1 2 3 4 5 |
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=[任意のポート] -Dcom.sun.management.jmxremote.authenticate=false ※1 -Dcom.sun.management.jmxremote.ssl=false ※1 -Dcom.sun.management.jmxremote.rmi.port=[任意のポート] ※2 |
※1 上記の設定ではパスワード認証、SSLの設定は無効になっているため、必要な場合は適宜設定をしてください。
※2 ファイアウォールを介して監視をする場合、Javaプロセスの起動引数に追加してください。(Java 7 update4以降のバージョンでのみ設定可能)
監視対象をHinemosマネージャとする場合、hinemos.cfgで設定を行います。
デフォルトでは以下のように設定されているため設定不要です。
ファイアウォールを介して監視する場合は”-Dcom.sun.management.jmxremote.rmi.port=”を追加してください。
以下は2行目から7行目で改行を入れていますが、デフォルトで2行目は1行で記載しています。
ファイル配置場所:/opt/hinemos/etc/hinemos.cfg
1 2 3 4 5 6 7 |
### JVM - JConsole/VisualVM export JVM_JCONSOLE_OPTS=" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=${JMX_PORT} -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=${HINEMOS_ETC_DIR}/jmxremote.password -Dcom.sun.management.jmxremote.access.file=${HINEMOS_ETC_DIR}/jmxremote.access |
今回はファイアウォールを介して監視を行わないため、追加は省略します。
●JMX接続の認証情報
JMX監視設定で入力するJMX接続情報のデフォルトの認証情報は、以下になります。
- ポート番号:7100
- ユーザ:hinemos
- パスワード:hinemos
7100ポートが既に使用されているため変更した場合は、変更後のポート番号を認証情報として使用してください。
JMX接続ユーザはデフォルトでhinemosユーザのみ使用する事が可能です。
hinemosユーザ以外を使用する場合は、下記の2つのファイルを編集してください。
当該ファイル編集後にHinemosマネージャの再起動を行うことで設定が反映され、変更後のユーザを使用する事が可能です。
1.JMXの接続ユーザ、アクセス権限を変更する
ファイル配置場所:/opt/hinemos/etc/jmxremote.access
1 2 |
【ユーザ名】 【アクセス権限】 例)hinemos readwrite |
2. 1で設定したユーザのパスワードを変更する
ファイル配置場所:/opt/hinemos/etc/jmxremote.password
1 2 |
【ユーザ名】 【パスワード】 例)hinemos hinemos |
■監視設定
今回は以下のように、[Hinemos] 利用可能なヒープ容量を監視します。
判定値は0~300Mbyte未満を情報、
300~500Mbyte未満を警告、500Mbyte以上を危険となるように設定しました。
[条件] >[チェック設定]で入力するポート、ユーザ、パスワードについては、
前項の「●JMX接続の認証情報」で確認した値を入力してください。
■監視結果
監視結果は以下のように、利用可能なヒープ容量が189Mbyteであることが確認出来ました。
■おわりに
この記事ではJMX監視についてご紹介しました。
ご覧いただきありがとうございました。