ヘッダーをスキップ

Oracle Enterprise Manager拡張ガイド 10gリリース5（10.2.0.5） B54134-01 |
| 目次 | 索引

戻る | 次へ |

# 11 receivelet

receiveletは、サード・パーティのネットワーク要素から送信された外部の通知をEnterprise Managerが受信できるようにするライブラリです。このような通知は、Oracle Management Agentからのリクエストなしで非同期に送信されます。

通常、Oracle Management Agentのデータ取得のメカニズムは、ポーリング・モデル、すなわちfetchletと呼ばれるモジュラー・ライブラリに基づきます。fetchletは、管理対象ターゲットから定期的に様々なメトリックの値を収集します。その後、収集されたデータがOracle Management Agentによってユーザー定義のしきい値と比較され、しきい値に達している場合はイベントが生成されます。

receiveletを使用すると、これらのメトリックをより効率的に処理できます。独自のイベントの条件を検出し、イベントの発生時のみEnterprise Managerと通信することは、管理対象ターゲットの機能に依存します。この通信が発生すると、Oracle Management Agentはreceiveletを使用して情報を受信します。

receiveletを使用すると、最終的にfetchletを介して収集されるデータのアラートをより早く取得することができます。また、アラートとデータの両方を送信したり、実際のデータのグラフがアラートに関連付けられていない場合にアラートのみを送信する手段として、receiveletを使用できます。

fetchletのかわりには使用できませんが、receiveletはデータ収集のもう1つの手段です。fetchletによる定期的なポーリングと比較すると、receiveletの方が通知の即時性が高くなります。したがって、データをフェッチできる場合は、fetchletを使用してデータを取得してください。ただし、使用するサーバーの性能により、fetchletに関連付けられているものより低いコストでイベントまたはデータが送信される場合は、receiveletを使用してください。

receiveletは、特定のタイプの管理対象ターゲットと密接に結合している場合や、幅広い潜在的ターゲットに役立つ場合があります。

Enterprise Managerには次のreceiveletが用意されています。

- SNMP receivelet

- アドバンスト・キューreceivelet

- HTTP receivelet

## SNMP receivelet

SNMP receiveletを使用すると、サード・パーティのネットワーク要素からSNMPトラップの通知を受信し、Oracle Management Serviceと互換性のある形式に変換できます。

管理対象環境でサード・パーティのエンティティを監視している間に、サード・パーティのネットワーク要素のステータスが使用不可になった場合、あるいはそのメトリック重大度条件（メトリックしきい値）に達したか、超過した場合は、サード・パーティのネットワーク要素のSNMPエージェントによって、Oracle Management Agentに通知が送信されます。これらの通知はSNMPトラップの形式の場合があり、この形式は、Oracle Management Agentからの要求なしに非同期的にトリガーされます。

これらのトラップはSNMPに基づくため、Oracle Management Agentでは、SNMP receiveletを使用してSNMPトラップを受信し、Oracle Management Agentと互換性のある形式に変換します。

SNMPトラップを受信すると、metadata.xml構成ファイルのpush descriptorセクションで定義されているオブジェクト識別子（OID）のみ（つまり、Enterprise Managerによる監視が必要なサード・パーティのネットワーク要素のみ）に関連する情報がSNMP receiveletによって抽出されます。構成ファイルおよびDocument Type Declaration（DTD）ファイルの場所に関する情報は、第2章「管理プラグインの開発」を参照してください。

SNMPトラップがSNMPエージェントから送信されるたびに、SNMP receiveletはSNMPエージェントの構成に基づいてこれらのトラップを受信し、Enterprise Managerが理解できる形式（push descriptor情報に基づくイベントまたはデータ・ポイントなど）に変換して、その情報（XMLファイル）をアップロード・ディレクトリに格納します。Upload Managerは、アップロード・ディレクトリにあるこのような新しいファイルをチェックし、Oracle Management Serviceにアップロードします。次に、Enterprise ManagerはOracle Management Serviceにアクセスして収集された情報を抽出し、ユーザーに表示します。

