17 チャージバック・エンティティ・タイプの定義

チャージバックは、リソース(Enterprise Managerではエンティティとして知られている)の使用を計測しチャージする方法を提供します。通常、これらのエンティティは、そのタイプがホスト、データベース、WebLogic Serverの管理対象のエンティティで、固有のメトリックを収集してチャージできます。管理者はこれらのメトリックにレートおよびその他の使用要素を割り当てて、ターゲット・インスタンスに割り当てられるチャージ・プランと呼ばれるものの中のチャージ・アイテムにします。毎日のチャージバック・ジョブで、リソースの使用に対してメトリックを収集しチャージを計算します。

Enterprise Managerは数百のエンティティ・タイプを認識していますが、デフォルトでチャージバックが有効になっているものは比較的少数です。プラグイン開発者としては、拡張機能を使用することで、拡張メタデータ・サービス(MDS)を活用してプラグイン内で定義されたエンティティ・タイプのチャージバックを有効にできます。MDSを利用するには、Enterprise Managerの管理対象エンティティ(ME)上で新しいチャージバック・エンティティ・タイプをモデル化したXMLファイルを作成し、Enterprise Managerのメトリックおよび構成に基づいてチャージ・アイテムを定義します。

この章では、チャージバックに追加する新しいエンティティ・タイプを定義する方法について説明します。この章の内容は次のとおりです。

チャージバック拡張ツールキット

チャージバック拡張フレームワークの内部実装に加え、プラグイン開発者は次のツールキットを使用できます。

  • チャージバック・メタデータ・サービス(MDS)登録XMLスキーマ

    emSDK\emMrsXsds\oracle\sysman\emSDK\chargeback\ChargebackMetadata.xsd

  • チャージバックのコールバック・シグネチャおよび組込み実装(組込みコールバックにより、プラグイン開発者は新しいエンティティ・タイプのチャージバック・メタデータ・ファイルにコールバックを登録できます)

    PL/SQLパッケージGC$CHARGEBACKに含まれます。

    PL/SQLコールバックには次のシグネチャがあります。

    PROCEDURE add_entity_callback_name(
    p_em_entity_guid IN RAW,
    p_usage_mode_name IN VARCHAR2 DEFAULT NULL,
    p_entity OUT GC$CBA_ENTITY);
    

これらのツールを使用すると、チャージバック・メタデータを定義して管理対象のEnterprise Managerターゲット・タイプの新しいエンティティ・タイプでのチャージバックが可能になり、またチャージバック・ユーザー・インタフェースを使用してエンティティ・インスタンスをチャージバックに追加し、毎日のジョブ・スケジュールに含まれるように組込みコールバックを登録できます。

新しいチャージバック・エンティティ・タイプを開発およびテストするステップ

新しいチャージバック・エンティティ・タイプを開発およびテストする手順の基本フローには、次のタスクが含まれます。

  1. エンティティおよびチャージ・アイテムにチャージバック・メタデータを定義します。適切なコールバックをインクルードして、チャージバック・ユーザー・インタフェースと連携するようにします。
  2. チャージバック・メタデータ・ファイルを登録します。別の方法では、プラグインにXMLファイルを含めて、プラグインをデプロイします。
  3. メタデータで定義されたチャージ・アイテムを含むチャージバックにチャージ・プランを作成します。
  4. エンティティの追加ウィザードを使用して、新しいエンティティ・タイプをチャージバックに追加します。
  5. 作成したチャージ・プランを追加したエンティティ・タイプに割り当てます。
  6. 毎日のデータ収集ジョブをトリガーして、表に移入します。
  7. 新しいエンティティ・タイプのチャージバックでレポートを実行し、チャージおよびメトリックを表示します。

チャージバック・モデル

この項では、チャージバック・メタデータ・ファイル内のプライマリ要素に関連する基本概念を説明します。

Enterprise Managerエンティティ・タイプ

Enterprise Managerエンティティ・タイプは、定義されるチャージバック・エンティティ・タイプのモデルとして機能します。通常、これは管理可能なエンティティ(ME)として認識されたEnterprise Managerターゲット・タイプです。

チャージバック・エンティティ・タイプ

