Tomcat 経由で JMX 監視を有効にする方法

Tomcat 経由で JMX 監視を有効にする方法

シミュレーション環境を構築する:
オペレーティングシステム: centos7
メモリ: 1G
1.8.0_131 より
トムキャット:8.0.48

ここでは環境の準備については説明しませんが、Tomcatのjmxを直接設定します。

1. tomcatのbinディレクトリに入る

# cd /opt/tomcat/apache-tomcat-8.0.48/bin/

2. 設定ファイルを編集する

# vim catalina.sh

3. 下の画像の上にパラメータを追加します

パラメータを追加した後の見た目

3.1. この構成では、jmx に接続するためにアカウントやパスワードは必要ありません。

CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.ホスト名=192.168.100.117
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

設定後のスクリーンショット:

パラメータの説明:

ホスト名: Tomcatを監視するサーバーのIPアドレスです

jmxremote.port: 開く監視ポート番号です

jmxremote.ssl: SSL接続を有効にするかどうか

authenticate: false は、監視にユーザー名とパスワードが必要ないことを意味します。

3.2. ユーザー名とパスワードを設定する必要があります。

CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.ホスト名=192.168.100.117
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"

設定後のスクリーンショット:

パラメータの説明:

authenticate: アカウント認証を有効にするには true

access.file: 権限ファイルのパス

password.file: パスワードファイルのパス

3.3. パスワード検証が設定されていない場合、この手順は不要です。ユーザーとパスワードの検証が有効になっている場合は、この手順が必要です。

3.3.1. JDKインストールディレクトリを見つける

ディレクトリがインストールされている場所がわからない場合は、次のコマンドで見つけることができます。

# java -verbose

3.3.2. jdkディレクトリに切り替える

# cd jre/lib/management/と入力します

ファイルディレクトリにjmxremote.access jmxremote.password.templateファイルがあるので、それをtomcatのconfディレクトリにコピーします。

# cp jmxremote.* /opt/tomcat/apache-tomcat-8.0.48/conf/

3.3.3. jmxremote.access ファイルを変更する

3.3.4. パスワードファイルの名前を変更します。

# mv jmxremote.password.template jmxremote.password

3.3.5 パスワードファイルの編集

# vim jmxremote.password

3.3.6. ファイルを編集した後、アクセスファイルとパスワードファイルの権限を変更する必要があります。そうしないと、Tomcat が起動しません。

# chmod 600 jmxremote.*

4. Tomcatを起動する

[root@ha bin]# ./startup.sh 
CATALINA_BASE を使用: /opt/tomcat/apache-tomcat-8.0.48
CATALINA_HOME の使用: /opt/tomcat/apache-tomcat-8.0.48
CATALINA_TMPDIR を使用: /opt/tomcat/apache-tomcat-8.0.48/temp
JRE_HOME の使用: /usr
CLASSPATH の使用: /opt/tomcat/apache-tomcat-8.0.48/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.0.48/bin/tomcat-juli.jar
Tomcatが起動しました。 

4.1. 上記の操作を完了したら、JDK が提供する jvisualvm.exe を使用して Windows に接続し、テストします。

ダブルクリックしてjmx接続を開きます

4.2. tomcatを再起動してjmxが接続できるかどうかをテストします。

# ./shutdown.sh

4.2.1. jmxに再度接続して接続できるかどうかを確認します

データ監視チャートを表示できず、接続もできません

なぜこの問題が発生するのでしょうか?

オンラインで示された結論は次のとおりです。

Tomcat の jmx リモート ヘルスには 2 つのポートが必要です。1 つは登録ポートで、もう 1 つはサービス ポートです。以前に指定したポート 9999 は登録ポートです。Tomcat は起動時にサービス ポートをランダムに指定します。登録ポートは 1 つしかないため、サービスを再起動した後、登録ポートは変更されていませんが、サービス ポートは変更されています。登録ポートを介して再度接続すると、以前のサービス ポートに接続できなくなります。サーバー接続を指定する方法はなく、サービス ポートはランダムです。

1つの方法は、JMXの固定登録ポートとサービスポートを設定し、jarパッケージを介して実現することです。

5. Tomcat の公式サイトにログインします (私の Tomcat バージョンは 1.8.0 ですが、公式サイトでは 1.8.5 のみ使用できることに注意してください)