SNMPトラップを受信するために必要な構成

SNMPトラップを受信するには、Oracle Management Agent側およびSNMPターゲット・エージェント側で、いくつかの構成設定を行う必要があります。

この設定により、SNMPターゲットは、Oracle Management AgentのSNMP receiveletにSNMPトラップを送信できるようになります。SNMPトラップを受信すると、SNMP receiveletはMatchAgentAddrやMatchEnterpriseなどのPush Descriptorプロパティを使用して、トラップが属するターゲットおよびメトリックを識別します。次に、SNMP receiveletはEvent<metric-column>またはEvent<metric-column>OID、SeverityCodeなどのPush Descriptorプロパティを使用して、トラップをイベントに変換します。この変換が行われると、変換されたイベントがSNMP receiveletによって管理リポジトリにアップロードされ、コンソールに表示されます。

Oracle Management Agent側で必要な構成設定

1. `$ORACLE_HOME/sysman/emd/targets.xml`ファイルでSNMPターゲットを定義します。

2. SNMP receivelet（SNMPトラップ）を使用して監視するターゲットのメトリックを識別します。

3. 例に示すようにSNMP Push Descriptorを使用して、識別したメトリックをターゲット・タイプ・メタデータ・ファイル（$ORACLE_HOME/sysman/admin/metadata/<target-type.xml）内で定義します。

4. SNMPターゲットのトラップからEMイベントを生成するメトリックの列を識別します。

5. 識別したイベントの列をPush Descriptorプロパティの1つとして定義します。たとえば、Event<metric-column>またはEvent<metric-column>OIDなどです。

6. これらの構成設定を行った後、変更した構成がemctlリロード・エージェント・コマンドによってOracle Management Agentにリロードされ、SNMP receiveletによってUDPポートのリスニングが開始されます。

   デフォルトでは、SNMP receiveletはOracle Management Agentと同じポートのUDPでリスニングします。ただし、SNMP receiveletに異なるリスニング・ポートを使用する場合は、`emd.properties`ファイル内で`SnmpRecvletListenNIC(=8002)`を追加してください。

SNMPターゲット・エージェント側で必要な構成設定

1. SNMPターゲット・エージェントのmanager表内で、マネージャのIPまたはホスト名およびマネージャのポートについて、エントリを追加または変更します。

   マネージャのホスト名は、Oracle Management Agentが稼働するコンピュータの名前です。マネージャのポートは、SNMP receiveletがSNMPトラップを受信するポートです。

入力パラメータ

表11-1 SNMP receiveletの入力パラメータ