チャージバック・エンティティ・タイプは、そのコンテナEnterprise Managerエンティティ・タイプをモデルにしています。チャージバック・エンティティ・タイプは、使用モード、つまり、その計測方法で特徴付けられます。使用モードには、他のチャージバック・エンティティ・タイプとの親子関係を含めることができます。通常、直接計測されるチャージバック・エンティティ・タイプは、定義された一連のチャージ・アイテムを持ちます。

1つ以上のチャージバック・エンティティ・タイプは、Enterprise Managerエンティティ・タイプをモデルにできますが、指定されたリリースでアクティブにできるのは、1つのチャージバック・エンティティ・タイプのみです。

使用モード

使用モードはチャージバック・エンティティ・タイプの計測方法(直接またはメンバー・エンティティ・タイプを介した計測)を定義します。また、計測するチャージ・アイテムを表示できます。チャージバック・エンティティ・タイプには、様々な状況に合わせた異なる使用モードがありますが、デフォルトに設定できるモードは1つのみです。

チャージ・テンプレート

チャージ・テンプレートは、チャージバック・エンティティ・タイプを計測するチャージ・アイテムを示します。1つのチャージ・テンプレートを直接計測に関連する各使用モードに対して使用できます。複合または親チャージバック・エンティティ・タイプは、チャージ・アイテムを直接持たないため、チャージ・テンプレートは必要ありません。

チャージ・アイテム

チャージバック・メタデータ・ファイル内のChargeItem要素はチャージ・アイテム・タイプの定義に似ています。収集するデータのタイプと収集方法を定義します。

チャージ・アイテムはME構成、メトリックまたはプロパティに基づきます。また、チャージ・アイテムは、固定量にもできます。

エンティティ・コールバック

各チャージバック・エンティティ・タイプに登録できるエンティティ・インスタンス・レベルのコールバックは2つあります。

  • 管理者がチャージバックに追加するエンティティを選択する際のチャージバック・エンティティの追加ウィザードでコールされるエンティティ・コールバックを追加します。プラグイン開発者を対象とした組込み実装が2つあります。

    gc$chargeback.add_em_entity_cb(
        p_em_entity_guid IN RAW,
        p_usage_mode_name IN VARCHAR2 DEFAULT NULL,
        p_entity OUT GC$CBA_ENTITY);
    
    gc$chargeback.add_em_entity_and_members_cb(
        p_em_entity_guid IN RAW,
        p_usage_mode_name IN VARCHAR2 DEFAULT NULL,
        p_entity_arr OUT GC$CBA_ENTITY_ARR);
    
  • 管理者がチャージバックに追加するエンティティを選択する際のチャージバック・エンティティの追加ウィザードと、複合エンティティに追加された可能性のあるメンバーを検出するチャージバック・データ収集ジョブの両方でコールされるメンバー・コールバックを追加します。プラグイン開発者を対象とした、1つの組込み実装があります。

    gc$chargeback.add_entity_members_cb(
        p_em_entity_guid IN RAW,
        p_usage_mode_name IN VARCHAR2 DEFAULT NULL,
        p_entity_arr OUT GC$CBA_ENTITY_ARR); 
    

gc$chargeback.add_em_entity_and_members_cbおよびgc$chargeback.add_entity_members_cbの両方は、chargeback_parentアソシエーションに基づいて実装されます。

組込みコールバックは、チャージバック・エンティティ・タイプに自動的には適用されません。チャージバック・エンティティ・インスタンスは、チャージバック・メタデータ・ファイルに適用可能なコールバックを登録しないかぎり、エンティティの追加ウィザードに表示されません。これらのコールバックは上書きできません。

サンプル・チャージバックMDS XMLファイル

サンプル・チャージバック・メタデータ・ファイルは、EDKに含まれるホスト・サンプルを補完します。サンプル・チャージバック・メタデータ・ファイルは、ホスト・インスタンスで使用されるストレージおよびメモリーに対して各ギガバイト単位でチャージする率に加え、各ホスト・インスタンスに固定ベース・チャージを含むようホスト・サンプルをサポートするチャージバックを追加することを示しています。

