フォワード・プロキシーを使用して通信するためのデータ・コレクターの構成

ご使用のファイアウォール・ルールで外部ホストへの透過的アウトバウンド HTTPS 接続が許可されていない場合は、フォワード・プロキシーにトラフィックを送信するようにデータ・コレクターを構成できます。APM_GW_PROXY_CONNECTION 環境変数を編集して、データ・コレクターがフォワード・プロキシーを介して通信するように構成します。

始める前に

データ・コレクターが接続する Cloud APM データ・センターの IP アドレスを判別するには、Data Center IP addresses (APM Developer Center) を参照してください。その後、ファイアウォール・ルールを調整して、確認した IP アドレスにフォワード・プロキシーから要求を送信できるようにしてください。

openssl コマンドを使用すると、データ・コレクターがインストールされているコンピューター・システムが、Cloud APM データ・センターの各サーバーと接続できるかどうかを確認することができます。Cloud APM で使用されている暗号スイートがネットワークでサポートされているかどうかを確認することもできます。openssl コマンドの結果、コンピューター・システムが接続できないことが示された場合は、フォワード・プロキシーをセットアップしなければならない可能性があります。コマンドの結果が Cloud APM サーバー証明書を取得できなかったことを示している場合は、ネットワーク・チームと協力して、必要な暗号スイートがサポートされていない理由を判別してください。Cloud APM で使用される暗号スイートのリストについては、セキュア通信を参照してください。

以下の例に示すように、openssl を実行します。
echo quit | openssl s_client
-state -connect <domain-name>:443
-tls1_2 -cipher
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384

ここで、domain-nameCloud APM のサブスクリプションのドメイン名です。.

サブスクリプションのドメイン名の確認方法については、フォワード・プロキシーを使用して通信するためのエージェントの構成を参照してください。

接続が成功すると、次の例のようなメッセージが表示されます。
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=2 C = US, O = IBM Service Engage,
CN = ca_ec_384.ibmserviceengage.com
verify error:num=19:self signed certificate in certificate chain
verify return:0
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange A
SSL_connect:SSLv3 read server certificate request A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client certificate A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
---
Certificate chain
0 s:/C=US/O=IBM Service Engage/OU=Application Performance
Management/CN=*.agents.na.apm.ibmserviceengage.com
i:/C=US/O=IBM Service Engage/OU=Application Performance
Management/CN =ca_ec_384.apm.ibmserviceengage.com
1 s:/C=US/O=IBM Service Engage/OU=Application Performance
Management/CN=ca_ec_384.apm.ibmserviceengage.com
i:/C=US/O=IBM Service Engage/CN=ca_ec_384.ibmserviceengage.com
2 s:/C=US/O=IBM Service Engage/CN=ca_ec_384.ibmserviceengage.com
i:/C=US/O=IBM Service Engage/CN=ca_ec_384.ibmserviceengage.com
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICkjCCAhegAwIBAgIIXlr284nLPaMwDAYIKoZIzj0EAwMFADCBhDELMAkGA1UE
BgwCVVMxGzAZBgNVBAoMEklCTSBTZXJ2aWNlIEVuZ2FnZTErMCkGA1UECwwiQXBw
bGljYXRpb24gUGVyZm9ybWFuY2UgTWFuYWdlbWVudDErMCkGA1UEAwwiY2FfZWNf
Mzg0LmFwbS5pYm1zZXJ2aWNlZW5nYWdlLmNvbTAeFw0xMzEyMDIxNjM2MDlaFw0y
MzEyMDExNjM2MDlaMIGGMQswCQYDVQQGDAJVUzEbMBkGA1UECgwSSUJNIFNlcnZp
Y2UgRW5nYWdlMSswKQYDVQQLDCJBcHBsaWNhdGlvbiBQZXJmb3JtYW5jZSBNYW5h
Z2VtZW50MS0wKwYDVQQDDCQqLmFnZW50cy5uYS5hcG0uaWJtc2VydmljZWVuZ2Fn
ZS5jb20wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQmrGoCkAMoNAC3F6MIo1zR8fcO
mczYXtUux2bhlOibn3jQdxamhDR91nr2RBerGjMIITKNXd2MaOr3b6m8euk1BAL3
KsbN9lqvw94kXg0BTO1IHAcdsZQB+AuEVVhmDVGjUDBOMAwGA1UdEwEB/wQCMAAw
HwYDVR0jBBgwFoAU/zpE5TOnQ8LSuvbSWRfpbiGea08wHQYDVR0OBBYEFHL0At4O
GUdcOHVGg4Tfo4hl7LLGMAwGCCqGSM49BAMDBQADZwAwZAIwDWPHo5I04ZFVrkfk
St6gwH2UNF37jBscRN1lOE4SIwezZAqVs42BNMkWRjJBgiHzAjBm4m3zOjsXzNL8
+u8ALjQQCpBDT6dUHujzY5CRxG0xEHi5IXsXf4QwbctnjjvTeYA=
-----END CERTIFICATE-----
subject=/C=US/O=IBM Service Engage/OU=Application Performance
Management/CN=*.agents.na.apm.ibmserviceengage.com
issuer=/C=US/O=IBM Service Engage/OU=Application Performance
Management/CN=ca_ec_384.apm.ibmserviceengage.com
---
Acceptable client certificate CA names
/C=US/O=IBM Service Engage/CN=ca_ec_384.ibmserviceengage.com
/C=US/O=IBM Service Engage/OU=Application Performance
Management/CN=ca_ec_384.apm.ibmserviceengage.com
/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert
Global Root CA/C=US/O=IBM Service Engage/OU=Application Performance
Management/CN=*.agents.na.apm.ibmserviceengage.com
Server Temp Key: ECDH, prime256v1, 256 bits
---
SSL handshake has read 2659 bytes and written 261 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES128-GCM-SHA256
Server public key is 384 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-ECDSA-AES128-GCM-SHA256
Session-ID:
A18C31D0B45A1166357C917E1CFCD86A9FBEDB4A0EB768EF5390AC28C95CB7EF
Session-ID-ctx:
Master-Key:
252B8FE2731E51AC0B79A27C7BED33CA8B15AF4CFD015C98DBACA46EA01DC40B
9E6B56E62E0F332FF6B56266B5ADD7B0
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1510772474
Timeout : 7200 (sec)
Verify return code: 19 (self signed certificate in certificate chain)
---
DONE
SSL3 alert write:warning:close notify