パラメータ | 型 | 説明 | 使用
--- | --- | --- | ---
MatchEnterprise | String | 送信するトラップを定義するためのOID。 | 必須。
MatchGenericTrap | String | 汎用SNMPトラップのコード。 | 必須。
MatchSpecificTrap | String | （汎用トラップのいずれでもない）MIBで定義されたトラップ、そのMIBで割り当てられたID。 | 必須。
MatchAgentAddr | String | 生成するSNMPエージェントの、トラップで送信される際のIPアドレス。 | 必須。
Event<metric-column> | String | このトラップの受信時に、recvletによってこのメトリック列で重大度が生成されるように指定します。metric-columnの値はこのパラメータの値にする必要があります。（EMメトリックに必要な値がトリガーするSNMP変数と同じでない場合に便利です。） | 必須（イベントの生成が必要な場合）。ただし、Event<metric-column>OIDが指定されている場合は必須ではありません。
Event<metric-column>OID | String | このトラップの受信時に、recvletによってこのメトリック列で重大度が生成されるように指定します。メトリック列の値は、このパラメータの値と等しいOIDを使用するトラップのvarbindから取得する必要があります。 | 必須（イベントの生成が必要な場合）。ただし、Event<metric-column>が指定されている場合は必須ではありません。
SeverityCode | String | 重大度が生成されるレベルを指定します。このパラメータの値は、CRITICAL、WARNINGまたはCLEARのいずれかにする必要があります。 | 必須。ただし、SeverityCodeOIDが指定されている場合は必須ではありません。
SeverityCodeOID | String | 重大度が生成されるレベルを指定します。このパラメータの値と等しいOIDを使用するトラップのvarbindが文字列CRITICAL、WARNINGまたはCLEARのいずれかである場合、そのレベルで重大度が生成されます。いずれでもない場合、重大度は生成されません。（このパラメータは、インテグレータがEM専用にトラップを設計する場合のみ使用されますが、この場合は役立ちます。） | 必須。ただし、SeverityCodeが指定されている場合は必須ではありません。
Data<metric-column>OID | String | このトラップの受信時に、メトリック列の値をこのパラメータの値と等しいOIDを使用するトラップのvarbindから取得する必要があるメトリックで、recvletによってデータ・ポイントが生成されるように指定します。（SNMP Push Descriptorには多数のData*パラメータがある可能性があります。その場合は、指定されたすべての列がトラップの適切なvarbindから移入されて、単一の行が戻されます。SNMP PushDescriptorには、Data*パラメータとSeverity*パラメータの両方がない場合や、複数のSeverity*パラメータがない場合があります。） | 必須（データ・ポイントの生成が必要な場合）。
Key<metric-column>OID | 文字列。 | このPushDescriptorによって生成された重大度またはデータ・ポイントには、このメトリック列のキー値が含まれている必要があります。キー値は、このパラメータの値と等しいOIDを使用するトラップのvarbindから取得する必要があります。メトリック定義に含まれるそれぞれのキー列に対して、PushDescriptorにKey*パラメータが必要です。 | オプション。
Context<metric-column>OID | String | PushDescriptorによって重大度が生成される場合、重大度のイベント・コンテキストにこのメトリック列の値が含まれている必要があります。値は、このパラメータの値と等しいOIDを使用するトラップのvarbindから取得する必要があります。PushDescriptorによってデータ・ポイントが生成される場合、このパラメータは無視されます。 | オプション。データ・ポイントのみに使用できます。

例

例11-1は、ベンダー固有のルーターからのトラップの例です。

例11-1 ベンダー固有のルーターからのトラップ

    ascendLinkDown    TRAP-TYPE
       ENTERPRISE     ascend
       VARIABLES     { ifIndex, ifAdminStatus, ifOperStatus, ifType,
                       ifName }
       DESCRIPTION    "This trap is in addition to the generic linkDown
                trap defined in RFC1215.  This trap provides
                additional information such as ifAdminStatus,
                ifOerStatus, ifName, slotIfSlotIndex, slotIfItemIndex.
                This is an Alarm class trap and it can
                be enabled/disabled via alarmEnabled and/or
                ascendLinkDownTrapEnabled in trap profile.
                This trap is sent only if rfc1215 linkDown trap is generated."
       ::= 50

例11-2は、Oracle Management Agentによるこのトラップの受信方法を示しています。この例の<x>は、問題のある特定のインタフェースを識別するifIndexの値です。

例11-2 Oracle Management Agentによって受信されるトラップ

    Message:
        version: 0
        community: 'public'
        Trap-PDU:
            enterprise: enterprises.ascend (1.3.6.1.4.1.529)
            agent-addr: 138.2.204.10
            generic-trap: 6
            specific-trap: 50
            time-stamp: <timestamp from router's sysUptime>
            variable-bindings:
                Name: ifIndex.<x> (1.3.6.1.2.1.2.2.1.1.<x>)
                Type: INTEGER
                Value: <x>

                Name: ifAdminStatus.<x> (1.3.6.1.2.1.2.2.1.7.<x>)
                Type: INTEGER
                Value: up (1)

                Name: ifOperStatus.<x> (1.3.6.1.2.1.2.2.1.8.<x>)
                Type: INTEGER
                Value: down (2)

                Name: ifType.<x> (1.3.6.1.2.1.2.2.1.3.<x>)
                Type: INTEGER
                Value: iso88023-csmacd (7)

                Name: ifName.<x> (1.3.6.1.2.1.2.2.1.31.<x>)
                Type: DisplayString
                Value: 'eth0'