<?xml version="1.0" encoding="UTF-8" ?>
<ChargebackMetadata name="demo_hostsample_cba" description="Chargeback meta data for demo_hostsample" version="1.0"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ChargebackEntityType name="demo_hostsample" displayLabel="Demo Plugin Sample Host" labelNlsId="name" description="Chargeback entity type for sample target type demo_hostsample"
                        descriptionNlsId="" mappingEmEntityType="demo_hostsample" 
                        resourceBundle="oracle.sysman.eml.rsc.chargeback.demo_hostsample_cbaMsg" defaultUsageMode="metered">
    <ChargeItems>
      <!-- fixed item -->
      <ChargeItem name="BaseCharge" displayLabel="Base Charge" labelNlsId="em_ct_base_chg" type="fixed"
                  dataType="number" category="instance" aggregationType="sum" description="Base charge for a demo_hostsample instance">
        <QueryExpression type="internal"></QueryExpression>
      </ChargeItem>
            <!-- config -->
         <!-- usage -->
      <ChargeItem name="memUsageMB" displayLabel="Memory Usage" labelNlsId="em_ct_mem_usg" type="metric"
                  dataType="number" unit="GB" unitNlsId="em_ct_u_GB" category="memory"
                  aggregationType="avg" description="Memory used (GB)">
        <QueryExpression type="internal" valueColumn="value/(1024*1024)"
                         emEntityGuidColumn="entity_guid"
                         metricGroup="MemoryPerf" metricColumn="MemTotal"
                         utcCollectionDateColumn="collection_time_utc">
        </QueryExpression>
      </ChargeItem>
      <ChargeItem name="diskUsageGB" displayLabel="Disk Space Usage" labelNlsId="em_ct_disk_usg" type="metric"
                  dataType="number" unit="GB" unitNlsId="em_ct_u_GB" category="storage"
                  aggregationType="avg" description="Disk storage used (GB)">
        <QueryExpression type="internal" valueColumn="value/(1024*1024)"
                         emEntityGuidColumn="entity_guid"
                         metricGroup="FilesystemPerf" metricColumn="UsedKB"
                         utcCollectionDateColumn="collection_time_utc">
        </QueryExpression>
      </ChargeItem>
    </ChargeItems>
    <ChargeTemplates>
      <ChargeTemplate name="demo_hostsampleMetered" displayLabel="Charge template for metering demo_hostsample" 
                      labelNlsId="http_dedicated" description="Charegeback charge template for metering Http demo_hostsample"
                      descriptionNlsId="demo_hostsample_desc" usageMode="metered" isMaster="yes"></ChargeTemplate>
    </ChargeTemplates>
    <UsageModes>
      <UsageMode name="metered" displayLabel="Metered" labelNlsId="metered" type="dedicated" isChargeable="yes"
                 isNavigational="no" defaultChargeTemplate="demo_hostsampleMetered" description="The usage is metered in demo_hostsample level."></UsageMode>
    </UsageModes>
  </ChargebackEntityType>
  <EntityCallbacks>
    <EntityCallback callbackProc="GC$CHARGEBACK.add_em_entity_cb" type="addEmEntity" entityType="demo_hostsample"/>
  </EntityCallbacks>
</ChargebackMetadata>

表17-1に、新しいチャージバック・エンティティ・タイプの定義に使用するチャージバックMDS XMLファイルのキー要素を示します。使用可能なすべての要素と属性の完全なセットの詳細は、ChargebackMetadata.xsdを参照してください。

表17-1 新しいチャージバック・エンティティ・タイプを定義するキー要素

要素 属性 説明

ChargebackMetadata

name

(必須)チャージバック・エンティティ・セットの一意の名前。

ChargebackEntityType

name

(必須)チャージバック・エンティティ・タイプの一意の名前。

NA

displayLabel

(必須)チャージバック・エンティティ・タイプの表示ラベル。

NA

mappingEmEntityType

Enterprise Managerのチャージバック・エンティティ・タイプの管理可能なエンティティ・タイプ(該当する場合)。

NA

defaultUsageMode

チャージバック・エンティティ・タイプに適用するデフォルトの使用モード。エンティティ・タイプには、複数の使用モードがありますが、デフォルトに設定できるモードは1つのみです。

ChargeItem

name

(必須)チャージ・アイテムの一意の名前。

NA

displayLabel

(必須)チャージ・アイテムの表示ラベル。

NA

type

(必須)チャージ・アイテムのデータソース。metricconfigpropertyまたはfixedになります。

NA

dataType

(必須)チャージ・アイテムのデータ・タイプ。stringまたはnumberになります。

NA

aggregationType

毎時収集したデータを日次合計に集計する方法。許容値はsum (毎時の数値の合計)またはavg (毎時の数値の平均)です。デフォルト値はavgです。

