Oracle Cloud Infrastructureデータ・アップロード・エンドポイントへのリアル・ユーザー・モニタリング・データの転送

様々なデプロイメント・シナリオに基づいて、リアル・ユーザー・モニタリング・データをOracle Cloud Infrastructureデータ・アップロード・エンドポイントに転送できます。

デプロイメントの構成シナリオの決定

  • シナリオ1: 会社がすべてのユーザーに対して完全なインターネット・アクセスを許可している場合は、特別な構成やプロキシ設定なしで、リアル・ユーザー・モニタリング・データがApplication Performance Monitoringに送信されます。
  • シナリオ2: 会社がインターネット・アクセスを制限しているが、それでもリアル・ユーザー・モニタリング・データ全部をApplication Performance Monitoringに送信する必要がある場合は、リクエストがApplication Performance Monitoringに送信されるように既存のファイアウォールまたはプロキシを構成する必要があります。プロキシを介したリアル・ユーザー・モニタリング・データの転送を参照してください。
  • シナリオ3: セキュリティまたは管理に関する特殊な要件がある場合は、より制御された方法でトラフィックをApplication Performance Monitoringに転送するリバース・プロキシをネットワーク内に構成できます。リバース・プロキシを介したリアル・ユーザー・モニタリング・データの転送を参照してください。
  • シナリオ4: 特定のリクエスト・ヘッダーを必要とするプロキシ、ゲートウェイまたはカスタマ・ネットワーク・コンポーネントなど、特殊なアップロード要件があるデプロイメントについては、データ・アップロード・リクエストのカスタム・ヘッダーの構成を参照してください。

プロキシを介したリアル・ユーザー・モニタリング・データの転送

エンタープライズWebアプリケーションの内部ユーザーがそのアプリケーションにアクセスできるが、一般のインターネットにはアクセスできない場合、すべてのユーザーに対してデータ・アップロード・エンドポイント(window.apmrum.ociDataUploadEndpoint)へのアクセスを許可するようにプロキシ・ルールを適応する必要があります。この方法では、ユーザーがデータ・アップロード・エンドポイントにアクセスできなくても、リアル・ユーザー・モニタリングのパフォーマンス・データをデータ・アップロード・エンドポイントに送信できます。

データ・アップロード・エンドポイントの詳細は、アプリケーションでのAPMブラウザ・エージェントのデプロイを参照してください。プロキシの構成はベンダーに固有です。構成の詳細は、プロキシ・ベンダーが提供しているドキュメントを参照してください。

リバース・プロキシを介したリアル・ユーザー・モニタリング・データの転送

リバース・プロキシの手法を使用すると、ブラウザはカスタマ・ファイアウォールを通過することができます。リバース・プロキシはエンタープライズ・ネットワーク内部のエンドポイントのように動作し、各リクエストをデータ・アップロード・エンドポイントに転送して、そこから受信したレスポンスを返します。リバース・プロキシを構成するには、次のステップを実行します:

別のデータ・アップロード・エンドポイントを使用するためのAPMブラウザ・エージェントの構成

APMブラウザ・エージェントは、データ・アップロード・エンドポイントをリバース・プロキシのローカル・エンドポイントでオーバーライドする必要があります。これを行うには、window.apmrum.ociDataUploadEndpointのプロパティを構成します。リバース・プロキシを使用するには、有効な証明書と、この項の後半で示されている詳細情報が必要です。

設定の例を次に示します:
window.apmrum.ociDataUploadEndpoint='https://myproxy.example.com:4443'
上の例のmyproxy.example.comとポート番号4443を、リバース・プロキシがインストールされているマシンのホスト名とポート番号に置き換えます。データ・アップロード・エンドポイントが更新されたら、アプリケーション・サーバーを再起動します。

リバース・プロキシの構成

リバース・プロキシは、NGINX、Squid、WebLogic ProxyPluginなどの任意のリバース・プロキシ構成ツールを使用して構成できますが、次の手順はOracle HTTP Server (OHS)を使用している場合にのみ適用されます。

ノート