例11-3は、metadata.xmlファイルでのメトリックの定義方法を示しています。

例11-3 metadata.xmlファイルで定義されたメトリック

    <Metric NAME="interfaces" TYPE="TABLE">
        <TableDescriptor>
            <ColumnDescriptor NAME="name" TYPE="STRING" IS_KEY="TRUE"/>
            <ColumnDescriptor NAME="type" TYPE="NUMBER" IS_KEY="FALSE"/>
            <ColumnDescriptor NAME="status" TYPE="NUMBER" IS_KEY="FALSE"/>
            <ColumnDescriptor NAME="configured_status" TYPE="NUMBER" IS_KEY="FALSE"/>
        </TableDescriptor>
    </Metric>

例11-4は、重大度をトリガーするためにmetadata.xmlファイルでpush descriptorを定義する方法を示しています。

例11-4 重大度をトリガーするためのmetadata.xmlファイルのPush Descriptor

    <PushDescriptor RECVLET_ID="SNMPTrap">
       <Property NAME="MatchEnterprise" SCOPE="GLOBAL">1.3.6.1.4.1.529</Property>
       <Property NAME="MatchGenericTrap" SCOPE="GLOBAL">6</Property>
       <Property NAME="MatchSpecificTrap" SCOPE="GLOBAL">50</Property>
       <Property NAME="MatchAgentAddr" SCOPE="INSTANCE">AdminAddress</Property>
       <Property NAME="SeverityStatusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.8</Property>
       <Property NAME="KeyNameOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.31</Property>
       <Property NAME="ContextTypeOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.3</Property>
       <Property NAME="ContextConfigured_statusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.7</Property>
       <Property NAME="SeverityCode" SCOPE="GLOBAL">CRITICAL</Property>
    </PushDescriptor>

例11-5は、ifNameをキー列および他の3つをデータ列として使用して、同じトラップでのデータのレポートを指定するデータ・ポイントをトリガーするために、metadata.xmlファイルでpush descriptorを定義する方法を示しています。

例11-5 データ・ポイントをトリガーするためのmetadata.xmlファイルのPush Descriptor

    <PushDescriptor RECVLET_ID="SNMPTrap">
       <Property NAME="MatchEnterprise" SCOPE="GLOBAL">1.3.6.1.4.1.529</Property>
       <Property NAME="MatchGenericTrap" SCOPE="GLOBAL">6</Property>
       <Property NAME="MatchSpecificTrap" SCOPE="GLOBAL">50</Property>
       <Property NAME="MatchAgentAddr" SCOPE="INSTANCE">AdminAddress</Property>
       <Property NAME="KeyNameOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.31</Property>
       <Property NAME="DataStatusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.8</Property>
       <Property NAME="DataTypeOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.3</Property>
       <Property NAME="DataConfigured_statusOID" SCOPE="GLOBAL">1.3.6.1.2.1.2.2.1.7</Property>
    </PushDescriptor>

エラー処理

SNMP receiveletからスローされる例外はありません。

注意

- metadata.xmlファイルには複数のpush descriptor定義を含めることができます。

- イベント形式の場合は、push descriptorによって1つのメトリック列のみが定義されることを確認してください。同様に、他のメトリック列に対して個別のpush descriptor定義を作成できます。

- データ・ポイント形式の場合は、push descriptorによって1つのメトリック列のみが定義されることを確認してください。ただし、Context<column_name>OIDパラメータを使用して、同じpush descriptor定義で他のメトリック列の詳細を取得できます。

## アドバンスト・キューreceivelet

アドバンスト・キューreceiveletを使用すると、Oracleデータベースから通知を受信して、Oracle Management Serviceと互換性のある形式に変換できます。

Oracleデータベースを使用すると、監視を行い、Oracleデータベース独自の多数のパフォーマンス・メトリックにしきい値を適用できます。このアドバンスト・キューreceiveletは、これらのメトリックの通知を受信するためのものです。そのため、アドバンスト・キューreceiveletはOracleデータベース・ターゲットのみに適用されます。