NA

isChargeable

チャージ・プランを作成する際、チャージ・アイテムに管理者がレートを直接設定できるよう規定します。デフォルト値はyesです。

NA

canBeChargeSetCond

インスタンスにチャージ・アイテムのプラン条件値と同じ値がある場合のみ、チャージ・プラン構成に定義されたチャージ・プラン・レートのセットをチャージバック・エンティティ・インスタンスに適用するよう規定します。デフォルト値はnoです。

NA

canBeChargeRateCond

管理者がチャージ・アイテムに条件レートを設定し、アイテムに特定の値を持つチャージバック・エンティティのみに適用できるよう規定します。デフォルト値はyesです。

NA

category

チャージ・アイテムのロジカル・リソース・カテゴリ。activitycpuinstance memorystoragenetworkservicesoftwareuptimeまたはunclassifiedを指定できます。デフォルト値はunclassifiedです。

Key

name

(必須)チャージ・アイテムのキー列の名前。

NA

displayLabel

(必須)チャージ・アイテム・キーの表示ラベル。

QueryExpression

type

(必須)問合せ式のタイプ。チャージ・アイテム・データの収集方法を定義します。この説明では、internalは期待値です。つまり、MEタイプのメトリック、構成およびプロパティが、それぞれメトリック・グループと列名、構成ビューと列名またはプロパティ名に基づいてチャージバックにプルされるということです。

NA

entityNameColumn

emEntityTypeColumn

emEntityNameColumn

emEntityGuidColumn

utcCollectionDateColumn

collectionDateColumn

keyColumn

これらの属性はすべてのチャージ・アイテムに共通のものです。Enterprise Managerリポジトリから抽出されるデータをエンティティ・タイプに定義します。

NA

metricGroup

metricColumn

これらの属性はメトリックに基づいたチャージ・アイテムに固有のものです。

NA

viewName

valueColumn

これらの属性は構成に基づいたチャージ・アイテムに固有のものです。

NA

propertyName

valueColumn

これらの属性はターゲット・プロパティに基づいたチャージ・アイテムに固有のものです。

ChargeTemplate

name

(必須)チャージバック・エンティティ・タイプに使用するチャージ・テンプレートの一意の名前。

NA

displayLabel

(必須)チャージ・テンプレートの表示ラベル。

NA

usageMode

(必須)チャージ・テンプレートに関連付けられた使用モード名。

NA

isMaster

このチャージ・テンプレートがチャージバック・エンティティ・タイプ用のマスターテンプレートであることを規定します。

マスター・チャージ・テンプレートには、チャージバック・エンティティ・タイプに定義されたすべてのチャージ・アイテムが含まれているため、chargeTemplate要素の一部としてアイテム・リストを含める必要はありません。ただし、マスター・チャージ・テンプレートがない場合、要素にはチャージバック・メタデータ・ファイル内のチャージ・アイテムのリストを含める必要があります。

許容値はyesまたはnoです。デフォルト値はnoです。

UsageMode

name

(必須)チャージバック・エンティティ・タイプの使用モードの一意の名前。

NA

displayLabel

(必須)使用モードの表示ラベル。

NA

type

使用モード・タイプ。許容値はdedicated (例: エンティティ・タイプがインスタンスにより計測される場合)またはshared (例: エンティティ・タイプがサービスにより計測される場合)です。デフォルト値はdedicatedです。

NA

defaultChargeTemplate

現在の使用モードのデフォルトとして利用可能なチャージバック・エンティティ・タイプのチャージ・テンプレート。

NA

isChargeable

この使用モードを使用するエンティティがチャージ可能であることを規定します。

許容値はyesまたはnoです。デフォルト値はyesです。

NA

isNavigational

この使用モードを使用するエンティティがナビゲーション可能、つまり子を持つことを規定します。

許容値はyesまたはnoです。デフォルト値はnoです。

EntityCallback

entityType

(必須)適用するエンティティ・タイプの名前。

NA

type

エンティティ・コールバックのタイプ。許容値はaddEmEntityまたはaddMembersです。

NA

callbackProc

(必須)エンティティ・コールバック・プロシージャを識別します。

About NLS IDs