OHSが設定されている場合は、ステップ1-6をスキップします。信頼できる証明書を使用している場合は、ステップ7をスキップします。
  1. http://www.oracle.com/technetwork/middleware/webtier/downloads/index.htmlに移動します。

  2. ライセンス契約に同意します。

  3. 「Oracle WebTier 12cR2」および「Oracle HTTP Server 12.2.1.1」までスクロールします。

  4. 「Linux-64 bit」を選択し、インストーラをダウンロードします。

  5. Oracle HTTP Serverをインストールします。詳細は、『Oracle HTTP Serverのインストールと構成』のOracle HTTP Serverのインストールに関する項を参照してください。

    ノート

    前述のドキュメントでは、OHSが/Oracleにインストールされていることを想定しています。
  6. nodemanagerを起動します。

    # export DOMAIN_HOME=<WLS Domain home>
    # cd $DOMAIN_HOME/bin
    # nohup ./startNodeManager.sh > nm.out&
    次に例を示します:
    # export DOMAIN_HOME="/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain"
    # cd $DOMAIN_HOME/bin
    # nohup ./startNodeManager.sh > nm.out&
  7. HTTPサーバー証明書をウォレットに追加します。

    1. ウォレットを準備します:

      # export DOMAIN_HOME=<WLS Domain home>
      # cd $DOMAIN_HOME/config/fmwconfig/components/OHS/instances/ohs1/keystores
      # mkdir proxy
      # $DOMAIN_HOME/../../../oracle_common/bin/orapki wallet create -wallet . -auto_login_only

      次に例を示します:

      # export DOMAIN_HOME=/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain
      # cd $DOMAIN_HOME/config/fmwconfig/components/OHS/instances/ohs1/keystores
      # mkdir proxy
      # $DOMAIN_HOME/../../../oracle_common/bin/orapki wallet create -wallet . -auto_login_only
    2. 証明書を取得して、ウォレットに追加します:

      方法1:

      # echo -n | openssl s_client -connect <Data Upload Endpoint>:<port> | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/proxy_certificate.cert

      方法2:

      1. CA証明書をインストール(または更新)します:

        # yum update ca-certificates
      2. すべての証明書が含まれるバンドルCAルート・ファイルを個別のファイルに分割します。(orapkiではバンドルを処理できません。)

        # awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < /etc/pki/tls/certs/ca-bundle.crt
      3. 個々の証明書をOHSプロキシ・ウォレットにロードします。

        # for i in `ls cert.*.pem`; do / Oracle/Middleware/Oracle_Home/oracle_common/bin/orapki wallet add -wallet . -cert $i -trusted_cert -auto_login_only; done
  8. ociDataUploadEndpointを取得します。詳細は、ブラウザ・エージェントの手動インジェクトを参照してください。

  9. Oracle HTTP ServerでHTTPSリバース・プロキシを構成します。

    1. エディタで、フォルダohs1にあるssl.confファイルを開きます。

      # export DOMAIN_HOME=<WLS Domain home>
      DOMAIN_HOME/config/fmwconfig/components/OHS/instances/ohs1

      次に例を示します:

      # export DOMAIN_HOME="/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain"
      # vi $DOMAIN_HOME/config/fmwconfig/components/OHS/instances/ohs1/ssl.conf
    2. 既存の仮想ホスト定義セクションで、SSLリバース・プロキシを構成します。

      次に例を示します:
      ...
      <VirtualHost *:4443>
        <IfModule ossl_module>
         #  SSL Engine Switch:
         #  Enable/Disable SSL for this virtual host.
         SSLEngine on
         SSLProxyEngine on
         SSLProxyWallet "${ORACLE_INSTANCE}/config/fmwconfig/components/${COMPONENT_TYPE}/instances/${COMPONENT_NAME}/keystores/proxy"
         SSLProxyVerify none
         ProxyPass "/20200630/observations" "https://datauploadendpointurl.com/20200630/observations/public-span"
         ProxyPassReverse "/20200630/observations" "https://datauploadendpointurl.com/20200630/observations/public-span"
         ProxyPreserveHost On
         ProxyRequests off
         ...
      </VirtualHost>
      ...
    3. URL https://datauploadendpointurl.com/20200630/observations/public-spanを実際のデータ・アップロード・エンドポイントに置き換えます。

      ノート

      ブラウザとリバース・プロキシの間でHTTP通信を使用するには、SSLEngine on行をコメント・アウトします。
    4. ohs1コンポーネントを起動します。

      # export DOMAIN_HOME=<WLS Domain home>
      # cd DOMAIN_HOME/bin
      # ./startComponent.sh ohs1

      次に例を示します:

      # export DOMAIN_HOME=/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain
      # cd DOMAIN_HOME/bin
      # ./startComponent.sh ohs1

データ・アップロード・リクエストのカスタム・ヘッダーの構成

プロキシ、ゲートウェイまたはその他のネットワーク・コンポーネントに特定のHTTPリクエスト・ヘッダーが必要な場合は、uploadHdrsプロパティを使用して、これらのヘッダーをAPMブラウザ・エージェントのデータ・アップロード・リクエストに追加します。この拡張構成は、特殊なアップロード要件を持つデプロイメントにのみ必要です。

次の設定をブラウザ・エージェント構成に追加し、サンプルのヘッダー名と値をデプロイメントに必要なものに置き換えます。

window.apmrum = window.apmrum || {};
window.apmrum.uploadHdrs = {
    'X-Custom-Header': 'custom-value'
};

次の要件と制限が適用されます。

  • uploadHdrsを、ヘッダー名および値を含むオブジェクトに設定します。各名前と値は空でない文字列である必要があります。

  • 構成されたヘッダーは、APMコレクタに送信されたReal User Monitoringデータ・アップロード・リクエスト、またはociDataUploadEndpointで指定されたエンドポイントにのみ適用されます。

  • Content-TypeからuploadHdrsはオーバーライドできません。ブラウザ・エージェントは、アップロード・フォーマットに基づいてこのヘッダーを設定します。

  • カスタム・アップロード・ヘッダーが構成されている場合、ブラウザ・エージェントは、fetchやXMLHttpRequest (XHR)などのリクエスト・ヘッダーをサポートするトランスポートを使用します。カスタム・リクエスト・ヘッダーを設定できないsendBeaconは使用しません。

  • クロスオリジン・コレクタ、プロキシまたはリバース・プロキシ・エンドポイントの場合、エンドポイントのクロスオリジン・リソース共有(CORS)構成でカスタム・ヘッダーが許可されていることを確認します。ブラウザは、Access-Control-Request-Headersのカスタム・ヘッダー名をリストするCORSプリフライト・リクエストを送信する場合があります。