Red Hat Training
A Red Hat training course is available for Red Hat JBoss Operations Network
6.4. サーバー設定の同期
JBoss ON サーバーは、異なる環境でであっても、多くの同じ設定を共有できます。たとえば、異なる JBoss ON サーバーによって開発環境、ステージング環境、および実稼働環境が 3 つすべて管理されても、サーバーは同様のメトリクステンプレートと設定を使用します。
個別の環境と類似した環境の管理を簡素化するために、JBoss ON はサーバーの設定をエクスポートし、その設定を別のサーバーにインポートできます。
設定を管理する権限を持つユーザーは、サーバー設定をエクスポートできます。データには、以下の 2 つのカテゴリーがあります。
- アラート、イベント、モニタリングメトリックの保存期間、ベースライン計算スケジュール、LDAP サーバー設定など、システム設定。
- 各リソースタイプのメトリクスコレクション設定。
この情報は、gz 形式の XML ファイルにダンプされたエクスポートされます。このファイルは、別のサーバーにインポートする前に簡単に編集できます。
注記
サーバー設定の同期は、サーバーが異なるバックエンドデータベースを使用する場合にのみ必要です。データベース(高可用性クラウド)を共有するサーバーはすでに設定を共有しています。
インポートおよびエクスポート操作は JBoss ON CLI でのみ行われます。詳細は、カスタマーポータル の JBoss ON API ドキュメントを参照してください。
6.4.1. サーバー設定のエクスポート
- JBoss ON CLI にログインします。
[root@server bin]# installDir/bin/rhq-cli.sh -u rhqadmin -p rhqadmin
- データをデータベースオブジェクトにエクスポートします。
rhqadmin@localhost:7080$ var ex = SynchronizationManager.exportAllSubsystems();
- そのオブジェクトをエクスポートファイルに変換します。ファイル拡張子は、エクスポート形式が GZIP の XML ファイルである
.xml.gzためです。rhqadmin@localhost:7080$ saveBytesToFile(ex.exportFile, 'export.xml.gz');
注記
サーバーデータをエクスポートするために、ユーザーには管理設定のパーミッションが必要です。
6.4.2. サーバー設定のインポート
サーバー設定は XML ファイルにエクスポートされます。管理者は、このファイルを編集して他の JBoss ON サーバーにインポートされる情報の種類を制御できるため、インポートプロセスに多くの適応性があります。ファイルがインポートされると、最初に一連の検証テストを実行して、設定データを実際にサーバーにインポートできるようにします。次に、2 つのクラス または 同期(システム設定用およびメトリクステンプレート用)を使用して、データのインポートに使用します。
インポートプロセスは管理者が変更できるため、一般的なインポートシナリオがいくつかあります。
- 設定データは、すべてのデフォルト設定を使用して直接サーバーにインポートされます。
- XML ファイルを編集して、設定値がターゲット JBoss ON サーバーに適用されるようにできます。
- インポートされるデータ要素を変更する同期の動作が変更されます。
6.4.2.1. XML インポートファイルの編集
すべてのデータは、1 つの XML ファイルにダンプされます。これには、システム設定、各リソースタイプのメトリック設定、処理命令が含まれます。
設定エントリーはすべて 2 つの大きな <entities> 要素で定義されます。
メトリクステンプレートは各メトリクスを個別の <entity> 要素に個別に一覧表示し、その名前、リソースタイプ、およびプラグインによって識別されるメトリクス自体を要素の引数として識別します。エンティティー ID は JBoss ON データベースのテンプレートを特定しますが、サーバー間で ID を照合する必要がないため、インポート時には無視されます。
<entities id="org.rhq.enterprise.server.sync.MetricTemplateSynchronizer">
<entity>
<data>
<metricTemplate
enabled="false"
defaultInterval="300000"
perMinute="false"
metricName="trap_count"
resourceTypePlugin="snmptrapd"
resourceTypeName="SnmpTrapd"
referencedEntityId="10001">
</metricTemplate>
</data>
</entity>
.....
一方、システム設定はすべて 1 つの <entity> 要素で定義され、各設定パラメーターはエントリーのキーとして指定されます。これらのキーすべてがターゲットサーバーにインポートされているわけではありません。インポートされたキーは、シンクラーの設定によって異なります。
<entities id="org.rhq.enterprise.server.sync.SystemSettingsSynchronizer">
<entity>
<data>
<systemSettings referencedEntityId="0">
<entry key="CAM_BASE_URL">http://10.16.65.121:7080/</entry>
<entry key="CAM_DATA_PURGE_6H">2678400000</entry>
<entry key="CAM_LDAP_BIND_DN"></entry>
.....
</systemSettings>
</data>
</entity>
</entities>6.4.2.2. シンchronizer 設定の変更
JBoss ON は 同期 を使用して、メトリクススケジュールなどの要素を JBoss ON サーバーにインポートし、サーバーに適用する方法を設定します。同期には、すべてのインポート操作にプログラムで設定変更を適用するデフォルトテンプレートがあります。また、エクスポートされた XML ファイルに同期する設定があり、その特定のインポート操作に適用されます。
注記
XML ファイルのカスタム設定は、プログラムによるテンプレートの設定を上書きします。CLI コマンドで渡されるプログラムによる設定は、XML ファイルの設定を上書きします。
特定の同期ツールの設定を出力するには、の同期名を指定します。
SynchronizationManager.getImportConfigurationDefinition().例:
rhqadmin@localhost:7080$ var configDef = SynchronizationManager.getImportConfigurationDefinition('org.rhq.enterprise.server.sync.SystemSettingsSynchronizer')
両方の同期機能の設定をすべて出力するには、次のコマンドを実行します。
rhqadmin@localhost:7080$ var configDefs = SynchronizationManager.importConfigurationDefinitionOfAllSynchronizers rhqadmin@localhost:7080$ configDef = configDefs.get(0) rhqadmin@localhost:7080$ pretty.print(configDef.configurationDefinition.defaultTemplate.configuration)
6.4.2.2.1. XML ファイルのシンchronizer 設定の変更
同期設定をカスタマイズする最も簡単な方法は、エクスポートされた XML ファイルの設定を変更することです。設定およびメトリクスの同期は、リソースプラグイン設定と非常によく似ている XML 要素を使用します。シンクサーのルート要素はで <default-configuration>、設定はその要素内の properties として一覧表示されます。
設定同期には、最も単純な設定があります。これには単一の <ci:simple-property> 要素があり、インポートする設定の一覧は <ci:simple-property> 要素の
value= フラグに指定されます。
<default-configuration>
<ci:simple-property value="AGENT_MAX_QUIET_TIME_ALLOWED, ENABLE_AGENT_AUTO_UPDATE, ENABLE_DEBUG_MODE, ENABLE_EXPERIMENTAL_FEATURES,
CAM_DATA_PURGE_1H, CAM_DATA_PURGE_6H, CAM_DATA_PURGE_1D, CAM_DATA_MAINTENANCE, DATA_REINDEX_NIGHTLY, RT_DATA_PURGE, ALERT_PURGE, EVENT_PURGE,
TRAIT_PURGE, AVAILABILITY_PURGE, CAM_BASELINE_FREQUENCY, CAM_BASELINE_DATASET" type="string" name="propertiesToImport">
<c:description>The names of the properties that should be imported. Note that these are the INTERNAL names as used in the RHQ database</c:description>
</ci:simple-property>
</default-configuration>注記
設定の値は、サーバー設定の JBoss ON データベースで使用される名前です。
メトリクススケジュールはリソースごとに異なるため、メトリクススケジュールの設定はより複雑です。メトリクススケジュールは、以下の 3 つの方法(または組み合わせ)で定義できます。
- プロパティー(<ci:simple-property>)で定義されている <ci:list-property> リストメンバーと値の一覧が含まれる簡単なリスト。
<default-configuration> <ci:list-property name="my-list"> <c:simple-property name="element" type="string"/> <ci:values> <ci:simple-value value="a"/> <ci:simple-value value="b"/> <ci:simple-value value="c"/> </ci:values> </ci:list-property> </default-configuration> - 値のマップ。簡単なリストと、プロパティー()と対応する値のリスト(<ci:simple-property>)を使用します。ただし<ci:simple-value>、各値は名前に基づく単一の指定されたプロパティーに対応します。
<default-configuration> <ci:map-property name="my-map"> <c:simple-property name="prop1" type="integer"/> <c:simple-property name="prop2" type="string"/> <c:simple-property name="prop3" type"boolean"/> <ci:values> <ci:simple-value property-name="prop1" value="1"/> <ci:simple-value property-name="prop2" value="abc"/> <ci:simple-value property-name="prop3" value="true"/> </ci:values> </ci:map-property> </default-configuration> - マップの一覧であるテーブル。マップの各セットは、行の 1 つのテーブルを指定します。
<default-configuration> <ci:list-property name="table"> <c:map-property name="row"> <c:simple-property name="column1" type="integer"/> <c:simple-property name="column2" type="boolean"/> <c:simple-property name="column3" type="string"/> </c:map-property> <ci:values> <ci:map-value> <ci:simple-value property-name="column1" value="1"/> <ci:simple-value property-name="column2" value="true"/> <ci:simple-value property-name="column3" value="a"/> </ci:map-value> <ci:map-value> <ci:simple-value property-name="column1" value="2"/> <ci:simple-value property-name="column2" value="true"/> <ci:simple-value property-name="column3" value="b"/> </ci:map-value> <ci:map-value> <ci:simple-value property-name="column1" value="3"/> <ci:simple-value property-name="column2" value="false"/> <ci:simple-value property-name="column3" value="c"/> </ci:map-value> </ci:values> </ci:list-property> </default-configuration>
たとえば、これはマップを使用して、JBoss AS 5 サーバーの空きメモリーメトリックのメトリックスケジュールのみをインポートします。
<default-configuration>
<ci:simple-property value="false" type="boolean" name="updateAllSchedules" />
<ci:list-property name="metricUpdateOverrides">
<c:map-property summary="false" required="true" readOnly="false" name="metricUpdateOverride">
<c:simple-property type="string" summary="false" required="true" readOnly="false" name="metricName" />
<c:simple-property type="string" summary="false" required="true" readOnly="false" name="resourceTypeName" />
<c:simple-property type="string" summary="false" required="true" readOnly="false" name="resourceTypePlugin" />
<c:simple-property type="boolean" summary="false" required="true" readOnly="false" name="updateSchedules" />
</c:map-property>
<ci:values>
<ci:map-value>
<ci:simple-value name="metricName" value="MCBean|ServerInfo|*|freeMemory"/>
<ci:simple-value name="resourceTypeName" value="JBoss AS Server"/>
<ci:simple-value name="resourceTypePlugin" value="JBossAS5"/>
<ci:simple-value name="updateSchedules" value="true"/>
</ci:map-value>
</ci:values>
</ci:list-property>
</default-configuration>
すべてのメトリクススケジュールを更新するには、<ci:simple-property> 要素をに設定し name="updateAllSchedules"ます。
単一のメトリクススケジュールを更新するには、property 要素の名前をに設定し、updateSchedules property の値を metricUpdateOverride 設定し trueます。
6.4.2.2.2. プログラムによるシンクレーション設定の変更
設定を変更するには、デフォルトの新しいインスタンスを作成し、setValue 設定オブジェクトを使用してリストからキーを追加または削除します。設定同期では、インポートするキー名が一覧表示されます。
configurationObject.getSimple('propertiesToImport').setValue(defaultSettingsToImport + ', keyName')
メトリクススケジュールでは、プロパティーのリストまたはプロパティーマップに基づいて、リソースタイプごとのメトリクススケジュールを一覧表示します。
var update = new PropertyMap('metricUpdateOverrides')
update.put(new PropertySimple('propertyName', 'resourcePluginName'))- デフォルトの定義を取得します。
rhqadmin@localhost:7080$ var systemSettingsImportConfigurationDefinition = SynchronizationManager.getImportConfigurationDefinition('org.rhq.enterprise.server.sync.SystemSettingsSynchronizer') - 新しい設定インスタンスを作成します。
rhqadmin@localhost:7080$ var configurationObject = systemSettingsImportConfigurationDefinition.configurationDefinition.defaultTemplate.createConfiguration() rhqadmin@localhost:7080$ var systemSettingsImportConfiguration = new ImportConfiguration(systemSettingsImportConfigurationDefinition.synchronizerClassName, configurationObject)
- 新しいインスタンスの設定を変更します。たとえば、サーバー設定の同期の場合、以下を実行します。
rhqadmin@localhost:7080$ var defaultSettingsToImport = configurationObject.getSimple('propertiesToImport').stringValue rhqadmin@localhost:7080$ configurationObject.getSimple('propertiesToImport').setValue(defaultSettingsToImport + ', CAM_BASE_URL')メトリクステンプレート同期の場合:configurationObject.getSimple('updateAllSchedules').setBooleanValue(true) var updateList = new PropertyList('metricUpdateOverrides') var update = new PropertyMap('metricUpdateOverride') update.put(new PropertySimple('metricName', 'MCBean|ServerInfo|*|freeMemory')) update.put(new PropertySimple('resourceTypeName', 'JBossAS Server')) update.put(new PropertySimple('resourceTypePlugin', 'JBossAS5')) update.put(new PropertySimple('updateSchedules', 'true')) updateList.add(update) configurationObject.put(updateList)
6.4.2.3. 設定のインポート
- JBoss ON CLI にログインします。
[root@server bin]# installDir/bin/rhq-cli.sh -u rhqadmin -p rhqadmin
- 設定を含む XML ファイルをインポートします。
rhqadmin@localhost:7080$ var data = getFileBytes('export.xml.gz'); rhqadmin@localhost:7080$ SynchronizationManager.importAllSubsystems(ex, null);null パラメーターは、インポートプロセスで XML ファイルのデフォルト設定が使用されるか、またはデフォルトが XML にない場合、ターゲットサーバーに定義された設定を使用することを意味します。 で代替の設定が構築されている場合は 「シンchronizer 設定の変更」、代わりにプログラムで指定できます。例:rhqadmin@localhost:7080$ var configsToImport = new java.util.ArrayList() rhqadmin@localhost:7080$ configsToImport.add(systemSettingsImportConfiguration); rhqadmin@localhost:7080$ configsToImport.add(metricTemplatesImportConfiguration); rhqadmin@localhost:7080$ SynchronizationManager.importAllSubsystems(ex,
configToImport);