NLS IDはXMLファイルで多くの場合オプションです。ファイルに明示的に定義されていない場合、それらは式に基づいて内部的に生成されます。次に例を示します。

  • エンティティ・タイプの表示名nls idはe_entity_type_nameになります。

  • エンティティ・タイプの説明nls idはe_entity_type_name_descになります。

  • 同様に、使用モードの表示名nls idはu_usage_mode_nameになります。

  • 同様に、使用モードの説明名nls idはu_usage_mode_name_descになります。

この自動生成されたものはResourceBundleファイルの要件を満たします。

チャージバックMDSの登録

次のようにコマンドを実行することでプラグインを登録するための登録サービスを手動で実行します。

emctl register oms metadata
  -service chargeback -core -sysman_pwd <sysmanPWD>
  -file <directory> demo_hostsample_cba.xml

ここで、directoryはチャージバック・メタデータ・ファイルの場所です。登録が成功したら続いてテストします。

プラグインを登録する別の方法として、プラグインにXMLファイルを含めて、プラグインをデプロイできます。Oracleプラグイン・アーカイブ(OPAR)ファイルのoms/metadata/chargebackフォルダ内にXMLファイルが表示されます。管理者およびプラグイン開発者がこのメソッドを使用できます。

エンティティ・タイプ・プラグインのテスト

プラグインを定義して登録したら、次のタスクを実行して設定が適切なことを確認します。ここではタスクの概要を説明します。詳細は、『Cloud管理ガイド』の「チャージバック管理者」の章またはチャージバック・オンラインヘルプを参照してください。すべてのタスクはEnterprise Manager Cloud Controlにログインし、チャージバックを操作していることを想定しています(「Enterprise」メニューから「チャージバック」を選択)。

チャージ・プランの作成

チャージバック・メタデータ・ファイルで定義されたチャージ・アイテムを含むデモ・プラグインのサンプル・ホストにチャージ・プランを作成します。

  1. 「チャージ・プラン」タブの、「作成」メニューで「プラン」を選択します。

  2. プランに名前を付け(デモ・ホスト・プラン)、「追加」をクリックして、デモ・プラグインのサンプル・ホストのエンティティ・タイプを選択します。

  3. 「アイテムの追加」をクリックして、チャージバック・メタデータ・ファイルに定義したベース・チャージ・アイテムを選択します。「OK」をクリックします。

    チャージバック・メタデータ・ファイルに定義した他のアイテム(ディスク領域使用量およびメモリー使用量)に対して、この操作を繰り返します。

  4. 3つのチャージ・アイテムにレートを設定します。ベース・チャージは期間ごとに定率です。他の2つのアイテムは、それぞれGBごと/期間ごとのチャージです。

  5. 「保存」をクリックして計画の作成を完了します。

新しいタイプのエンティティの追加

新しいタイプのエンティティをチャージバックに追加して、チャージおよび計測データを追跡します。

  1. 「エンティティ」タブで、「エンティティの追加」ボタンをクリックします。

  2. ウィザードで、「追加」をクリックします。

  3. デモ・プラグイン・サンプル・ホストのエンティティを検索して、選択したエンティティをチャージバックに追加します。デフォルトの使用モード(計測済)のままにします。「次へ」をクリックします。

  4. 追加したエンティティの行を選択して、「プランの割当て」ボタンをクリックします。

  5. リストでプラン(サンプル・ホスト・プラン)を選択して、「OK」をクリックします。「次へ」をクリックします。

  6. 選択内容を確認し、「発行」をクリックします。チャージバックによりエンティティが追加されたことが確認されます。エンティティがそのチャージ・プラン割当てとともに表に表示されます。

チャージバック・データの確認

チャージバック・データの収集は、24時間周期で発生しますが、オンデマンドで実行するようにできます。「エンティティ」タブの「アクション」メニューから「オンデマンド・データ収集」を選択します。直近のデータを反映するために表が更新されます。

デモ・プラグイン・サンプル・ホストのエンティティ・タイプのチャージ・データおよび計測データの表示。

  1. チャージバックで「レポート」タブを選択します。
  2. 「エンティティ」でデモ・プラグイン・サンプル・ホストを検索します。
  3. 表示するメトリックを選択します。
  4. 「レポートの表示」ボタンをクリックして選択項目に基づいて再計算します。サマリー・グラフが再描画されチャージの割合が表示されます。
  5. 下部ペインに詳細を表示します。オプションを変更して表示を再構成します。