IBM WebSphere Application Server のヘルス管理とヘルス ポリシーの作成方法について学びます。
健康管理とは何ですか?
ヘルス管理は WebSphere Virtual Enterprise 環境 の一部であり、WebSphere Application Server 8.5 に統合されています。
WebSphere 8.5 は、正常性 ポリシーを利用する運用ポリシー と統合されています。
ヘルス管理は、WebSphere エンタープライズ アプリケーション サーバーの使用状況を監視するポリシー主導のアプローチであり、停止が発生する前に問題領域に対応できます。
健康管理には次の 2 つの要素があります。
- ヘルスコントローラー
- 健康政策
リアクションモードとは何ですか?
正常性ポリシーには、環境内で監視する正常性状態が含まれます。定義された要件が満たされない場合に反応します。
2 つの反応モードがあります。
- 自動 モード: 正常性ポリシー違反が検出されると、システムはアクションを実行します。
たとえば、メモリ使用量を監視するように設定し、メッセージ使用量が 85% になったときに JVM を再起動したい場合、システムは、JVM ヒープ サイズが 85% に達したときに対象の JVM を再起動します。
- 監視 モード: 正常性ポリシー違反が検出されると、システムはランタイム タスクを作成します。これには、WebSphere 管理者がランタイム タスクのアクションを承認または拒否するために手動で介入する必要があります。
健康状態とは何ですか?
Health Condition は、環境を監視するオブジェクトまたはメトリクスです。
WebSphere 8.5 では、 8 つの事前定義された正常性状態 が利用可能です。カスタムの健康状態を作成するオプションもあります。
- 経過時間ベースの 条件 – この条件は、定義された JVM を監視し、設定された経過時間のしきい値に達するとアクションを実行します。
元:
JVM が 15 日間実行されている場合に再起動するようにこの条件を設定できます。この状況で許容される値は、以下に示すように日または時間単位です。
- 過剰なリクエスト タイムアウト 条件 – この条件は、リクエスト タイムアウトのパーセンテージが定義された値を超えるとアクションを実行します。許容される値は、以下に示すようにパーセンテージで表されます。
- 超過応答時間 条件 – リクエストが完了するまでにかかる時間を監視し、その時間が定義されたしきい値を超えた場合にアクションを実行します。
元:
リクエストの応答時間が 1 分の場合にスレッド ダンプを取得するようにこの条件を構成できます。以下に示すように、許容値はミリ秒、秒、分単位です。
- メモリ状態: 過剰なメモリ使用量 – JVM のメモリ使用量を監視し、しきい値を超えた場合にアクションを実行します。
元:
この条件を設定して、メモリ使用量がしきい値を超えたときに JVM ヒープ ダンプを取得し、JVM を再起動することができます。以下に示すように、JVM ヒープ サイズの許容値はパーセンテージで、問題となる期間は秒と分です。
- メモリ状態: メモリ リーク – JVM 上のメモリ リークを検索し、アクションを実行します。
これにより 3 つの検出レベルが得られました。
- 速い(誤報)
- 標準 (一部の誤報)
- 遅い (誤報が少ない)
- ストーム ドレイン 状態 – 平均応答時間の大幅な低下を監視し、スレッド ダンプの生成や JVM の再起動などのアクションを実行します。
これで 2 つの検出レベルが得られました。
- 標準 (一部の誤報)
- 遅い (誤報が少ない)
- ワークロード 条件 – この条件は、JVM が構成された数のリクエストを処理すると検出します。
元:
20000000 件のリクエストを処理したら JVM を再起動するように構成できます。
- ガベージ コレクションの 割合条件 – この条件は、定義された期間にガベージ コレクションに費やされた時間の割合を監視し、しきい値を超えるとアクションを実行します。許容値は、以下に示すパーセンテージとサンプリング期間です。
ヘルスアクションとは何ですか?
正常性アクションは、構成されたしきい値を超えたときに実行される正常性ポリシー アクションです。
WebSphere 8.5 では、 7 つの事前定義されたヘルス アクション が利用可能です。
- サーバーの再起動 – JVM を再起動します
- スレッド ダンプの取得 – JVM のスレッド ダンプを取得します。
- JVM ヒープ ダンプの取得 – JVM ヒープ ダンプを取得します。
- SNMP トラップの生成 – トラブルシューティング用の SNMP トラップを生成します
- サーバーをメンテナンス モードにします – 新しいクライアント要求を停止し、アクティブなセッションのみを処理します
- サーバーをメンテナンス モードにし、アフィニティを解除します。新規および既存のアクション セッションを停止します。
- メンテナンス モードを終了 – 新しいリクエストを受け入れる準備ができました
カスタムヘルスアクションを作成するオプションもあります。
健康ポリシーを作成するにはどうすればよいですか?
ヘルス ポリシーは 4 つの簡単な手順で作成できます。
- 正常性ポリシーの一般プロパティを定義します。ここでポリシーの名前を指定し、正常性状態を選択します。
- 正常性ポリシーの正常性状態プロパティを定義します。ここでは、選択した正常性状態のしきい値を提供し、正常性状態に違反したときに実行する必要のあるアクションを構成します。
- 監視するメンバーを指定します – 正常性ポリシーのターゲットとして JVM、クラスター、動的クラスター、オンデマンド ルーター、またはセルを選択します
- 正常性ポリシーの作成の確認 – 正常性ポリシーの構成を確認し、作成を確認します。
次のように健康ポリシーを 1 つ作成してみましょう。
- WebSphere 8.5 ND DMGR コンソールにログインします。
- 「運用ポリシー >> 正常性ポリシー」をクリックします。
- 「新規」をクリックします
- 名前を指定します – Test_Policy
- ワークロード条件として [健康状態] を選択します (この条件はすぐにテストできます)
- 「次へ」をクリックします
- テスト目的で「リクエストの合計」を「1000」と入力します。
- 反応モードを自動として選択します
- アクション の追加 サーバーを再 起動し、 スレッド ダンプを取得します
- 「次へ」をクリックします
- 「サーバー/ノードとしてフィルター」を選択します。
- ターゲットメンバーとしてserver1を追加
- 「次へ」をクリックします
- 構成を確認し、「完了」をクリックします
次に、ターゲットの JVM (server1) で実行されているアプリケーションにアクセスしてテストしてみましょう。
JVM が 1000 件のリクエストを処理すると、スレッド ダンプを取得して再起動する必要があります。 JMeter を使用して負荷をかけると、テストを迅速に行うことができます。
ヘルスコントローラーとは何ですか?
ヘルス コントローラーはヘルス ポリシーを制御し、システムを監視します。ポリシーを監視するには、ヘルス コントローラーでヘルス モニタリングを有効にする必要があります。
ヘルス コントローラー自体には、実行頻度や場合によってはサーバーを再起動するなどの構成可能なプロパティがあります。
これにより、ビジネスのピーク時間中のサーバーの再起動を制限できます。
医療政策目標とは何ですか?
正常性ポリシーまたはアクションのターゲットは、JVM、クラスター、動的クラスター、オンデマンド ルーター、またはセルにすることができます。
これがより理解を深めるのに役立つことを願っています。 DevOps の学習に興味がある場合は、この 基礎コース を確認してください。