コンピューター・システムが Cloud APM サーバーに接続できない場合、次の例のようなメッセージが表示されます。
getaddrinfo: Name or service not known
connect:errno=2

ネットワーク内のどこかで暗号スイートがブロックされているためにコンピューター・システムがサーバー証明書を取得できない場合、次の例のようなメッセージが表示されます。
SSL_connect:failed
---
no peer certificate available
---
No client certificate CA names sent

このタスクについて

フォワード・プロキシーが使用された場合、データ・コレクターは最初にそのプロキシーとの TCP 接続を開きます。データ・コレクターは、接続要求およびターゲット・エンドポイント (Cloud APM サーバー) の URL をフォワード・プロキシーに送信します。次に、フォワード・プロキシーがターゲット・エンドポイントとの間に TCP 接続を確立し、データ・コレクターと Cloud APM サーバーとの間の HTTPS トンネリング・セッションをセットアップします。

図 1. フォワード・プロキシー使用時の接続図
フォワード・プロキシー使用時の接続図。

一部のデータ・コレクターは、プロキシー (例えば、Node.js、Liberty データ・コレクター) の認証をサポートします。データ・コレクターは、構成されているプロキシー・ユーザー ID およびパスワードを使用することによる、フォワード・プロキシーへのログオンはサポートしていません。

手順

  1. Python データ・コレクターのフォワード・プロキシー通信を構成するには、以下のいずれかのステップを実行します。
    • テキスト・エディターで、データ・コレクターのプロパティー・ファイルである <dc home>/config.properties を開きます。ここで <dc home> は、データ・コレクターのインストール・ホーム・ディレクトリーです (例: /usr/lib/python2.7/site-packages/ibm_python_dc)。プロキシー・ホストおよびポート番号を使用して 変数を更新します (例えば、APM_GW_PROXY_CONNECTION =http://9.181.138.247:8085)。このファイルで変数を編集すると、Python データ・コレクターが有効になっているすべてのアプリケーションが影響を受けます。
      注: 単一アプリケーションに対してフォワード・プロキシー通信を構成するには、<dc home>/config.properties ファイルをその単一アプリケーションのディレクトリーにコピーします。アプリケーション・ディレクトリーで 変数を更新します。
    • Linux システム上で以下のコマンドを実行します。
      export APM_GW_PROXY_CONNECTION =http://<http proxy host>:<http proxy port>
      以下に例を示します。
      export APM_GW_PROXY_CONNECTION =http://9.181.138.247:8085
  2. Node.js データ・コレクターに対してフォワード・プロキシー通信を構成するには、以下のいずれかのステップを実行します。
    • Linux システム上で以下のコマンドを実行します。
      export APM_GW_PROXY_CONNECTION =http://<http proxy host>:<http proxy port>
      以下に例を示します。
      export APM_GW_PROXY_CONNECTION =http://9.181.138.247:8085
    • Node.js データ・コレクターのフォワード・プロキシー・サーバーにアクセスするのにユーザー名とパスワードが必要な場合、Linux システムで以下のコマンドを実行します。
      export APM_GW_PROXY_CONNECTION =http://<http proxy user>:
      <http proxy password>@<http proxy host>:<http proxy port>
      以下に例を示します。
      export APM_GW_PROXY_CONNECTION =http://Joe:passw0rd@9.181.138.247:8085
  3. Liberty データ・コレクターに対してフォワード・プロキシー通信を構成するには、<Liberty server home>/jvm.options ファイルを編集します。ここで、<Liberty server home> は Liberty サーバーのホーム・ディレクトリーです (例えば、/opt/ibm/wlp/usr/servers/defaultServer/jvm.options)。以下のいずれかのステップを実行します。
    • 認証が不要の場合、jvm.options ファイルに以下のコードを追加します。
      -Dhttp.proxyHost=<http proxy host>
      -Dhttp.proxyPort=<http proxy port>
      -Dhttps.proxyHost=<https proxy host>
      -Dhttps.proxyPort=<https proxy port>
      -Djava.net.useSystemProxies=true
      
    • フォワード・プロキシー・サーバーにアクセスするのにユーザー名とパスワードが必要な場合、jvm.options ファイルに以下のコードを追加します。
      -Dhttp.proxyHost=<http proxy host>
      -Dhttp.proxyPort=<http proxy port>
      -Dhttp.proxyUser=<http proxy user> 
      -Dhttp.proxyPassword=<http proxy password>
      -Dhttps.proxyHost=<https proxy host>
      -Dhttps.proxyPort=<https proxy port>
      -Dhttps.proxyUser=<https proxy user> 
      -Dhttps.proxyPassword=<https proxy password>
      -Djava.net.useSystemProxies=true
      
  4. 変更を適用するために、ローカル・アプリケーションを再始動します。

タスクの結果

フォワード・プロキシーを介して通信するようにデータ・コレクターを構成しました。