Oracleデータベースを監視している間、いずれかのパフォーマンス・メトリックがそのしきい値を超過するたびに、データベースによってアドバンスト・キューにアラートがポストされます。Oracleデータベースに接続する際に、Oracle Management Agentはそれ自体をアドバンスト・キューのサブスクライバとして自己登録します。その後、Oracle Management Agent用に、しきい値の各アラートのコピーがキュー内に保存されます。

Oracle Management Agentが実行中で、アラートのエンキュー時にデータベースに接続した場合は、アラートがただちに取得可能になり、リポジトリ層に渡されます。ただし、Oracle Management Agentが実行中でない場合は、アラートが保存され、データベースへの次回の接続時までreceiveletによる取得はできません。

アドバンスト・キューreceiveletが通知を受信するには、oracle_database.xmlファイルを更新して異なるメトリックのpush descriptor定義を含める必要があります。oracle_database.xmlファイルは$EMDROOT/sysman/admin/metadata/にあります。このファイルで定義されている問合せ記述子を保持すると、Oracleデータベースによってアラートが生成されるとただちにアドバンスト・キューreceiveletがアラートの通知を受信する一方で、引き続きSQL fetchletが通常のデータを収集できるようにすることができます。

アドバンスト・キューreceiveletのpush descriptorには、QueueName（定数GLOBAL文字列ALERT_QUEに定義されている）、MachineName、Port、SID、UserNameなどのプロパティおよびパスワードが含まれます。また、push descriptorはKeyFieldプロパティを定義する場合があります。このプロパティの値は、nmercm_RecvletManager_reportEvent()へのすべてのコールでkeyvalueパラメータとして値が使用されるアドバンスト・キュー・アラートのフィールドの名前になります。

入力パラメータ

表11-2 AQ receiveletの入力パラメータ

パラメータ | 型 | 説明 | 使用
--- | --- | --- | ---
QueueName | String | アドバンスト・キューの名前。 | 必須。
MachineName | String | データベース・ホスト。 | 必須。
Port | Integer | データベース・ポート。 | 必須。
SID | String | データベースSID。 | 必須。
UserName | String | ユーザー名。 | 必須。
password | String | ユーザー・パスワード。 | オプションであり、デフォルトは""。

例

例11-6は、キー値を持たないwait_bottlenecksメトリックに対して、oracle_database.xmlファイルでpush descriptorを定義する方法を示しています。

例11-6 oracle_database.xmlファイルでのキー値を持たないメトリックに対するPush Descriptor

        <PushDescriptor RECVLET_ID="AQMetrics">
          <PushProperty NAME="QueueName" SCOPE="GLOBAL">ALERT_QUE</PushProperty>
          <PushProperty NAME="MachineName" SCOPE="INSTANCE">MachineName</PushProperty>
          <PushProperty NAME="Port" SCOPE="INSTANCE">Port</PushProperty>
          <PushProperty NAME="SID" SCOPE="INSTANCE">SID</PushProperty>
          <PushProperty NAME="UserName" SCOPE="INSTANCE">UserName</PushProperty>
          <PushProperty NAME="password" SCOPE="INSTANCE">password</PushProperty>
        </PushDescriptor>

例11-7は、キー値を持つtbspFullメトリックに対して、oracle_database.xmlファイルでpush descriptorを定義する方法を示しています。キー値は名前列です。この値は、アラートが適用される表領域の名前であり、アラートのOBJECT_NAMEフィールドに含まれて送信されます。

