インスタンスと MID サーバーの接続のトラブルシューティングSummaryこの記事では、次のような状況で障害が発生している MID サーバーのトラブルシューティング手順を説明します。 MID サーバーのサービスは稼働していますMID サーバーホストからブラウザ経由で MID サーバーインスタンスに接続できますMID サーバーホストからインスタンスに ping を実行できますWindows ファイアウォールは設定されていませんMID サーバーでプロキシが設定されている可能性がありますInstructions1.MID サーバーのエージェントログを確認すると、次のエラーが表示されています。 10/01/19 09:07:23 (175) StartupSequencer WARNING * WARNING org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 10000 ms when posting to https://<instance>.service-now.com/InstanceInfo.do?SOAP10/01/19 09:07:23 (175) StartupSequencer SEVERE ERROR SOAP Request: <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.service-now.com/GetMIDInfo" xmlns:m="http://www.service-now.com" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:execute></m:execute></SOAP-ENV:Body></SOAP-ENV:Envelope>10/01/19 09:07:23 (175) StartupSequencer SEVERE ERROR SOAP Response: Status code=0, Response body=null10/01/19 09:07:23 (175) StartupSequencer SEVERE ERROR Problem invoking InstanceInfo on https://<instance>.service-now.com/: Please check that the InstanceInfo page exists in the sys_public table and active="true".10/01/19 09:07:23 (175) StartupSequencer SEVERE ERROR org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 10000 ms when posting to https://<instance>.service-now.com/InstanceInfo.do?SOAP(Network Configuration issue) Please check that the MID server can ping the instance: https://<instance>.service-now.com/You may also need to configure the network that the MID server uses to allow traffic over TCP port 443.10/01/19 09:07:23 (175) StartupSequencer SEVERE ERROR * test failurejava.lang.IllegalStateException: Unable to connect to instance.at com.service_now.mid.services.StartupSequencer.runTests(StartupSequencer.java:386)at com.service_now.mid.services.StartupSequencer$Starter.run(StartupSequencer.java:349) 2.SOAP 呼び出しを確認します。 起動シーケンス中に、MID サーバーが以下の URL への SOAP 呼び出しを行うことで、インスタンスとの接続を確認します。ここでの <instance> はターゲットインスタンス名です。 https://<instance>.service-now.com/InstanceInfo.do?SOAP 上記のリンクを参照すると、次の応答が返ってきます。 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring> Error completing SOAP request - Only HTTP POST supported </faultstring> <detail>Error completing SOAP request</detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> InstanceInfo.do?SOAP は GET 要求を受け入れないため、この応答は想定どおりです。ブラウザに上記のメッセージを表示するには、フレンドリーメッセージ表示がオフになっていることを確認してください。 ただし、まだブラウザを使用してインスタンスに接続しているため、この簡単なテストでは、それほど総合的なチェックにはなりません。一部のファイアウォールまたはプロキシサーバーでは、ブラウザからのトラフィック開始が許可されており、「user-agent」または HTTP ヘッダーのその他関連フィールドでフィルタリングすることにより他はすべてブロックされる場合があります。この場合、インスタンスの URL のテストは (あるいは上記の SOAP ページのテストさえも) うまくいきますが、それでも MID サーバーは接続しません。Postman などの SOAP クライアントツールを使用し、次の情報を指定することでインスタンスへの SOAP ポスト呼び出しを実行できます。 HTTP URL: https://<instance>.service-now.com/InstanceInfo.do?SOAP HTTP ヘッダー: コンテンツタイプ:text/xml;charset=UTF-8 ユーザーエージェント:internal_soap_client SOAPAction: Get HTTP 本文: <SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.service-now.com/GetMIDInfo" xmlns:m="http://www.service-now.com" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:execute><table xsi:type="xsd:string">ecc_agent_log</table></m:execute></SOAP-ENV:Body></SOAP-ENV:Envelope> 次の応答が返ってきます。応答には、インスタンスからの情報を含むタグが付けられています。 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <executeResponse xmlns="http://www.service-now.com"> <result> <install_name>XXXX</install_name> <instance_name>myinstance</instance_name> <instance_id>XXXX</instance_id> <build_date>XXXX</build_date> <build_tag>XXXX</build_tag> <system_id>XXXX</system_id> <node_id>XXXX</node_id> <instance_ip>XXXX</instance_ip> <mid_buildstamp>mXXXX</mid_buildstamp> <mid_version>XXXX</mid_version> </result> </executeResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> MID サーバーが Linux で実行されている場合は、次のように curl を実行することもできます。出力 (xmllint でフォーマット) は上記と同じになります。 curl --header 'Content-Type: text/xml;charset=UTF-8' --header 'SOAPAction: Get' --header 'user-agent: internal_soap_client' --data '<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.service-now.com/GetMIDInfo" xmlns:m="http://www.service-now.com" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:execute><table xsi:type="xsd:string">ecc_agent_log</table></m:execute></SOAP-ENV:Body></SOAP-ENV:Envelope>' https://myinstance.service-now.com/InstanceInfo.do?SOAP | xmllint --format - 3.ファイル /agent/config.xml で MID サーバーのプロキシ設定を確認します <parameter name="mid.proxy.use_proxy" value="true"/><parameter name="mid.proxy.host" value="proxy.company.net"/><parameter name="mid.proxy.port" value="803"/> プロキシ情報パラメーターをブラウザに入力して手順 2 で接続をテストできます。 https://<instance>.service-now.com/InstanceInfo.do?SOAP 4.スクリプト済み Web サービス「InstanceInfo」のカスタマイズの有無を確認します。 https://.service-now.com/nav_to.do?uri=sys_web_service.do?sys_id=0cbfe98d83301000dada83ec37d929c8https://<instance>.service-now.com/nav_to.do?uri=sys_web_service.do?sys_id=0cbfe98d83301000dada83ec37d929c8 5.SSL のトラブルシューティング: KB0538621 の手順に従ってインスタンスの IP アドレスを見つけることができます。または、Mac から以下のコマンドを使用して IP を取得できます。 ping instance_name dig +noall +answer instance_name SSL ネゴシエーションの問題が疑われる場合は、次のようにして SSL デバッグを有効にすることができます。 MID サーバーで、ファイル ../agent/conf/wrapper-override.conf を開き、ファイルの下部に次の行があることを確認します (重要:調査が完了したらこの行を削除して MID サーバーを再起動してください)。 wrapper.java.additional.3=-Djavax.net.debug=ssl MID サーバーサービスを再起動します。ssl デバッグ情報が wrapper.log ファイルに記録されます。検索に適した情報は次のとおりです。 trustStore:<Install>\agent\jre\lib\security\cacerts TLS プロトコルバージョン (TLSv1.2) ClientHello の暗号スイート ServerHello の暗号スイート MID サーバーホストで Wireshark パケットキャプチャを実行すると、SSL セッションハンドシェイクを確認できます。インスタンスの IP アドレスでフィルタリングできます。大まかに言うと、SSL ハンドシェイクは次のようになります。 MID サーバークライアント Hello ->インスタンス<- サーバー Hello<- 認定<- サーバー鍵交換<- Hello 完了クライアントキー交換 ->暗号仕様の変更 ->暗号化されたハンドシェイクメッセージ -><- 暗号仕様の変更<- 暗号化されたハンドシェイクメッセージ<- アプリケーションデータ ->