HawtIO 診断コンソールガイド
Red Hat build of HawtIO を使用したアプリケーションの管理
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
HawtIO は、Red Hat HawtIO 対応アプリケーションを表示および管理するためのエンタープライズ監視ツールを提供します。これは、実行中の HawtIO 対応コンテナーを監視および管理するためにブラウザーからアクセスする Web ベースのコンソールです。HawtIO はオープンソースの HawtIO ソフトウェア (https://hawt.io/) に基づいています。HawtIO 診断コンソールガイドでは、HawtIO を使用してアプリケーションを管理する方法を説明します。
このガイドの対象読者は、Apache Camel エコシステムの開発者および管理者です。このガイドでは、Apache Camel と組織の処理要件をよく理解していることを前提としています。
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 HawtIO の概要 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、本番環境でのテクノロジープレビュー機能の実装は推奨しません。
テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。サポート範囲の詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
HawtIO は、Red Hat build of Apache Camel および Red Hat build of AMQ 用の診断コンソールです。これは、React や PatternFly などの最新の Web テクノロジーでビルドされた、プラグ可能な Web 診断コンソールです。HawtIO は、デプロイされた 1 つ以上の HawtIO 対応コンテナーの詳細を確認および管理するための中央インターフェイスを提供します。HawtIO は、HawtIO スタンドアロンをインストールするか、HawtIO on OpenShift を使用することで利用可能になります。HawtIO で表示および管理できるインテグレーションは、実行中のプラグインによって異なります。HawtIO およびシステムリソースの監視、更新の実行、およびサービスの起動と停止を行うことができます。
プラグ可能なアーキテクチャーは Webpack Module Federation に基づいており、高い拡張性を有します。プラグインを使用して HawtIO を動的に拡張したり、JVM 内のプラグインを自動的に検出したりできます。HawtIO には、すでに プラグイン が組み込まれているため、JVM アプリケーションですぐに使用でき便利です。プラグインには、Apache Camel、Connect、JMX、Logs、Runtime、Quartz、Spring Boot が含まれます。HawtIO は、主に Camel Quarkus および Camel Spring Boot で使用するように設計されています。また、HawtIO はマイクロサービスアプリケーションを管理するためのツールでもあります。HawtIO はクラウドネイティブであり、クラウドですぐに使用できます。HawtIO Operator を使用して Kubernetes および OpenShift にデプロイできます。
HawtIO の利点は次のとおりです。
- 特化されたビューによる、JMX を介した JVM のランタイム管理 (特に Camel アプリケーションと AMQ ブローカーのランタイム管理)
- Camel ルートの可視化およびデバッグ/トレース
- 簡素化されたアプリケーションメトリクスの管理および監視
第2章 HawtIO のインストール リンクのコピーリンクがクリップボードにコピーされました!
HawtIO コンソールの使用を開始するには、いくつかの方法があります。
2.1. Maven への Red Hat リポジトリーの追加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Maven リポジトリーにあるアーティファクトにアクセスするには、Red Hat Maven リポジトリーを Maven の settings.xml ファイルに追加する必要があります。Maven は、ユーザーのホームディレクトリーの .m2 ディレクトリーで settings.xml ファイルを探します。ユーザー指定の settings.xml ファイルがない場合、Maven は M2_HOME/conf/settings.xml にあるシステムレベルの settings.xml ファイルを使用します。
前提条件:
Red Hat リポジトリーを追加する settings.xml ファイルがある場所を把握している。
手順:
以下の例のように、
settings.xmlファイルに Red Hat リポジトリーのrepository要素を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. CLI (JBang) からの実行 リンクのコピーリンクがクリップボードにコピーされました!
JBang で CLI から HawtIO をインストールして実行できます。
まだローカルに JBang がない場合は、https://www.jbang.dev/download/ からインストールしてください。
手順:
jbangコマンドを使用して、最新の HawtIO をマシンにインストールします。jbang app install -Dhawtio.jbang.version=4.0.0.redhat-00040 hawtio@hawtio/hawtio
$ jbang app install -Dhawtio.jbang.version=4.0.0.redhat-00040 hawtio@hawtio/hawtioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このインストール方法は、jbang>=0.115.0 でのみ利用できます。
HawtIO コマンドがインストールされます。次のコマンドを使用して HawtIO インスタンスを起動します。
hawtio
$ hawtioCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、http://0.0.0.0:8080/hawtio/ のコンソールが自動的に開きます。ポート番号を変更するには、次のコマンドを実行します。
hawtio --port 8090
$ hawtio --port 8090Copy to Clipboard Copied! Toggle word wrap Toggle overflow CLI の設定オプションの詳細を確認するには、次のコードを実行してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. Quarkus アプリケーションの実行 リンクのコピーリンクがクリップボードにコピーされました!
ワンステップで HawtIO を Quarkus アプリケーションに接続できます。
手順:
io.hawt:hawtio-quarkusおよびサポートする Camel Quarkus エクステンションをpom.xmlの依存関係に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように、開発モードで Quarkus アプリケーションを使用して HawtIO を実行します。
mvn compile quarkus:dev
mvn compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow - http://localhost:8080/hawtio を開き、HawtIO コンソールを表示します。
2.4. Spring Boot アプリケーションの実行 リンクのコピーリンクがクリップボードにコピーされました!
HawtIO は 2 つのステップで Spring Boot アプリケーションに接続できます。
手順:
io.hawt:hawtio-springbootおよびサポートする Camel Spring Boot スターターをpom.xmlの依存関係に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の行を
application.propertiesに追加して、HawtIO および Jolokia エンドポイントを有効にします。spring.jmx.enabled = true management.endpoints.web.exposure.include = hawtio,jolokia
spring.jmx.enabled = true management.endpoints.web.exposure.include = hawtio,jolokiaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のように、Spring Boot アプリケーションを開発モードで使用して HawtIO を実行します。
mvn spring-boot:run
mvn spring-boot:runCopy to Clipboard Copied! Toggle word wrap Toggle overflow - http://localhost:8080/actuator/hawtio を開き、HawtIO コンソールを表示します。
2.4.1. HawtIO パスの設定 リンクのコピーリンクがクリップボードにコピーされました!
HawtIO エンドポイントに /actuator ベースパスを使用しない場合は、次のコマンドを実行することもできます。
management.endpoints.web.base-pathプロパティーを使用して Spring Boot 管理ベースパスをカスタマイズします。management.endpoints.web.base-path = /
management.endpoints.web.base-path = /Copy to Clipboard Copied! Toggle word wrap Toggle overflow management.endpoints.web.path-mapping.hawtioプロパティーを設定して、HawtIO エンドポイントへのパスをカスタマイズすることもできます。management.endpoints.web.path-mapping.hawtio = hawtio/console
management.endpoints.web.path-mapping.hawtio = hawtio/consoleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
- HawtIO Spring Boot example に、実際に動作する Spring Boot の例があります。この例は、Apache Camel ルート、メトリクスなどに関する情報を公開する Web アプリケーションを監視する方法を示します。
-
リアルタイム値とチャートに適した MBean は
java.lang/OperatingSystemです。Camel ルートを確認してください。ツリー内で選択を変更すると、その内容に基づいて使用可能なタブのリストが動的に変化します。
第3章 HawtIO の設定 リンクのコピーリンクがクリップボードにコピーされました!
HawtIO とそのプラグインの動作は、システムプロパティーで設定できます。
3.1. 設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
次の表に、HawtIO のコアシステムとさまざまなプラグインの設定プロパティーを示します。
| システム | デフォルト | 説明 |
|---|---|---|
| hawtio.disableProxy | false | このプロパティーを true に設定すると、ProxyServlet (/hawtio/proxy/*) を無効にできます。これにより、Connect プラグインが利用できなくなります。つまり、HawtIO はリモート JVM に接続できなくなります。Connect プラグインを使用しない場合は、利用不可にする方がセキュリティー上の理由から望ましい場合があります。 |
| hawtio.localAddressProbing | true | 起動時にプロキシー許可リストのローカルアドレスプローブを有効にするかどうかを決定します。無効にするには、このプロパティーを false に設定します。 |
| hawtio.proxyAllowlist | localhost, 127.0.0.1 | Connect プラグインが ProxyServlet 経由で接続できるターゲットホストの、コンマ区切りの許可リストです。この許可リストに含まれないホストはすべて、セキュリティー上の理由から接続を拒否されます。このオプションを * に設定すると、すべてのホストが許可されます。リストの要素に接頭辞 "r:" を付けると、正規表現を定義できます (例: localhost,r:myserver[0-9]+.mydomain.com)。 |
| hawtio.redirect.scheme | 認証が必要な場合、URL をログインページにリダイレクトするスキームです。 | |
| hawtio.sessionTimeout | サーブレットコンテナーがクライアントアクセス間でセッションを開いたままにする最大間隔 (秒単位) です。このオプションを設定しない場合、HawtIO はサーブレットコンテナーのデフォルトのセッションタイムアウトを使用します。 |
3.1.1. Quarkus リンクのコピーリンクがクリップボードにコピーされました!
Quarkus の場合、これらのプロパティーはすべて、application.properties または application.yaml で接頭辞 quarkus.hawtio を付けて設定できます。
以下に例を示します。
quarkus.hawtio.disableProxy = true
quarkus.hawtio.disableProxy = true
3.1.2. Spring Boot リンクのコピーリンクがクリップボードにコピーされました!
Spring Boot の場合、これらのプロパティーはすべて application.properties または application.yaml でそのまま設定できます。
以下に例を示します。
hawtio.disableProxy = true
hawtio.disableProxy = true
3.2. システムプロパティーによる Jolokia の設定 リンクのコピーリンクがクリップボードにコピーされました!
Jolokia エージェントは、Jolokia ネイティブの org.jolokia.http.AgentServlet クラスを拡張する io.hawt.web.JolokiaConfiguredAgentServlet (hawtio-war/WEB-INF/web.xml で定義) を使用して、自動的にデプロイされます。Jolokia ドキュメント で定義されている設定パラメーターで Jolokia サーブレットをカスタマイズする場合は、接頭辞 jolokia を付けたシステムプロパティーとしてパラメーターを渡すことができます。
以下に例を示します。
jolokia.policyLocation = file:///opt/hawtio/my-jolokia-access.xml
jolokia.policyLocation = file:///opt/hawtio/my-jolokia-access.xml
3.2.1. RBAC Restrictor リンクのコピーリンクがクリップボードにコピーされました!
HawtIO RBAC (ロールベースのアクセス制御) をサポートする一部のランタイムの場合、HawtIO はカスタムの Jolokia Restrictor 実装を提供し、ACL (アクセス制御リスト) ポリシーに基づいて JMX 操作に対する追加の保護層を提供します。
現時点では、Quarkus および Spring Boot で HawtIO RBAC を使用することはできません。これらのランタイムで RBAC Restrictor を有効にしても、追加の負荷が生じるだけで、利点はありません。
HawtIO RBAC Restrictor をアクティブにするには、システムプロパティーで Jolokia パラメーター restrictorClass を次のように設定し、io.hawt.web.RBACRestrictor を使用するようにします。
jolokia.restrictorClass = io.hawt.system.RBACRestrictor
jolokia.restrictorClass = io.hawt.system.RBACRestrictor
第4章 HawtIO のセキュリティーと認証 リンクのコピーリンクがクリップボードにコピーされました!
HawtIO は、実行時に使用するランタイム/コンテナーに応じて、設定不要で使用できる認証を有効にします。アプリケーションで HawtIO を使用するには、ランタイムの認証をセットアップするか、HawtIO 認証を無効にする必要があります。
4.1. 設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
次の表に、HawtIO コアシステムのセキュリティー関連の設定プロパティーを示します。
| 名前 | デフォルト | 説明 |
|---|---|---|
| hawtio.authenticationContainerDiscoveryClasses | io.hawt.web.tomcat.TomcatAuthenticationContainerDiscovery | 使用する AuthenticationContainerDiscovery 実装のコンマ区切りのリスト。デフォルトでは、TomcatAuthenticationContainerDiscovery のみが存在します。これは、tomcat-users.xml ファイルから Tomcat でユーザーを認証するために使用されます。設定済みの JAAS ログインモジュールから Tomcat でユーザーを認証する場合は、削除できます。独自のクラスを追加することも可能です。 |
| hawtio.authenticationContainerTomcatDigestAlgorithm | NONE | Tomcat の tomcat-users.xml ファイルを使用する場合、プレーンテキストではなくハッシュ化したパスワードを使用できます。このプロパティーを使用してダイジェストアルゴリズムを指定します。有効な値は、NONE、MD5、SHA、SHA-256、SHA-384、および SHA-512 です。 |
| hawtio.authenticationEnabled | true | セキュリティーを有効にするかどうかを指定します。 |
| hawtio.keycloakClientConfig | classpath:keycloak.json | フロントエンドに使用される Keycloak 設定ファイル。Keycloak インテグレーションが有効な場合は必須です。 |
| hawtio.keycloakEnabled | false | Keycloak インテグレーションを有効にするか無効にするかを指定します。 |
| hawtio.noCredentials401 | false | 認証が有効になっているものの認証情報が提供されていない場合に、HTTP ステータス 401 を返すかどうかを指定します。401 を返すと、ブラウザーのポップアップウィンドウが表示され、認証情報の入力が求められます。デフォルトでは false に設定されており、代わりに HTTP ステータス 403 を返します。 |
| hawtio.realm | hawtio | ログインに使用するセキュリティーレルム。 |
| hawtio.rolePrincipalClasses | 完全修飾されたプリンシパルクラス名。複数のクラスをコンマで区切って指定できます。 | |
| hawtio.roles | Admin, manager, viewer | コンソールにログインするには、ユーザーロールが必要です。複数のロールを許可するには、コンマで区切って指定します。HawtIO がユーザーを認証するときにロールのチェックを無効にするには、* または空の値に設定します。 |
| hawtio.tomcatUserFileLocation | conf/tomcat-users.xml | tomcat-users.xml ファイルの代替の場所 (/production/userlocation/ など) を指定します。 |
4.2. Quarkus リンクのコピーリンクがクリップボードにコピーされました!
HawtIO は、Quarkus と Keycloak が提供する認証メカニズムで保護されます。
Quarkus の HawtIO 認証を無効にする場合は、次の設定を application.properties に追加します。
quarkus.hawtio.authenticationEnabled = false
quarkus.hawtio.authenticationEnabled = false
4.2.1. Quarkus 認証メカニズム リンクのコピーリンクがクリップボードにコピーされました!
HawtIO は、Quarkus の観点からは単なる Web アプリケーションです。そのため、HawtIO の認証は、Quarkus が提供するさまざまなメカニズムを使用して、Web アプリケーションの認証と同じ方法で行われます。
ここでは、例示のために、HawtIO で プロパティーベースの認証 を使用する方法を説明します。
プロパティーベースの認証は、実稼働環境では推奨されません。このメカニズムは開発とテストのみを目的としています。
HawtIO でプロパティーベースの認証を使用するには、次の依存関係を
pom.xmlに追加します。<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-elytron-security-properties-file</artifactId> </dependency><dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-elytron-security-properties-file</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow その後、
application.propertiesでユーザーを定義し、認証を有効にできます。たとえば、パスワードs3cr3t!を指定して ユーザーhawtioを定義するとします。この場合、ロールadminは次のようになります。quarkus.security.users.embedded.enabled = true quarkus.security.users.embedded.plain-text = true quarkus.security.users.embedded.users.hawtio = s3cr3t! quarkus.security.users.embedded.roles.hawtio = admin
quarkus.security.users.embedded.enabled = true quarkus.security.users.embedded.plain-text = true quarkus.security.users.embedded.users.hawtio = s3cr3t! quarkus.security.users.embedded.roles.hawtio = adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下に例を示します。
実際に動作するプロパティーベースの認証の例は、Quarkus example を参照してください。
4.2.2. Keycloak を使用した Quarkus リンクのコピーリンクがクリップボードにコピーされました!
Keycloak Integration - Quarkus を参照してください。
4.3. Spring Boot リンクのコピーリンクがクリップボードにコピーされました!
標準の JAAS 認証に加えて、Spring Boot の HawtIO は Spring Security または Keycloak を使用して保護できます。Spring Boot の HawtIO 認証を無効にする場合は、次の設定を application.properties に追加します。
hawtio.authenticationEnabled = false
hawtio.authenticationEnabled = false
4.3.1. Spring Security リンクのコピーリンクがクリップボードにコピーされました!
HawtIO で Spring Security を使用するには、以下の手順を実行します。
org.springframework.boot:spring-boot-starter-securityをpom.xmlの依存関係に追加します。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow src/main/resources/application.propertiesの Spring Security 設定は次のようになります。spring.security.user.name = hawtio spring.security.user.password = s3cr3t! spring.security.user.roles = admin,viewer
spring.security.user.name = hawtio spring.security.user.password = s3cr3t! spring.security.user.roles = admin,viewerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Spring Security でアプリケーションを保護する方法をセットアップするには、security config クラスを定義する必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下に例を示します。
実際に動作する例については、springboot-security example を参照してください。
4.3.1.1. Spring Security を使用したリモートアプリケーションへの接続 リンクのコピーリンクがクリップボードにコピーされました!
Spring Security を有効にしてリモート Spring Boot アプリケーションに接続しようとする場合は、Spring Security 設定で HawtIO コンソールからのアクセスが許可されていることを確認してください。デフォルトの CSRF 保護により Jolokia エンドポイントへのリモートアクセスが禁止されている可能性が高く、その場合は HawtIO コンソールで認証エラーが発生します。
アプリケーションが CSRF 攻撃のリスクにさらされることに注意してください。
最も簡単な解決策は、次のようにリモートアプリケーションで Jolokia エンドポイントの CSRF 保護を無効にすることです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Spring Security の CSRF 保護を使用せずに Jolokia エンドポイントを保護するには、以下のような
jolokia-access.xmlファイル (スニペット) をsrc/main/resources/に配置する必要があります。これにより、信頼されたノードのみがファイルにアクセスできるようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2. Keycloak を使用した Spring Boot リンクのコピーリンクがクリップボードにコピーされました!
Keycloak Integration - Spring Boot を参照してください。
第5章 OpenShift 4 での HawtIO のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift 4.x では、HawtIO の設定に、インストール、およびデプロイが必要になります。このインストールに推奨されるメカニズムは、OperatorHub から利用できる HawtIO Operator を使用します(セクション 5.1、OperatorHub を使用した OpenShift 4.x への HawtIO のインストールおよびデプロイを参照)。オプションで、セクション 2.3, "Role-based access control for HawtIO on OpenShift 4.x" で説明されているように、HawtIO のロールベースアクセス制御(RBAC)をカスタマイズできます。
5.1. OperatorHub を使用した OpenShift 4 への HawtIO のインストールおよびデプロイ リンクのコピーリンクがクリップボードにコピーされました!
HawtIO Operator は、HawtIO のインストール用に OpenShift OperatorHub で提供されます。HawtIO をデプロイするには、インストールされた Operator のインスタンスと HawtIO カスタムリソース(CR)をデプロイする必要があります。
HawtIO をインストールおよびデプロイするには、以下を実行します。
-
Web ブラウザーで、
cluster admin権限を持つユーザーとして OpenShift コンソールにログインします。 - Operators をクリックした後、OperatorHub をクリックします。
- 検索フィールドウィンドウで HawtIO と入力し、演算子の一覧をフィルタリングします。HawtIO Operator をクリックします。
HawtIO Operator インストールウィンドウで、Install をクリックします。Create Operator Subscription フォームが表示されます。
- Update Channel の場合は、stable-v1 を選択します。
Installation Mode では、デフォルト (クラスターの特定の namespace) を受け入れます。
注記このモードは、Operator が HawtIO CR を監視する名前空間を決定します。これは、完全にデプロイされるときに HawtIO が監視する名前空間とは異なります。後者は HawtIO CR で設定できます。
- Installed Namespace の場合は、HawtIO Operator をインストールする namespace を選択します。
Update Approval では、Automatic または Manual を選択し、HawtIO Operator の更新が OpenShift によってどのように対処されるかを設定します。
- Automatic 更新オプションが選択され、新しいバージョンの HawtIO Operator が利用可能な場合、OpenShift Operator Lifecycle Manager (OLM)は人の介入なしに、HawtIO の実行中のインスタンスを自動的にアップグレードします。
- Manual updates オプションが選択され、Operator の新しいバージョンが利用可能な場合、OLM は更新要求のみを作成します。次に、クラスター管理者は更新リクエストを手動で承認して、HawtIO Operator を新しいバージョンに更新する必要があります。
- Install and OpenShift install HawtIO Operator を現在の namespace にインストールします。
- インストールを確認するには、Operators をクリックした後、Installed Operators をクリックします。hawtio は演算子のリストに表示されるはずです。
OpenShift Web コンソールを使用して HawtIO をデプロイするには、以下を実行します。
- Installed Operators のリストで、Name 列の下にある HawtIO Operator をクリックします。
- Provided APIs の Operator Details ページで、Create HawtIO をクリックします。
設定のデフォルト値を使用するか、任意でデフォルト値を編集します。
- Replicas の場合、HawtIO のパフォーマンスを向上させるには(高可用性環境など)、HawtIO に割り当てられる Pod の数を増やすことができます。
- RBAC (ロールベースアクセス制御) では、デフォルトの RBAC 動作をカスタマイズする場合や、HawtIO Operator をインストールした namespace に ConfigMap ファイルがすでに存在する場合にのみ、Config Map フィールドに値を指定します。
- Nginx については、HawtIO Operator インストールのパフォーマンスチューニング を参照してください。
Type には、以下のいずれかを指定します。
- クラスター: HawtIO が HawtIO 対応アプリケーションについて OpenShift クラスター上のすべての namespace を監視する場合。
- 名前空間: HawtIO が、同じ名前空間にデプロイされた HawtIO 対応アプリケーションのみを監視する場合。
- Create をクリックします。HawtIO Operator Details ページが開き、デプロイメントのステータスが表示されます。
HawtIO を開くには、以下を実行します。
- namespace デプロイメントの場合:OpenShift Web コンソールで、HawtIO Operator がインストールされているプロジェクトを開き、Overview を選択します。Project Overview ページで Launcher セクションまで下方向にスクロールし、HawtIO リンクをクリックします。
- cluster デプロイメントでは、OpenShift Web コンソールのタイトルバーで、グリッドアイコンをクリックします。ポップアップメニューの Red Hat Applications で、HawtIO URL リンクをクリックします。
- HawtIO にログインします。ブラウザーに Authorize Access ページが表示され、必要なパーミッションが表示されます。
- Allow selected permissions をクリックします。hawtio がブラウザーで開き、アクセスが許可される HawtIO 対応アプリケーション Pod が表示されます。
- Connect をクリックして監視対象のアプリケーションを表示します。新しいブラウザーウィンドウが開き、アプリケーションが HawtIO に表示されます。
5.2. OpenShift 4 上の HawtIO のロールベースアクセス制御 リンクのコピーリンクがクリップボードにコピーされました!
HawtIO は、OpenShift によって提供されるユーザー承認に応じてアクセスを推測する、ロールベースアクセス制御 (RBAC) を提供します。HawtIO では、RBAC はユーザーが Pod で MBean 操作を実行できるかどうかを判断します。
OpenShift の承認に関する詳細は、OpenShift ドキュメントの RBAC の使用によるパーミッションの定義および適用 を参照してください。
Operator を使用して OpenShift に HawtIO をインストールすると、ロールベースのアクセスがデフォルトで有効になります。hawtio RBAC は、OpenShift の Pod リソースでユーザーの動詞アクセスを利用して、HawtIO での Pod の MBean 操作へのユーザーのアクセスを判別します。デフォルトでは、HawtIO には 2 つのユーザーロールがあります。
- Admin : ユーザーが OpenShift で Pod を更新できる場合、ユーザーには HawtIO の admin ロールが付与されます。ユーザーは、HawtIO で Pod の 書き込み MBean 操作を実行できます。
- viewer: ユーザーが OpenShift で Pod を get できる場合、ユーザーには HawtIO の viewer ロールが付与されます。ユーザーは、HawtIO で Pod の読み取り専用 MBean 操作を実行できます。
5.2.1. OpenShift 4 上の HawtIO のアクセスロールの判別 リンクのコピーリンクがクリップボードにコピーされました!
hawtio のロールベースアクセス制御は、Pod に対するユーザーの OpenShift パーミッションから推測されます。特定のユーザーに付与された HawtIO アクセスロールを判別するには、Pod に対してユーザーに付与される OpenShift パーミッションを取得します。
前提条件:
- ユーザーの名前
- Pod の名前です。
Procedure:
ユーザーが Pod に対して HawtIO の admin ロールを持っているかどうかを確認するには、以下のコマンドを実行してユーザーが OpenShift で Pod を更新できるかどうかを確認します。
oc auth can-i update pods/<pod> --as <user>
oc auth can-i update pods/<pod> --as <user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 応答が yes の場合、ユーザーは Pod の admin ロールを持っています。ユーザーは、HawtIO で Pod の書き込み操作を実行できます。
ユーザーが Pod に対して HawtIO の viewer ロールを持っているかどうかを確認するには、以下のコマンドを実行してユーザーが OpenShift で Pod を取得できるかどうかを確認します。
oc auth can-i get pods/<pod> --as <user>
oc auth can-i get pods/<pod> --as <user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 応答が yes の場合、ユーザーは Pod の viewer ロールを持っています。ユーザーは、HawtIO で Pod の読み取り専用操作を実行できます。コンテキストに応じて、HawtIO は、オプションを無効にするか、ユーザーが書き込み MBean 操作を試行したときに operation not allowed for this user メッセージを表示することによって、viewer ロールを持つユーザーが書き込み MBean 操作を実行できないようにします。
- 応答が no の場合、ユーザーは HawtIO ロールにバインドされず、ユーザーは HawtIO で Pod を表示できません。
5.2.2. OpenShift 4 上の HawtIO へのロールベースのアクセスのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
OperatorHub を使用して HawtIO をインストールすると、ロールベースアクセス制御(RBAC)がデフォルトで有効になります。HawtIO の RBAC 動作をカスタマイズするには、HawtIO をデプロイする前に ConfigMap リソース(カスタム RBAC 動作を定義する)を指定する必要があります。この ConfigMap の名前は、HawtIO カスタムリソース(CR)の rbac 設定セクションに入力する必要があります。
カスタム ConfigMap リソースは、HawtIO Operator がインストールされている namespace に追加する必要があります。
前提条件:
- HawtIO Operator が OperatorHub からインストールされている。
Procedure:
HawtIO RBAC ロールをカスタマイズするには、以下を実行します。
RBAC ConfigMap を作成します。
現在の OpenShift プロジェクトが HawtIO をインストールするプロジェクトであることを確認します。たとえば、hawtio-test プロジェクトに HawtIO をインストールするには、以下のコマンドを実行します。
oc project hawtio-test
oc project hawtio-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow テンプレートから HawtIO RBAC ConfigMap ファイルを作成し、以下のコマンドを実行します。
oc process -f https://raw.githubusercontent.com/hawtio/hawtio-online/2.x/docker/ACL.yaml -p APP_NAME=custom-hawtio | oc create -f -
oc process -f https://raw.githubusercontent.com/hawtio/hawtio-online/2.x/docker/ACL.yaml -p APP_NAME=custom-hawtio | oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを使用して新規カスタム ConfigMap を編集します。
oc edit ConfigMap custom-hawtio-rbac
oc edit ConfigMap custom-hawtio-rbacCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 編集を保存すると、ConfigMap リソースが更新されます
- 上記のように新しい HawtIO CR を作成し、プロパティー configMap の下に新しい ConfigMap の名前を追加して rbac セクションを編集します。
- Create をクリックします。Operator は、カスタム ConfigMap を使用するために新しいバージョンの HawtIO をデプロイする必要があります。
5.3. Fuse Console からの移行 リンクのコピーリンクがクリップボードにコピーされました!
HawtIO カスタムリソース定義(CRD)のバージョンは、HawtIO で v1alpha1 から v1 にアップグレードされ、互換性のある変更が含まれます。そのため、CRD はクラスター全体であるため、その後に HawtIO が同じクラスターにインストールされた場合、Fuse Console の既存のインストールに悪影響を及ぼす可能性があります。現時点では、Fuse Console の全バージョンをアンインストールしてから HawtIO のインストールを続行することを推奨します。
既存の HawtIO カスタムリソースを HawtIO に移行するユーザーは、リソース設定をファイルに保存し、HawtIO オペレーターがインストールされるとそれらを再適用できます。再適用時に、CR はバージョン v1 に自動的にアップグレードされます。新規仕様の重要な変更として、version プロパティーが Operator 自体の内部定数として提供されているため、version プロパティーを CR で指定できなくなる点が挙げられます。
5.4. OpenShift 4 での HawtIO のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift 4.x は、HawtIO Operator を含む Operator への更新を処理します。詳細は、OpenShift ドキュメントの Operator を参照してください。その後、アプリケーションの設定方法に応じて、Operator の更新によってアプリケーションのアップグレードがトリガーされます。
5.5. OpenShift 4 での HawtIO のパフォーマンスチューニング リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、HawtIO は以下の Nginx 設定を使用します。
-
clientBodyBufferSize: 256k -
proxyBuffers: 16 128k -
subrequestOutputBufferSize: 10m
これらの設定の説明は、Nginx のドキュメント を参照してください。
HawtIO のパフォーマンスを調整するには、clientBodyBufferSize、proxyBuffers、および subrequestOutputBufferSize 環境変数を設定します。たとえば、HawtIO を使用して多数の Pod およびルート(合計 100 のルートなど)を監視する場合、HawtIO の subrequestOutputBufferSize 環境変数を 60m から 100m までの間で設定することにより、ロードタイムアウトの問題を解決できます。
5.5.1. HawtIO Operator インストールのパフォーマンスチューニング リンクのコピーリンクがクリップボードにコピーされました!
Openshift 4.x では、HawtIO のデプロイ前後に Nginx パフォーマンスチューニング環境変数を設定できます。これを後で行うと、OpenShift は HawtIO を再デプロイします。
前提条件:
-
OpenShift クラスターにアクセス可能な
cluster admin権限が必要です。
Procedure:
HawtIO のデプロイ前後に環境変数を設定できます。
HawtIO をデプロイする前に環境変数を設定するに は、以下を実行します。
- OpenShift Web コンソールで、HawtIO Operator がインストールされているプロジェクトで、Operators> Installed Operators> HawtIO Operator を選択します。
- HawtIO タブをクリックし、Create HawtIO をクリックします。
- Create HawtIO ページで、Form view で Config> Nginx セクションまでスクロールダウンします。
Nginx セクションをデプロイメントしてから、環境変数を設定します。以下に例を示します。
-
clientBodyBufferSize: 256k -
proxyBuffers: 16 128k -
subrequestOutputBufferSize: 100m
-
- Create をクリックして HawtIO をデプロイします。
- デプロイメントが完了したら、Deployments> HawtIO-console ページを開いて Environment をクリックし、環境変数がリストにあることを確認します。
HawtIO のデプロイ後に環境変数を設定するに は、以下を実行します。
- OpenShift Web コンソールで、HawtIO がデプロイされているプロジェクトを開きます。
- Operators> Installed Operators> HawtIO Operator の順に選択します。
- HawtIO タブをクリックし、HawtIO をクリックします。
- Actions> Edit HawtIO を選択します。
-
Editor ウィンドウで、
specセクションまでスクロールダウンします。 以下のように、
specセクションで、新規のnginxセクションを追加し、1 つ以上の環境変数を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックします。OpenShift は HawtIO を再デプロイします。
- 再デプロイメントが完了したら、Workloads> Deployments> HawtIO-console ページを開いてから Environment をクリックし、リストの環境変数を確認します。
5.5.2. HawtIO でアプリケーションを表示するためのパフォーマンスチューニング リンクのコピーリンクがクリップボードにコピーされました!
HawtIO の強化されたパフォーマンスチューニング機能により、多数の MBean を持つアプリケーションを表示できます。この機能を使用するには、次の手順を実行します。
前提条件:
-
OpenShift クラスターにアクセス可能な
cluster admin権限が必要です。
Procedure:
アプリケーションのメモリー制限を増やします。
HawtIO のデプロイ後にメモリー制限を増やすに は、以下を実行します。
- OpenShift Web コンソールで、HawtIO がデプロイされているプロジェクトを開きます。
- Operators> Installed Operators> HawtIO Operator の順に選択します。
- HawtIO タブをクリックし、HawtIO をクリックします。
- Actions> Edit HawtIO を選択します。
-
Editor ウィンドウで、
spec.resourcesセクションまでスクロールダウンします。 - リクエスト と 制限 の両方を優先量に更新します
- 保存をクリックします。
- hawtio は、新しいリソース仕様を使用して再デプロイする必要があります。
第6章 HawtIO オンラインアプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、OpenShift に Camel Quarkus アプリケーションをデプロイし、Camel Quarkus で HawtIO 対応 にする方法を説明します。OpenShift にデプロイされると、HawtIO Online によって検出されます。
- この プロジェクト は、Quarkus Container Images および Kubernetes 拡張機能を使用してコンテナーイメージをビルドし、Kubernetes/OpenShift クラスター(pom.xml)にデプロイします。
HawtIO 対応 設定に関する最も重要な部分は、<
properties> セクションで定義されます。HawtIO 対応を設定するには、HTTPS および SSL クライアント認証が設定された状態で Jolokia エージェントをアプリケーションに接続する必要があります。クライアントプリンシパルは、HawtIO Online インスタンスが提供するプリンシパルと一致する必要があります(デフォルトはhawtio-online.hawtio.svcです)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションをローカルで実行します。
以下を使用して開発モードで実行します。
mvn compile quarkus:dev
mvn compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、プロジェクトをビルドし、実行可能な JAR を実行します。
mvn package && java -jar target/quarkus-app/quarkus-run.jar
mvn package && java -jar target/quarkus-app/quarkus-run.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Jolokia エージェントを使用してローカルに実行します。
この例は、以下のように Jolokia JVM エージェントをローカルで実行できます。
java -javaagent:target/quarkus-app/lib/main/org.jolokia.jolokia-agent-jvm-2.0.1-javaagent.jar -jar target/quarkus-app/quarkus-run.jar
java -javaagent:target/quarkus-app/lib/main/org.jolokia.jolokia-agent-jvm-2.0.1-javaagent.jar -jar target/quarkus-app/quarkus-run.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift にデプロイします。
これをクラスターにデプロイするには、最初に pom.xml のコンテナーイメージパラメーターを開発環境に合わせて変更します。(デフォルトのイメージ名は
quay.io/hawtio/hawtio-online-example-camel-quarkus:latestです 。これは Quay.io のhawtio組織にプッシュする必要があります。)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、オプション
-Dquarkus.container-image.push=trueを使用してプロジェクトをビルドし、ビルドイメージを優先コンテナーレジストリーにプッシュします。mvn install -Dquarkus.container-image.push=true
mvn install -Dquarkus.container-image.push=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメントのリソースファイルも target/kubernetes/kubernetes.yml で生成されます。
kubectlまたはocコマンドを使用して、resources ファイルでアプリケーションをデプロイします。kubectl apply -f target/kubernetes/kubernetes.yml
kubectl apply -f target/kubernetes/kubernetes.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - デプロイメントに成功し、Pod が起動すると、アプリケーションログがクラスターで表示されます。
第7章 コンテナーおよびアプリケーションの表示 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift の HawtIO にログインすると、HawtIO ホームページに利用可能なコンテナーが表示されます。
Procedure:
- コンテナーを管理 (作成、編集、または削除) するには、OpenShift コンソールを使用します。
- HawtIO 対応アプリケーションおよび OpenShift クラスターで AMQ Broker (該当する場合)を表示するには、Online タブをクリックします。
第8章 Apache Camel アプリケーションの表示および管理 リンクのコピーリンクがクリップボードにコピーされました!
HawtIO の Camel タブで、Apache Camel のコンテキスト、ルート、および依存関係を表示および管理します。
次の詳細を表示できます。
- 実行中の Camel コンテキストすべてのリスト。
- Camel バージョン番号やランタイム統計など、各 Camel コンテキストの詳細情報。
- 各 Camel アプリケーションの全ルートおよびランタイム統計のリスト。
- 実行中のルートとリアルタイムのメトリクスのグラフィカル表示。
また、以下を行うと Camel アプリケーションと対話もできます。
- コンテキストの起動および一時停止。
- 再起動、停止、一時停止、再開などを実行できるよう、すべての Camel アプリケーションとそれらのルートのライフサイクルを管理すること。
- 実行中のルートのライブトレースおよびデバッグ。
- Camel エンドポイントへのメッセージの閲覧および送信。
Camel タブは、1 つ以上の Camel ルートを使用するコンテナーに接続する場合のみ使用できます。
8.1. コンテキストの起動、一時停止、または削除 リンクのコピーリンクがクリップボードにコピーされました!
- Camel タブのツリービューで、Camel Contexts をクリックします。
- リストのコンテキストの横にあるボックスにチェックマークを入れます。
- Start または Suspend をクリックします。
コンテキストを削除するには以下を行います。
- コンテキストを停止します。
- 楕円のアイコンをクリックし、ドロップダウンメニューで Delete を選択します。
コンテキストを削除する場合、デプロイされたアプリケーションから削除します。
8.2. Camel アプリケーションの詳細表示 リンクのコピーリンクがクリップボードにコピーされました!
- Camel タブのツリービューで、Camel アプリケーションをクリックします。
- アプリケーションの属性と値のリストを表示するには、Attributes をクリックします。
- アプリケーション属性をグラフィカルに表示するには、Chart をクリックした後、Edit をクリックし、チャートに表示する属性を選択します。
- inflight exchange および blocked exchange を表示するには、Exchanges をクリックします。
- アプリケーションエンドポイントを表示するには、Endpoints をクリックします。リストは URL、Route ID、および direction で絞り込むことができます。
- メッセージ本文とメッセージヘッダーを別のタイプに変換するために使用される Camel 組み込みタイプ変換メカニズムに関連する統計を表示、有効化、および無効化するには、Type Converters をクリックします。
- JMX 操作 (XML からのルートの追加または更新、クラスパスで利用できる Camel コンポーネントの検索など) を表示および実行するには、Operations をクリックします。
8.3. Camel ルートリストの表示および Camel ルートとの対話 リンクのコピーリンクがクリップボードにコピーされました!
ルートのリストを表示するには、以下を行います。
- Camel タブをクリックします。
ツリービューでアプリケーションの routes フォルダーをクリックします。
1 つまたは複数のルートを起動、停止、または削除するには、以下を行います。
- リストのルートの横にあるボックスにチェックマークを入れます。
- Start または Stop をクリックします。
最初にルートを停止してから削除する必要があります。停止したら楕円のアイコンをクリックし、ドロップダウンメニューで Delete を選択します。
注記- ルートを削除する場合、デプロイされたアプリケーションから削除します。
- ツリービューで特定のルートを選択し、右上のメニューをクリックして起動、停止、または削除することもできます。
- ルートのグラフィカルな図を表示するには、Route Diagram をクリックします。
- inflight exchange および blocked exchange を表示するには、Exchanges をクリックします。
- エンドポイントを表示するには、Endpoints をクリックします。URL、Route ID、および方向でリストを絞り込むことができます。
- Type Converters をクリックし、Camel の組み込みタイプ変換メカニズムに関連する統計を表示、有効化、および無効化します。このメカニズムはメッセージ本文とメッセージヘッダーを別のタイプに変換するために使用されます。
特定のルートと対話するには、以下を行います。。
- Camel タブのツリービューで、ルートを選択します。ルート属性と値のリストを表示するには、Attributes をクリックします。
- ルート属性をグラフィカルに表示するには、Chart をクリックします。Edit をクリックすると、チャートに表示する属性を選択できます。
- inflight exchange および blocked exchange を表示するには、Exchanges をクリックします。
- Operations をクリックして JMX 操作 (ルートを XML としてダンプ、ルートの Camel ID 値の取得など) を表示および実行できます。
ルートを介してメッセージをトレースするには、以下を実行します。
- Camel タブのツリービューで、ルートを選択します。
- Trace を選択し、Start tracing をクリックします。
メッセージをルートに送信するには、以下を行います。
- Camel タブのツリービューでコンテキストのエンドポイントフォルダーを開き、エンドポイントを選択します。
- Send サブタブをクリックします。
- JSON または XML 形式のメッセージを設定します。
- Send をクリックします。
- ルートの Trace タブに戻り、ルートを介したメッセージのフローを確認します。
8.4. ルートのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
- Camel タブのツリービューで、ルートを選択します。
- Debug を選択し、Start debugging をクリックします。
ブレークポイントを追加するには、図のノードを選択し、Add breakpoint をクリックします。ノードに赤い点が表示されます。
ノードがブレークポイントのリストに追加されます。
下矢印をクリックして次のノードに移動するか、Resume ボタンをクリックしてルートの実行を再開します。
- Pause ボタンをクリックして、ルートのすべてのスレッドを一時停止します。
- 終了したら Stop debugging をクリックします。すべてのブレークポイントが消去されます。
第9章 JMX ドメインおよび MBean の表示および管理 リンクのコピーリンクがクリップボードにコピーされました!
JMX (Java Management Extensions) は、実行時にリソース (サービス、デバイス、およびアプリケーション) を動的に管理できる Java 技術です。リソースは MBean (Managed Bean) と呼ばれるオブジェクトで表現されます。リソースは、作成、実装、またはインストール後、すぐに管理および監視できます。
HawtIO の JMX プラグインを使用すると、JMX ドメインと MBean を表示および管理できます。MBean 属性の表示、コマンドの実行、および MBean の統計を示すチャートの作成を行うことができます。
JMX タブは、フォルダーに整理されたアクティブな JMX ドメインと MBean のツリービューを提供します。詳細を確認し、MBean でコマンドを実行できます。
Procedure:
MBean 属性を表示および編集するには、以下を行います。。
- ツリービューで MBean を選択します。
- Attributes タブをクリックします。
- 属性をクリックしてその詳細を表示します。
操作を実行するには、以下を行います。
- ツリービューで MBean を選択します。
- Operations タブをクリックし、リストにある操作の 1 つをデプロイメントします。
- Execute をクリックし、操作を実行します。
チャートを表示するには、以下を行います。
- ツリービューで項目を選択します。
- Chart タブをクリックします。
第10章 Quartz スケジュールの表示および管理 リンクのコピーリンクがクリップボードにコピーされました!
Quartz は、ほとんどの Java アプリケーション内で統合できる、機能豊富なオープンソースジョブスケジューリングライブラリーです。Quartz を使用して、ジョブを実行するための単純または複雑なスケジュールを作成できます。
ジョブは、標準の Java コンポーネントとして定義され、プログラムで実行するほとんどの処理を実行できます。
Camel ルートが camel-quartz コンポーネントをデプロイすると、hawtio は Quartz タブを表示します。JMX ツリービューから Quartz mbeans に交互にアクセスできることに注意してください。
Procedure:
- HawtIO で Quartz タブをクリックします。Quartz ページには、Quartz スケジューラーのツリービューと、Scheduler、Triggers、および Jobs タブがあります。
- スケジューラーを一時停止または起動するには、Scheduler タブのボタンをクリックします。
Triggers タブをクリックして、ジョブを実行するタイミングを決定するトリガーを表示します。たとえば、トリガーは、一日の指定の時刻 (ミリ秒単位) に、指定した日数、または指定した回数もしくは特定の回数繰り返してジョブを開始するように指定できます。
- トリガーの一覧をフィルタリングするには、ドロップダウンリストから State、Group、Name、または Type を選択します。続いて、入力フィールドに選択または入力することで、さらにリストをフィルターできます。
- トリガーを一時停止、再開、更新、または手動で実行するには、Action 列のオプションをクリックします。
- Jobs タブをクリックして実行中のジョブのリストを表示します。テーブルの Group、Name、Durable、Recover、Job ClassName、および Description の列でリストをソートできます。
第11章 スレッドの表示 リンクのコピーリンクがクリップボードにコピーされました!
スレッドの状態を表示および監視できます。
Procedure:
- Runtime タブをクリックし、Threads サブタブをクリックします。
- Threads ページには、アクティブなスレッドと各スレッドのスタックトレースの詳細が表示されます。デフォルトでは、スレッドリストにはすべてのスレッドが ID 値が大きい順に表示されます。
- ID 値が小さい順に表示するには、ID 列ラベルをクリックします。
- 任意で、スレッドの状態 (例: Blocked) やスレッド名でリストを絞り込むことができます。
- ロッククラス名やスレッドのフルスタックトレースなど、特定スレッドの詳細情報を表示するには、Actions 列で More をクリックします。
第12章 HawtIO に正しいデータ表示の確認 リンクのコピーリンクがクリップボードにコピーされました!
HawtIO のキューおよび接続の表示で、不足しているキューや接続があったり、一貫性のないアイコンが表示される場合、Jolokia が応答でマーシャルするアレイの最大要素数を指定する Jolokia コレクションサイズパラメーターを調節します。
Procedure:
HawtIO の右上隅にあるユーザーアイコンをクリックして、Preferences をクリックします。
- Maximum collection size オプションの値を大きくします (デフォルトは 50,000)。
- Close をクリックします。