ウェブサイト: https://tomcat.apache.org/

Tomcatのバージョンに応じてJMXリモートjarを見つけます

6. ダウンロードしたファイルをtomctaのlibディレクトリにアップロードします。

libディレクトリへのリンクを直接wgetしてjarパッケージを取得することもできます。

# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/extras/catalina-jmx-remote.jar

7. tomcatのconfディレクトリにあるserver.xmlファイルを編集する

# vim server.xml

次のコンテンツを追加します。

 <リスナークラス名="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
 rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" /> 

8. tomcatのbinディレクトリにあるcatalina.shを編集する

# vim catalina.sh

パラメータを削除するには:

-Dcom.sun.management.jmxremote.port=9999

9. Tomcat テストを再起動します。JMX 登録ポートは 10001、サービス ポートは 10002 です。

10. Tomcatを再起動して再度接続し、テストします。

以前に作成した jmx リモート接続をダブルクリックすると、接続できないことがわかります。これはなぜでしょうか。ここで、上記の接続の pid 番号に注意する必要があります。クエリを実行した後、この pid 番号は Linux の tomcat の pid 番号であることがわかりました。tomcat を再起動すると、新しい pid 番号が生成されるため、接続する場合は新しい接続を作成する必要があります。

11. 再度新しいjmx接続を作成すると、新しいpid番号が取得されます。

12. ここでテストは成功しました。したがって、zabbixを使用してjmxを使用してtomcatを監視する場合、tomcatの再起動やjmxポートが接続できないことを心配する必要はありません。

要約する

以上が編集者が紹介したTomcat経由でJMX監視を有効にするグラフィカルな方法です。皆様のお役に立てれば幸いです!

以下もご興味があるかもしれません:
  • Tomcat の JMX サービス メソッドの紹介
  • Tomcat 構成 JMX リモート接続

<<:  MySQL ストアド プロシージャの概念、原則、一般的な使用法の詳細な説明

>>:  Vue はインターフェースのスライド効果を実装します

推薦する

フロントエンド JavaScript ハウスキーパー package.json

目次1. 必須属性1. 名前2. バージョン2. 説明情報1. 説明2. キーワード3. 著者4. ...

データベースマルチテーブル接続クエリの実装方法の詳細説明

データベースマルチテーブル接続クエリの実装方法の詳細説明結合演算子を使用して複数のテーブルクエリを実...

Mac で MySQL バージョン 5.6 のパスワードを設定する方法

MySQLはインストール時に設定できますが、それより低いバージョンは設定できないようで、インストール...

MySQL マルチテーブル結合入門チュートリアル

接続は、実際の外部キー(人工的に作成された 2 つのテーブル間の対応関係を指します。対照的に、FOR...

DockerにTensorFlow環境を素早くインストールする方法

Docker に TensorFlow 環境をすばやくインストールし、TensorFlow を使用し...

Alibaba Cloud Serverにプログラムをデプロイし、ドメイン名を使用して直接アクセスする方法の詳細な説明

何もすることがなかったので、学習用に最も安いAlibaba Cloudサーバーを購入しました。年間3...

モバイルデバイス上の 1px 境界線を解決する最善の方法 (推奨)

モバイル デバイス向けに開発する場合、Retina 画面上で要素の境界線が太くなるという問題に遭遇す...

Linux rpm および yum コマンドとその使用法の詳細な説明

RPM パッケージ管理インターネット ダウンロード パッケージのパッケージ化およびインストール ツー...

純粋な CSS を使用してユーザーが Web ページのコンテンツをコピーするのを防ぐ方法

序文私自身の個人ブログを入力しているときに、ブログの詳細ページでさまざまなコンテンツをコピーするさま...

Linux スクリプトの基礎を詳しく紹介

目次1. スクリプトvim環境2. シェルスクリプトで環境を定義する方法3. シェルスクリプト内の翻...

MySQL テーブル作成外部キー エラーの解決方法

データベーステーブルA: テーブル task_desc_tab を作成します ( id INT(11...

MySQLインデックスの失敗の典型的なケース

目次典型的なケース付録: 一般的なインデックス障害の状況典型的なケース次の構造を持つ 2 つのテーブ...

MySQL 学習ノート: データ エンジン

現在のデータベースでサポートされているエンジンを表示します エンジンを表示 +-----------...