例11-7 oracle_database.xmlファイルでのキー値を持つメトリックに対するPush Descriptor

         <PushDescriptor RECVLET_ID="AQMetrics">
          <PushProperty NAME="QueueName" SCOPE="GLOBAL">ALERT_QUE</PushProperty>
          <PushProperty NAME="MachineName" SCOPE="INSTANCE">MachineName</PushProperty>
          <PushProperty NAME="Port" SCOPE="INSTANCE">Port</PushProperty>
          <PushProperty NAME="SID" SCOPE="INSTANCE">SID</PushProperty>
          <PushProperty NAME="UserName" SCOPE="INSTANCE">UserName</PushProperty>
          <PushProperty NAME="password" SCOPE="INSTANCE">password</PushProperty>
          <PushProperty Name="KeyField" SCOPE="GLOBAL">OBJECT_NAME</PushProperty>
        </PushDescriptor>

エラー処理

アドバンスト・キューreceiveletからスローされる例外はありません。

## HTTP receivelet

HTTP receiveletは、他のreceiveletと同じように機能しますが、HTTPまたはHTTPSプロトコルを介して通信するターゲットからの通知を受信するために設計されている点で異なります。

環境内で稼働するアプリケーション・サーバーを例にあげます。これらのアプリケーション・サーバーには、しきい値に達したり、ステータスが停止中になるたびに通知をトリガーするメカニズムが組み込まれている場合があります。HTTP receiveletを使用すると、これらの通知を受信して、その情報を（XMLファイルとして）アップロード・ディレクトリに格納できます。

データ情報を通知として送信する際に使用されるパラメータを次に示します。

- TargetName

- TargetType

- MetricName

- CollTS

アラート情報を通知として送信する際に使用されるパラメータを次に示します。

- TargetName

- TargetType

- CollTS

- MetricName

- MetricColumn

- KeyValue

- Severity

- DataValue

- AlertMessage

例11-8は、HTTPベース・ターゲットからの（アクセス・キーを持たない）通知の例です。これらの通知は変換する必要がないため、渡された情報が単純に取得され、そのままXMLファイルに格納されます。例11-9は、この情報を受信するためにmetadata.xmlファイルで単純なpush descriptorを定義する方法を示しています。

ただし、アクセス・キーを生成して、HTTPベースのターゲットから受信するメトリック情報の認証に使用することもできます。これは、認可されたターゲットからの通知のみが解析されるようにするためです。

通常、なりすましやDoS攻撃の問題を回避するために、管理エージェントへの通信を保護する必要があります。そのための選択肢の1つは、HTTPSプロトコルを通信メカニズムとして使用してチャネルを暗号化すること、もう1つは、管理エージェントによって認可されたターゲットのみに通信を制限することです。この認証メカニズムには、アクセス・キーの生成が含まれます。

認証またはアクセス・キーは、必要時に管理エージェントによって生成され、HTTP receiveletへの接続中に使用できるように、HTTPベースのターゲットに渡されます。管理エージェントは、生成されたこれらのキーを独自のメモリーに格納し、それぞれの通知に有効なキーがあることを検証します。リクエスト文字列のキーがすでに生成されている場合は、その値が戻されます。例11-10は、アクセス・キーを生成するためにmetadata.xmlファイルで複雑なpush descriptorを定義する方法を示しています。

注意: 通信を保護することは1つの選択肢にすぎません。情報を認証せずに通知を受信することも可能です。

アクセス・キーが生成されたら、HTTP receiveletへの接続中に使用できるように、HTTPベースのターゲットに送信する必要があります。これは、次のいずれかの手段で行います。

1. HTTP receiveletのpush descriptorの一部としてスクリプトを実行する、オプションのcommand。例11-10は、push descriptorをオプションのcommandパラメータと一緒に使用してスクリプトを実行し、生成されたアクセス・キーを戻す方法を示しています。

2. プロセスを起動してアクセス・キーを提供する、ポーリングされるメトリックの設定。例11-11は、問合せ記述子を使用してHTTPベースのターゲットを定期的にポーリングし、生成されたアクセス・キーを戻す方法を示しています。

入力パラメータ

表11-3 HTTP receiveletの入力パラメータ

