第15章 設定項目の管理
JBoss ON 設定管理の多くは、設定ファイルを編集するか、ファイルおよびパッケージを更新することでリソースの変更を 実装する ように設計されています。しかし、設定を管理する別の要素は、変更を検出 することです。
管理者は、実稼動システムから内部リソースまで、あらゆるタイプの環境でシステムの最適な設定を計画する大量の時間を設定する必要があります。この理想的な構成には、ファイル設定、ソフトウェアバージョン、およびシステム設定が含まれます。リソース設定は徐々に変更しますが、管理者はこれらの変更を追跡して、予定外の変更や望ましくない変更がリソースに影響を与えないようにする必要があります。ベースラインの設定と変更追跡を定義すると、メンテナンス時および障害時にシステムが回復性を維持します。
リソースの設定に発生する予定外の変更は、設定が設計されたベースラインから移動するため、drift と呼ばれます。ドリフトは、特にコロケーション機能や仮想マシンの使用において、ソフトウェアやハードウェアの更新が頻繁に行われるために一般的です。
実稼働、ステージング、開発、およびリカバリーの設定は、一貫性を維持するために同一またはほぼ同一の設定を持つように設計されています。異なる環境内の設定が変更されると、設定の差が生じ ます。最終的に、この構成のギャップは、実稼働システムとバックアップシステムの構成が異なるため、障害復旧の失敗や高可用性の障害につながる可能性があります。
ドリフト監視は、非常に一般的で、無料 コンテンツベースのモニタリング を提供します。構造化の設定管理ではなく、ドリフト監視は、ローカルファイルシステムのコンテンツの変更を追跡します。これは、バイナリーファイルであってもファイルの変更を意味します。 [3].
15.1. 誤差について
当然ながら、ドリフト監視は変更を確認するだけでは簡単ではありません。コアとなる質問の 1 つが変更点です。その質問には、概念的な部分が 2 つあります。
- ドリフト監視に関連するディレクトリー(およびそれらのディレクトリー内のファイル)リソースにドリフト定義が定義されていても、実際のドリフト検出はディレクトリーレベルで実行されます。ドリフト監視は、JBoss ON によって管理される外部でも、プラットフォーム上の任意の場所に移動できます。
- 変更の特定方法これを、作成前のバージョン、または確立されたベースラインと比較するか。
ドリフトを監視する変更を特定したら、JBoss ON を使用してモニタリングとアラートを効果的に設定できます。
15.1.1. ドリフト定義および検出
ドリフト検出の最初の部分は、監視しているものを識別することです。
JBoss ON は、ドリフトモニタリングのターゲットの場所を設定するドリフト定義 を定義します。ターゲットは、リソースの一部の設定要素から特定できます。ファイルシステム上のディレクトリーまたはファイル、リソース設定プロパティー、リソースプラグインパラメーター、または監視特性のいずれかです。このターゲットは ベースディレクトリー です。各リソースには、ファイルシステムの場所を定義する設定エリアが複数あります。ベースディレクトリーは、その情報が含まれる設定タイプを決定し、その情報エリアは 値コンテキスト です。値コンテキストには、以下の 4 つのいずれかの領域を使用できます。
- プラグイン設定(pluginConfiguration)から。つまり、リソースの接続プロパティーから取得できます。接続プロパティーには、リソースタイプに応じてログファイル、デプロイメントディレクトリー、およびインストールディレクトリーを含めることができます。
- リソース設定(resourceConfiguration)から。つまり、リソースの設定可能なプロパティーから取得できます。
- 特性(measurementTrayt)から。特性は、リソースの情報測定プロパティーです。
- 明示的なファイルシステムの場所。リソースプロパティーに適切な場所がない場合や、ドリフトに別の場所を使用する場合は、ディレクトリーを fileSystem プロパティーに指定できます。
実際の値は 値名 です。
注記
プラグイン設定(接続プロパティー)、リソース設定プロパティー、および各リソースの特性は、『Resource Reference』 に一覧表示されます。
たとえば、のベースディレクトリーには
*.conf
ファイルの変更のみ /etc/
が含まれる場合、drift 定義の要素は以下のようになります。
Value context: fileSystem Value name: /etc Includes: **/*.conf
注記
ドリフト検出は、ファイルシステムレベルで実行されます。これは、ドリフト検出が JBoss ON によって管理されるリソースにバインドされず、制限されないことを意味します。プラットフォームのドリフト定義を作成し、JBoss ON エージェントが実行するシステムユーザーがそのディレクトリーにアクセスできる限り、JBoss ON インベントリーのファイルまたはディレクトリーを監視するように設定できます。
デフォルトでは、ベースディレクトリーの下にあるすべてのサブディレクトリーとファイルは、ドリフトがないか監視されます。includes/excludes オプションは、 明示的に含まれる、またはドリフト監視から明示的に除外されるサブディレクトリーまたはファイルを定義します。含ま れている場合、指定のディレクトリーまたはファイルのみが監視され、その他のすべてが暗黙的に除外され、除外 されます。含まれるディレクトリーおよびファイルは、パスとパターンによって識別されます。パスはベースディレクトリーの下にある開始点で、パターンは監視するファイルと一致します。
Drift をモニターするファイル | 'includes' パス | 'includes' パターン |
---|---|---|
/etc およびそのすべてのサブディレクトリー | blank | blank |
/etc およびすべてのサブディレクトリーの *.conf ファイルの場合 | . | **/*.conf [a] |
*.conf ファイルについては、/etc ディレクトリーでのみ、サブディレクトリーがない(/etc/*.conf) | . | *.conf |
*.conf ファイルについては、/etc(/etc/*/*.conf)未満のサブディレクトリーでのみ使用されます。 | できない | できない |
/etc の下にある特定のサブディレクトリー(yum.repos.d/)にあるファイル | yum.repos.d(サブディレクトリー名) | blank |
[a]
ディレクトリーの部分には、2 つのアスタリスクが必要です。1 つのアスタリスクでは機能しません。
|
ドリフト定義は、エージェントがドリフトをチェックする頻度に応じて間隔(頻度)も設定します。これは、JBoss ON とデータ管理の両方で非常に重要です。変更が欠落しているリスクが高くなりすぎる頻度を設定するか、または大きな変更(そのため管理が困難)スナップショットに切り替わります。しかし、間隔が低くても JBoss ON エージェントおよびサーバーのパフォーマンスに影響を及ぼします。
ドリフト定義に関する主な事項は、表示する内容と表示頻度を設定することです。
注記
誤差検出はすべて、エージェントプラグインの外部で実行され、リソースの状態に依存しません。リソースが実行されていない場合でも、ドリフト検出スキャンを実行できます。
15.1.2. スナップショット、ターミナルイメージ、およびベースラインイメージ
ドリフト検出の 2 番目の部分は、変更 の定義方法を特定することです。変更は比較です。ファイルの現行バージョンを取り、そのバージョンの以前のバージョンと比較します。ドリフト管理の質問は、比較する以前のバージョンです。
ドリフト定義が最初に作成されると、エージェントはそのベースディレクトリーとサブディレクトリーのすべてのファイルを収集し、それらをサーバーに送信します。このコレクションは初期ファイルセットです。
この時点から、エージェントはファイルの変更情報のみを送信します。各変更セットは スナップショット です。テキストファイルでは、変更情報にはファイルおよび diff の内容(エージェントが送信したパッチを基にして JBoss ON サーバーで構築される)が含まれます。バイナリーファイルでは、ファイルが変更され、SHA およびタイムスタンプが表示されます。スナップショットは、常に実際のリソースからの実際のファイルに基づいています。
注記
エージェントは実際のファイルを JBoss ON サーバーへ送信しません。エージェントは、ファイルの変更に関する情報をサーバーに送信します。これらの更新にはバージョン間の差分のみが含まれ、完全なファイルではありません。これにより、ネットワーク I/O が最小限に抑えられます。
実際の diff は、サーバーを保存するコンテンツからサーバーで生成されます。
スナップショットの作成方法は、現在のファイルをエージェントのバージョンと比較することです。この比較には、2 つの方法があります。
- これは、ファイルの最新のバージョンと比較できます。
- これは、定義した安定したベースラインと比較できます。
最初のオプションは ローリングスナップショット です。変更の集計を維持するため、これが最も簡単な設定になります。
図15.1 ローリングスナップショット
2 つ目のオプションは 固定されたスナップショット です。これは、管理者がドリフトに関する最も洞察と制御を行う方法です。ピニングされたスナップショットは、ベースディレクトリーの一部のイメージに最適な承認の設定があり、このスナップショットがベースラインとして選択されることを意味します。これは必須であり、後続の変更は、相互に比較されるのではなく、その固定されたスナップショットと比較されます。
図15.2 ピニングされたスナップショット
スナップショットは、システムに存在する実際のファイルに基づいているため、リソースレベルで存在します。スナップショットがリソースレベルの定義に固定されると、そのシステムに加えられた変更は、そのスナップショットと比較されます。現在のファイルバージョンが固定されたスナップショットと一致する場合、リソースは 準拠 します。
リソースのスナップショットは、ドリフトテンプレートに固定することもできます。その後、そのテンプレートにアタッチされているすべての定義に適用されます。これは、管理者にとって非常に強力なものです。たとえば、ステージングサーバーまたは開発サーバーを使用して EAP パフォーマンスに最適なシステム設定を作成し、誤差テンプレートに固定して、EAP ベースラインのスナップショットを本番環境のすべての EAP サーバーに適用することができます。定義した理想と相対的に、すべての EAP 設定が即座に表示されます。
15.1.3. 特殊なファイル種別を含む宛先のディレクトリー
ドリフトは、ローカルシステムのファイルとディレクトリーの両方を確認してスナップショットを生成し、変更を特定します。これらのファイルとディレクトリーの大半は実際のファイルになりますが、Unix には特別なファイルタイプがあります。また、誤差操作では、宛先ディレクトリーの処理の一部としてこれらのファイルが直面する可能性があります。特にシンボリックリンクや名前付きパイプには、いくつかの動作に関係があります。
シンボリックリンクでは、ドリフト検出は元のファイルまたはディレクトリーへのリンクに従い、スナップショットにそれらのファイルが含まれます。たとえば、一部のライブラリーにシンボリックリンクが設定されている場合は、以下のコマンドを実行します。
ln -ls /home/dev/libs /usr/share/jbossas/server/libs
JBoss Enterprise Application Platform ホーム
libs/
ディレクトリーのディレクトリーにドリフトが設定されている場合は、シンボリックリンクにしたがって /home/dev/libs
、ドリフトスナップショットにすべてのファイルを含めます。
重要
シンボリックリンクが含まれるディレクトリーにドリフトを設定する場合は注意してください。リンクされたすべてのファイルは、誤差ターゲットの一部として含まれます。
リンク先のディレクトリーに多数のファイルがある場合、ドリフト検出の実行には予想よりも時間がかかる可能性があります。また、そのシンボリックリンクディレクトリーへの変更は、意図された場合のドリフトと同じ多くの変更を記録することで、ドリフト検出に予期しない影響を及ぼす可能性があります。
ドリフト定義にシンボリックリンクのディレクトリーを含めない場合は、誤差定義の excludes パラメーターを使用してシンボリックリンクを除外します。
Unix システムで一般的な特別なファイルタイプは パイプ です。シンボリックリンクと同様、ドリフト検出の実行はターゲットディレクトリー内の fifo ファイルを検出できます。ただし、シンボリックリンクとは異なり、ドリフトは fifo ファイルを処理できず、ドリフト検出がハングします。
注記
drift 定義の excludes パラメーターを使用して、ターゲットディレクトリー内の名前付きパイプを除外します。
ファイルタイプ | Drift でサポートされますか? |
---|---|
file | ◯ |
ディレクトリー | ◯ |
シンボリックリンク | ◯ |
pipe | いいえ |
Socket | いいえ |
device | いいえ |
15.1.4. ドリフトおよびリソースタイプ
drift がリソースタイプ(で説明 「リソースおよびドリフト定義テンプレートについて」)で定義されるかどうか。drift テンプレートがリソースタイプの
rhq-plugin.xml
記述子に定義されている場合、そのリソースタイプは drift をサポートします。テンプレートは開始点です(アラートまたはメトリクスコレクションテンプレートなどの強制された設定ではありません)。
3 つの JBoss ON の標準リソースタイプは drift をサポートします。
- すべてのプラットフォーム
- JBoss EAP 6(AS 7)および JBoss AS 5 プラグインを使用するすべてのリソース
- JBoss AS/EAP 5、および JBoss AS 5 プラグインを使用するすべてのリソース
- JBoss AS/EAP 4(非推奨)
誤差サポートはプラグイン記述子で定義されているため、これらのリソースタイプのドリフトサポートを追加するカスタムプラグインを作成できます。ドリフトサポートのあるエージェントプラグインを 作成する例は、『カスタム JBoss ON プラグイン 』を参照してください。
注記
drift は、EAR アプリケーションの下に組み込まれた WAR などの組み込み Web アプリケーションでは対応していません。
ドリフト検出は、ディレクトリーレベル で実行されます。特定のリソースには関連付けられていません。つまり、リソースが実行されていない場合でもドリフト検出を実行できます。また、JBoss ON によって管理されていないアプリケーション、サービス、またはファイルがドリフト検出をサポートしないリソースタイプに対しても、ドリフト検出が発生する可能性があります。
サポートされる 3 つのリソース外のエンティティーを監視するには、プラットフォームリソースでドリフト検出を設定し、監視するアプリケーションまたはサービスが使用するディレクトリーパスとしてベースディレクトリーを定義します。
15.1.5. ドリフト監視の領域の考慮事項
ドリフト監視の設定は、ディスク領域の要件に大きく影響する可能性があります。
JBoss ON は複数のスナップショットを保存します。これはバージョン管理の一部で、監視されたディレクトリーへの変更を元に戻すことができ、管理することができます。
したがって、バックエンドデータベース(Oracle または PostgreSQL)をホストするシステムには、全バンドルのバージョンを保管するのに十分なディスク領域が必要です。また、データベース自体にコンテンツに適したテーブル空間が必要です。
サイズに関する考慮事項は、さまざまな方法でドリフト監視の設定に影響を及ぼす可能性があります。
- 監視するディレクトリーのサイズ。状況によっては、大規模なディレクトリーが 1 つではなく、複数の小さなサブディレクトリーを監視する方が望ましい場合があります。
- ドリフト検出の実行頻度。変更をキャプチャーする必要とバックアップコピーの数を分散します。
- ドリフトスナップショットの保存期間。デフォルトでは、未使用のスナップショット(ピニングされていないスナップショット)は 31 日間保存され、その後削除されます。スナップショットの保存期間を変更すると、データベースサイズを管理するのに役に立ちます。
必要な領域を計算する際には、ターゲットディレクトリーのサイズを見積もり、スナップショットが取得される頻度を使用して、スナップショットを保存する数を把握します。少なくとも 2 倍の領域が利用可能です。PostgreSQL と Oracle の 両方で、vacuum、圧縮、およびバックアップおよび復元などのクリーンアップ操作を実行するには、PostgreSQL と Oracle の両方に 2 倍のデータベースサイズが必要です。
15.1.6. Drift モニタリングに戻る
ドリフト検出を設定する目的は、システムおよびアプリケーションサーバーの変更方法の明確性を提供することです。JBoss ON では、ドリフトを管理する 2 つの方法を利用できます。
drift Monitoring
ドリフト監視は、ターゲットの場所への変更を追跡する機能です。JBoss ON GUI を使用すると、スナップショットをすべて表示し、スナップショット間で個々のファイルの変更を比較し、現在の設定を表示し、変更の詳細を表示できます。また、インベントリーおよびドリフトレポートも提供し、リソースが関連付けられたピニングされたスナップショットに準拠しているかどうかを一目で示します。
ドリフトアラート
ドリフトが発生するたびにアラートをトリガーする特定のアラート状態が存在する。ローリングスナップショットの場合、分散スナップショットごとにアラートが 1 度(および 1 回のみ)送信されます。ピニングされたスナップショットでは、後続の変更がない場合でも、リソースがコンプライアンス不足であっても、検出が実行されるたびに誤差アラートが発生します。
注記
JBoss ON GUI を介して直接ドリフトを修正する方法はありません。ただし、ドリフトアラートに対応して JBoss ON CLI スクリプトを起動することが可能です。たとえば、理想の EAP 設定のパッチを作成できます。EAP サーバーがその設定からドリフトする場合は、JBoss ON CLI スクリプトを使用して、その EAP パッチバンドルをドリフト EAP サーバーにデプロイできます。
[3]
JBoss ON は、バイナリーファイルへの変更を検出します。バイナリーファイルの表示や、バイナリーファイルのバージョン間の変更または diff の変更は、テキストファイルのみを表示しません。