パラメータ | 型 | 説明 | 使用
--- | --- | --- | ---
command | String | 特定のサーバーから受信したメトリック情報のアクセス・キーを生成するperlスクリプトの名前。 | オプション。アクセス・キーを使用した認証が必要な場合のみ使用します。
STDIN | String | 起動されたコマンドにstdinで渡される値を制御します。値は、起動されたコマンド・ファイルの内部で、アクセス・キーの生成ロジックに使用されます。 | オプション。
ENV | String | 環境を経由して渡される値を制御します。（セキュリティの心配がない場合、インテグレータはENV接頭辞を使用して、起動されたコマンドに環境内で渡す値をリクエストすることもできます。）値は、起動されたコマンド・ファイルの内部で、アクセス・キーの生成ロジックに使用されます。 | オプション。

例

例11-8は、HTTPベース・ターゲットからのアクセス・キーを持たない通知の例です。

例11-8 アクセス・キーを持たない通知

     <!-- Connect -->
    <HTTPRecvletConnect HOST="%%EMD_HOST" PORT="%%EMD_PORT" ACCESS_KEY_FILE="%%{T_
    WORK}/tvmayh04.key">
    <!-- get database metric and dump the metric data -->
    <HTTPRecvletSendAlert TARGET_TYPE="tvmayh04" TARGET_NAME="tvmayh04" METRIC_
    NAME="metric" METRIC_COLUMN="col2" SEVERITY="CLEAR" KEY_VALUE="1" VALUE="1"
    MESSAGE="Severity from recvlet" TIMESTAMP="2000-01-01 00:00:00" />
    <!-- Disconnect -->
    </HTTPRecvletConnect>

例11-9は、metadata.xmlファイルの単純なpush descriptorの例です。

例11-9 metadata.xmlファイルの単純なPush Descriptor

    <Metric NAME="metric" TYPE="TABLE">
       <TableDescriptor>
           <ColumnDescriptor NAME="col1" TYPE="NUMBER" IS_KEY="TRUE"/>
           <ColumnDescriptor NAME="col2" TYPE="NUMBER" IS_KEY="FALSE"/>
       </TableDescriptor>
       <PushDescriptor RECVLET_ID="HTTP">
       </PushDescriptor>
     </Metric>

例11-10は、metadata.xmlファイルの複雑なpush descriptorの例、および生成されたアクセス・キーをHTTPベースのターゲットに戻す方法を示しています。

例11-10 metadata.xmlファイルの複雑なPush Descriptor

    <PushDescriptor RECVLET_ID="HTTPRecvlet">
      <Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl %scriptsDir%/startHRClient.pl</Property>
      <Property NAME="STDINKey" SCOPE="SYSTEMGLOBAL">_hr_acc_key_%NAME%_%TYPE%_TestMetric</Property>
      <Property NAME="STDINTName" SCOPE="INSTANCE">NAME</Property>
      <Property NAME="STDINTType" SCOPE="INSTANCE">TYPE</Property>
      <Property NAME="STDINMetric" SCOPE="GLOBAL">TestMetric</Property>
    </PushDescriptor>

この結果、startHRClient.plスクリプトが実行され、次の値がstdinに送信されます。

    Key=<AccessKey>
    TName=<TargetName>
    TType=<TargetType>
    Metric=TestMetric

STDINを使用して値を渡す方法は、機密データがコマンドラインや処理環境に含まれないようにするのに役立ちます。

例11-11 生成されたアクセス・キーをポーリングで戻す方法

    <QueryDescriptor FETCHLET_ID="OSLineToken">
    <Property NAME="command" SCOPE="GLOBAL">%perlBin%/perl %scriptsDir%/checkHRClient.pl</Property>
    <Property NAME="STDINKey" SCOPE="SYSTEMGLOBAL">_hr_acc_key_%NAME%_%TYPE%_TestMetric</Property>
    <Property NAME="ENVTName" SCOPE="INSTANCE">NAME</Property>
    <Property NAME="ENVTType" SCOPE="INSTANCE">TYPE</Property>
    <Property NAME="ENVMetric" SCOPE="GLOBAL">TestMetric</Property>
    </QueryDescriptor>

エラー処理

HTTP receiveletからスローされる例外はありません。