MIDサーバーの認証情報同期エラーと、それが依存するGetMIDInfo/getCredentials SOAPリクエストのデバッグSummary<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } さまざまな機能/アプリが MID サーバーを使用して統合を行い、インスタンス内のテーブルの認証情報を使用してエンドポイントで認証します。MID サーバーがこれらのプローブで使用する前に、インスタンスからこれらの認証情報を取得できない原因は多数あります。この KB は、この種の問題をデバッグする方法に関する一般的なヒントを提供することを目的としています。 注:2021 年にはそれらが原因である可能性がはるかに高いため、ここまで行く前に、discovery_credentialsテーブルに破損したレコードがないか確認し、MID サーバーが正常なキーチェーン証明書で検証されています。 エラーの例 フローデザイナーワークフローの統合ハブ AD スポークから PowerShell ステップを実行したときに、エージェントログに「認証情報と親和性の取得に失敗しました」というエラーが表示されます。オレンジ色のエラーは、インスタンスから認証情報をフェッチできなかった場合の以前の黄色のエラーの副作用にすぎません。 12/07/21 09:28:03 (580) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 Worker starting: IPaaSActionProbe source: 2188411d601c4598654314fee866757d12/07/21 09:28:04 (549) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 DEBUG: Received 2188411d601c4598654314fee866757d but no listeners found, proceeding with default12/07/21 09:28:04 (642) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 Found local IP addresses: 127.0.0.1,10.110.117.23512/07/21 09:28:04 (924) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 DEBUG: Flushing session cache due to credential load.12/07/21 09:28:04 (939) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 Creating cache...12/07/21 09:30:59 (977) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 WARNING *** WARNING *** Socket timeout12/07/21 09:30:59 (977) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 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><agent xsi:type="xsd:string">be0d0a89f59c059818d469c47e912e1f</agent> <purpose xsi:type="xsd:string">GetCredentials</purpose></m:execute></SOAP-ENV:Body></SOAP-ENV:Envelope>12/07/21 09:30:59 (993) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 SEVERE *** ERROR *** SOAP Response: Status code=0, Response body=null12/07/21 09:30:59 (993) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 SEVERE *** ERROR *** GetCredentials: non-retryable html response - Socket timeout12/07/21 09:30:59 (993) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 SEVERE *** ERROR *** Failed to retrieve credentials and affinities.12/07/21 09:30:59 (993) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 DEBUG: No valid credential found, running script without credential12/07/21 09:30:59 (993) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 DEBUG: Executing command: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy unrestricted -noninteractive -nologo -noprofile -command "& {& 'scripts\PowerShell\PSScript.ps1' -computer '10.110.117.112' -script 'C:\ServiceNow\MID Server Rct\agent3\scripts\PowerShell\ADSpoke\ActionLookupGroup.ps1' -useCred $true -ismid $false -isDiscovery $true -debug $true -logInfo $false -skipTest $false -executeRemote $false -processTimeout 600 -copyScriptToTarget $false; exit $LASTEXITCODE}"12/07/21 09:30:59 (993) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 DEBUG: With credential named : MID service account12/07/21 09:31:00 (039) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 DEBUG: Thread name is Powershell is executing...12/07/21 09:31:01 (383) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 DEBUG: The exit value from waitFor() is 312/07/21 09:31:03 (462) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 DEBUG: Execution status: failed12/07/21 09:31:03 (462) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 SEVERE *** ERROR *** Authentication failure with the local MID server service credential12/07/21 09:31:03 (462) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 SEVERE *** ERROR *** Failed while executing ActionLookupGroup.ps1 (Access denied)12/07/21 09:31:03 (462) Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9 SEVERE *** ERROR *** Authentication failure with the local MID server service credential... または、ディスカバリー Shazzam プローブの実行時に次のようなエラーが発生した場合 2021-12-14 08:57:29 (067) ConcurrentPortScannerEngine-0:7b300be7879801d02c8864e83cbb3538 重大 *** エラー *** An error occurred while decrypting credentials from instancecom.snc.automation_common.integration.exceptions.AutomationIOException: Unable to retrieve data from instance. This MID may not be validated.com.glide.util.MIDServerInfoPayloadDecrypter.decryptPayload(MIDServerInfoPayloadDecrypter.java:25) でat com.service_now.mid.creds.provider.standard.StandardCredentialsProvider.loadCredentials(StandardCredentialsProvider.java:317)at com.service_now.mid.creds.provider.standard.StandardCredentialsProvider.load(StandardCredentialsProvider.java:287)com.service_now.mid.creds.provider.standard.StandardCredentialsProvider.loadIfNecessary(StandardCredentialsProvider.java:299) そして、その場合は、おそらくcredential_reloadシステムコマンド中にGetMIDInfo GetIsAgentValidへのこの呼び出しを実行した次のような429回の拒否が原因であり、これは資格情報がロードされないことを意味します。 2021-12-12 23:43:31 (253) Worker-Interactive:SystemCommand-6bd7bf83871c81502c8864e83cbb351c DEBUG: Event: RGRPerfMetricEvent2021-12-12 23:43:31 (424) Worker-Interactive:SystemCommand-6bd7bf83871c81502c8864e83cbb351c 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><agent xsi:type="xsd:string">ad85a9eddb061810ccbe44c3059619f1</agent><purpose xsi:type="xsd:string">GetIsAgentValid</purpose></m:execute></SOAP-ENV:Body></SOAP-ENV:Envelope>2021-12-12 23:43:31 (424) Worker-Interactive:SystemCommand-6bd7bf83871c81502c8864e83cbb351c SEVERE *** ERROR *** SOAP Response: Status code=429, Response body=<!DOCTYPE html><html><head><title>Error Page</title></head><body><h2 align="center" style="margin:10%;">Sorry, an error occurred or this page isn't available.</h2></body></html>2021-12-12 23:43:31 (424) Worker-Interactive:SystemCommand-6bd7bf83871c81502c8864e83cbb351c WARNING *** WARNING *** GetIsAgentValid: request failed - null waiting 10 seconds to retry2021-12-12 23:43:42 (018) Worker-Interactive:SystemCommand-6bd7bf83871c81502c8864e83cbb351c DEBUG: Flushing session cache due to credential load.2021-12-12 23:43:43 (237) Worker-Interactive:SystemCommand-6bd7bf83871c81502c8864e83cbb351c SEVERE *** ERROR *** An error occurred while decrypting credentials from instance この例は、インスタンス内のAPIキー認証情報レコードが不正なために発生します。 2023-09-03T07:51:46.680-0400 INFO (Worker-Interactive:SystemCommand-95b008394745b194d7327942846d4329) [AWorker:128] Worker starting: SystemCommand source: credentials_reload2023-09-03T07:51:46.680-0400 INFO (Worker-Interactive:SystemCommand-95b008394745b194d7327942846d4329) [Instance:928] Running system command: credentials_reload2023-09-03T07:51:49.111-0400 WARN (Worker-Interactive:SystemCommand-95b008394745b194d7327942846d4329) [XMLUtil:523] org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 170660; Character reference "&#16" is an invalid XML character.2023-09-03T07:51:49.111-0400 WARN (Worker-Interactive:SystemCommand-95b008394745b194d7327942846d4329) [StandardCredentialsProvider:402] Problem reading credentials: null2023-09-03T07:51:49.111-0400 WARN (Worker-Interactive:SystemCommand-95b008394745b194d7327942846d4329) [StandardCredentialsProvider:385] No credentials from instance were loaded. MID server may not have access to credentials table2023-09-03T07:51:49.111-0400 INFO (Worker-Interactive:SystemCommand-95b008394745b194d7327942846d4329) [MIDCredentialsConfigProvider$MyEventListener:83] com.service_now.mid.creds.provider.standard.StandardCredentialsProvider reloaded2023-09-03T07:51:49.111-0400 INFO (Worker-Interactive:SystemCommand-95b008394745b194d7327942846d4329) [ECCSender:206] Enqueuing: E:\\agent\work\monitors\ECCSender\output_0\ecc_queue.95b008394745b194d7327942846d4329.xml2023-09-03T07:51:49.127-0400 INFO (Worker-Interactive:SystemCommand-95b008394745b194d7327942846d4329) [AWorker:136] Worker completed: SystemCommand source: credentials_reload time: 0:00:02.431 インスタンス アプリ ノードは GetMIDInfo 要求に付随してログを記録し、要求応答で送信する前にインスタンスが資格情報を復号化する際に発生した問題を示します。 2023-09-03 03:56:32 (491) SOAPProcessorThread8814b7691b89fd1460ae54a3604bcb60 025135AD1B853D1460AE54A3604BCBF8 txid=8c147f691b89 WARNING *** WARNING *** REST Msg Outbound - OAuthTokenRetriever : No token in OAuth2Profile: [XTM,b1cd40c673521010395108b24ff6a7b3]2023-09-03 03:56:32 (801) SOAPProcessorThread8814b7691b89fd1460ae54a3604bcb60 025135AD1B853D1460AE54A3604BCBF8 txid=8c147f691b89 WARNING *** WARNING *** string may not be encrypted: Error occurred while trying to: SYMMETRIC_DECRYPTION2023-09-03 03:56:32 (801) SOAPProcessorThread8814b7691b89fd1460ae54a3604bcb60 025135AD1B853D1460AE54A3604BCBF8 txid=8c147f691b89 WARNING *** WARNING *** Value present in the column: api_key from table: api_key_credentials may not be encrypted2023-09-03 03:56:32 (801) SOAPProcessorThread8814b7691b89fd1460ae54a3604bcb60 025135AD1B853D1460AE54A3604BCBF8 txid=8c147f691b89 Reloading script engine cache2023-09-03 03:56:32 (805) SOAPProcessorThread8814b7691b89fd1460ae54a3604bcb60 025135AD1B853D1460AE54A3604BCBF8 txid=8c147f691b89 SEVERE *** ERROR *** Couldn't find Crypto Module2023-09-03 03:56:32 (813) SOAPProcessorThread8814b7691b89fd1460ae54a3604bcb60 025135AD1B853D1460AE54A3604BCBF8 txid=8c147f691b89 WARNING *** WARNING *** Module key for the missing Crypto Module is: d2532d131b858594235015ff034bcb2c2023-09-03 03:56:32 (814) SOAPProcessorThread8814b7691b89fd1460ae54a3604bcb60 025135AD1B853D1460AE54A3604BCBF8 txid=8c147f691b89 WARNING *** WARNING *** string may not be encrypted: Input length must be multiple of 8 when decrypting with padded cipher2023-09-03 03:56:32 (814) SOAPProcessorThread8814b7691b89fd1460ae54a3604bcb60 025135AD1B853D1460AE54A3604BCBF8 txid=8c147f691b89 WARNING *** WARNING *** Value present in the column: password from table: discovery_credentials may not be encrypted2023-09-03 03:56:33 (033) SOAPProcessorThread8814b7691b89fd1460ae54a3604bcb60 025135AD1B853D1460AE54A3604BCBF8 txid=8c147f691b89 WARNING *** WARNING *** REST Msg Outbound - OAuthTokenRetriever : No token in OAuth2Profile: [RWS,227c722573521010395108b24ff6a78b] Showing the XML of the bad api_key_credentials record confirms there were some weird characters in the API Key field to cause this, which was not in the normal encrypted field format.<api_key>���A��0f���7r��{7!��</api_key> Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Instructions<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 目次 MID サーバーのデバッグをオンにして再現するインスタンスで要求を処理しているコードを理解するトランザクションを検索するSOAP デバッグをオンにして、インスタンスアプリノードログを確認しますバックグラウンドスクリプトから同じコードを実行セッションのデバッグをオンにすることができます監視 stats.do/Threads.doこの例の根本原因: MID サーバーのデバッグをオンにして再現する。 上記のログの例は、MID サーバーにパラメーター mid.log.level=trace set がある場合のテスト実行からのものです。そのため、追加の DEBUG ログ行と TRACE ログ行が表示されます。プローブが MID サーバーで実行されたときに問題を再現できる場合は、通常、必要な手がかりが追加のログ記録にあるため、完全なログ記録で再現できます。 「Worker-Expedited:IPaaSActionProbe-e588811df51c459818d469c47e912ea9」は、IPaaSActionProbe がこのスレッドで実行されている統合ハブプローブコードであり、スレッド名のsys_idがecc_queue出力レコードであることを意味します。この特定のプローブは、ecc_queue入力レコードやフローコンテキストに多くのデバッグを行う傾向がないため、MID サーバーのエージェントログが必要です。これは、ディスカバリーなどの他の機能にも当てはまります。ディスカバリーでは、機能に関する高レベルのエラーのみが表示され、その原因となった根本的なエラーは表示されません。 通常、最初のエラーが重要なエラーです。これが何を意味するのかを理解する必要があります。 WARNING *** Socket timeout SEVERE *** ERROR *** SOAP Request: ... xmlns:tns="http://www.service-now.com/GetMIDInfo" ... <purpose xsi:type="xsd:string">GetCredentials</purpose> ... 警告は、接続に関連するネットワークエラーであるソケットタイムアウトが発生したことを示しています。このソケットエラーがERRORの原因であると考えられます。このエラーメッセージは、インスタンス (www.service-now.com はこれが servicenow API であることを意味します)、URL「/GetMIDInfo」への SOAP 要求を示しています。これはスクリプト化された SOAP Web サービスです。 インスタンスで要求を処理しているコードを理解する。 インスタンスで「GetMIDInfo」スクリプト化 SOAP Web サービスレコードを開くと、「MID サーバーの認証情報、親和性、およびその他の関連情報にアクセスするための Web サービス」という説明が表示されます。これは後のエラーに当てはまります。 スクリプトを調べると、「GetCredentials」がこの Web サービスで実行できる機能の 1 つであることがわかります。 ソケットのタイムアウトとエラーの前のログエントリの タイムスタンプ も役立ちます 09:28:04 (939) "Creating cache"、これはおそらく資格情報キャッシュであると想定できます。その後、12/07/21 09:30:59 (977) = ほぼ 3 分のエラーが発生し、MID サーバーでは明らかに何も起こらなかったため、このトランザクションのインスタンスの終了について考える必要があります。 トランザクションを検索する。 これで インスタンスのトランザクションログを調べ 、このWebサービスのこのトランザクションと他の同様のトランザクションを見つけることができます。これにより、待機時間、ランタイム、データベースクエリなどのトランザクションに関するメトリクスに加えて、後でアプリノードログでトランザクションを見つけるために必要になるインスタンスアプリノードとセッションIDも表示されます。 syslog_transactionは大きなテーブルなので、フィルターのみから始めることをお勧めします。 https://<instance>.service-now.com/syslog_transaction_list.do?sysparm_filter_only=true 次に、Created on today、type=SOAP、URL starts with /GetMIDInfo などの条件を追加します。 https://<instance>.service-now.com/syslog_transaction_list.do?sysparm_query=sys_created_onONToday%40javascript%3Ags.beginningOfToday()%40javascript%3Ags.endOfToday()%5Etype%3Dsoap%5EurlSTARTSWITH%2FGetMIDInfo&sysparm_view= 作成されたタイムスタンプはトランザクションの終了です。MID エージェントログエラーをトランザクションレコードと照合できれば、検索するアプリノードログと検索するセッションがわかります。トランザクションレコードには、特定のトランザクション番号 (134493 など) も示されます。これは、アプリノードの localhost ログのtx_idと照合できます。 SOAP デバッグをオンにして、インスタンスアプリノードログを確認する。 受信 SOAP エンベロープ XML をシステムログにキャプチャしてMID サーバー名と Web サービスへのその他の入力を確認するには、値が true のプロパティ glide.processor.debug.SOAPProcessor を追加します。このプロパティを有効にすると、システムログ ([システムログ] > [すべて]) の [メッセージ] フィールドに受信 SOAP エンベロープも追加されます。 例外があるかもしれませんか?例: 2021-06-30 15:39:59 (677) API_INT-thread-5 SYSTEM txid=592d84c61b4d WARNING *** WARNING *** Cookie token not in database: SCv3:PN+WsAqa+n6cVGtCb3besmBqc5BnA52k:yQIdHtktAzjEa0mQ46RhmTL947p7cVSMalt5lwzHdm4=2021-06-30 15:39:59 (677) API_INT-thread-5 SYSTEM txid=592d84c61b4d WARNING *** WARNING *** aborted activity cookie update: U0N2MzpQTitXc0FxYStuNmNWR3RDYjNiZXNtQnFjNUJuQTUyazp5UUlkSHRrdEF6akVhMG1RNDZSaG1UTDk0N3A3Y1ZTTWFsdDVsd3pIZG00PQ==2021-06-30 15:39:59 (678) API_INT-thread-5 E3F1D1BD1B49B014E1E09979B04BCBDF txid=592d84c61b4d *** Start #4044724 /GetMIDInfo.do, user: datacentertest_bfi0_disco_midserver82021-06-30 15:39:59 (756) SOAPProcessorThread992d08ca1b4df414e1e09979b04bcbe3 E3F1D1BD1B49B014E1E09979B04BCBDF txid=9d2dc8ca1b4d WARNING *** WARNING *** string may not be encrypted : Input length must be multiple of 8 when decrypting with padded cipher2021-06-30 15:39:59 (770) SOAPProcessorThread992d08ca1b4df414e1e09979b04bcbe3 E3F1D1BD1B49B014E1E09979B04BCBDF txid=9d2dc8ca1b4d WARNING *** WARNING *** GlideRecord newGlideRecord() called with invalid table name: u_temp_test_unknown_credentials2021-06-30 15:39:59 (770) SOAPProcessorThread992d08ca1b4df414e1e09979b04bcbe3 E3F1D1BD1B49B014E1E09979B04BCBDF txid=9d2dc8ca1b4d SEVERE *** ERROR *** loadRow failurejava.lang.NullPointerException at com.glide.script.GlideRecord.loadRow(GlideRecord.java:3557) at com.glide.script.GlideRecord.initIfNecessary(GlideRecord.java:1039) at com.glide.script.GlideRecord.getElement(GlideRecord.java:7338) at com.glide.script.GlideRecord.getValue(GlideRecord.java:7046) at com.glide.script.MIDServerInfoAccessor.skipCredential(MIDServerInfoAccessor.java:715) at com.glide.script.MIDServerInfoAccessor.loadCredentials(MIDServerInfoAccessor.java:553)... うまくいけば、アプリノードログにそれを説明するための明らかなエラーがあります。そうでない場合は、すべてのデータベースクエリのログを追加する glide.db.trace などのシステムプロパティがあります。終了したらすぐにこれらのデバッグ機能を無効にして、ログが過剰で不要なデバッグ情報であふれないようにします。 バックグラウンドスクリプトから同じコードを実行する。 インスタンスでの Web サービスの実行に問題があることがわかった場合は、 バックグラウンドスクリプトで同じコードを実行できます。スクリプト - バックグラウンド (/sys.scripts.do)。この例では、Webサービスのスクリプトを最小限に抑えており、基本的には「doc」が応答でMIDサーバーに送り返されます。 var MIDServerInfoAccessor = new GlideMIDServerInfoAccessor();GlideSession.get().putProperty("MidCallbackOnCredentialsReload", true);var doc = MIDServerInfoAccessor.getCredentialXML("317050c51bd80510cdec62c7bd4bcb7f");GlideSession.get().putProperty("MidCallbackOnCredentialsReload", false); 317050c51bd80510cdec62c7bd4bcb7f は、MID サーバーのecc_agentレコードのsys_idです。これを MID サーバーレコードに置き換える必要があります。出力は、私の例のように「動作」している場合でも、このように見えるかもしれませんが、問題がある場合は、完了するまでに長い時間がかかったり、他のエラーが発生したりする可能性があります。 問題を再現するには、MID サーバーユーザーの代理操作が必要な場合があります。その場合は、スクリプトを次のようにラップします。 var userGR = new GlideRecord('sys_user');userGR.get('user_name', "david.piper"); // put user_id herevar originalUser = gs.getSession().impersonate(userGR.sys_id);//// Code goes here.//gs.getSession().impersonate(originalUser); セッションのデバッグをオンにすることができます。 バックグラウンドスクリプトの実行中にセッションデバッグをオンにすると、このスクリプトの実行中に実行されるすべてのクエリ、ビジネスルール、データベースクエリなどが表示されます。これは、パフォーマンスの問題がどこにあるかを正確に特定するのに役立ちます。 監視 stats.do/Threads.do 長時間実行されているジョブ /stats.do/threads.do ページから監視できます。 /stats.do では、MID サーバー要求は API_INT セマフォセクションに /GetMIDInfo.do として存在し、バックグラウンドスクリプトを実行している場合はデフォルトのセマフォセットで /sys.scripts.do になります。 スレッドのリンクを定期的にクリックして新しいブラウザータブで開くと、時間の経過とともに実行されているコードをよく把握できます。たとえば、これは明らかに擬似乱数ジェネレータ関数に時間を費やしているスレッドです。 main,Default-thread-1203,5,attrs=(session_id=273374F4BD30095C18D40EE589639862) java.io.FileInputStream.readBytes(Native Method) java.io.FileInputStream.read(FileInputStream.java:255) sun.security.provider.NativePRNG$RandomIO.readFully(NativePRNG.java:424) sun.security.provider.NativePRNG$RandomIO.implGenerateSeed(NativePRNG.java:441) sun.security.provider.NativePRNG$RandomIO.access$500(NativePRNG.java:331) sun.security.provider.NativePRNG.engineGenerateSeed(NativePRNG.java:226) java.security.SecureRandom.generateSeed(SecureRandom.java:533) org.bouncycastle.crypto.util.BasicEntropySourceProvider$1.getEntropy(Unknown Source) org.bouncycastle.crypto.fips.ContinuousTestingEntropySource.getEntropy(Unknown Source) org.bouncycastle.crypto.fips.HashSP800DRBG.getEntropy(Unknown Source) org.bouncycastle.crypto.fips.HashSP800DRBG.init(Unknown Source) org.bouncycastle.crypto.fips.HashSP800DRBG.(Unknown Source) org.bouncycastle.crypto.fips.FipsDRBG$HashDRBGProvider.get(Unknown Source) org.bouncycastle.crypto.fips.DRBGPseudoRandom.lazyInitDRBG(Unknown Source) org.bouncycastle.crypto.fips.DRBGPseudoRandom.generate(Unknown Source) org.bouncycastle.crypto.fips.FipsSecureRandom$RandomSpi.engineNextBytes(Unknown Source) java.security.SecureRandom.nextBytes(SecureRandom.java:468) java.math.BigInteger.randomBits(BigInteger.java:634) java.math.BigInteger.(BigInteger.java:623) org.bouncycastle.util.BigIntegers.createRandomInRange(Unknown Source) org.bouncycastle.math.internal.Primes.enhancedMRProbablePrimeTest(Unknown Source) org.bouncycastle.crypto.asymmetric.KeyUtils.validatedModulus(Unknown Source) org.bouncycastle.crypto.asymmetric.KeyUtils.validated(Unknown Source) org.bouncycastle.crypto.asymmetric.AsymmetricRSAPublicKey.(Unknown Source) org.bouncycastle.jcajce.provider.ProvRSAPublicKey.(Unknown Source) org.bouncycastle.jcajce.provider.ProvRSA$1.convertKey(Unknown Source) org.bouncycastle.jcajce.provider.ProvRSA$1.convertKey(Unknown Source) org.bouncycastle.jcajce.provider.BaseSingleBlockCipher.engineInit(Unknown Source) org.bouncycastle.jcajce.provider.BaseSingleBlockCipher.engineInit(Unknown Source) javax.crypto.Cipher.init(Cipher.java:1245) javax.crypto.Cipher.init(Cipher.java:1185) com.glide.util.RSAEncrypter.encryptBytes(RSAEncrypter.java:54) com.glideapp.ecc.MIDServerInfoPayloadEncrypter$KeyPayload.(MIDServerInfoPayloadEncrypter.java:75) com.glideapp.ecc.MIDServerInfoPayloadEncrypter.encryptPayload(MIDServerInfoPayloadEncrypter.java:46) com.glide.script.MIDServerInfoAccessor.loadCredentials(MIDServerInfoAccessor.java:569) com.glide.script.MIDServerInfoAccessor.getCredentialXML(MIDServerInfoAccessor.java:137) sun.reflect.GeneratedMethodAccessor510.invoke(Unknown Source)... この例の根本原因: スタックトレースで見られたコード行をさらに調査したところ、読み取っていたFileInputStreamが実際にはLinux /dev/randomデバイスであることが判明しました。SOAP ペイロードの暗号化に使用する乱数を待っていました。認証情報などの機密情報は、TLS レベルで暗号化されるだけでなく、SOAP 応答を送信する前に超暗号化されます。 このようなジョブに使用可能な乱数のプールは「エントロピー」と呼ばれ、ServiceNow アプリケーションではなく Linux OS の責任です。コードはブロックされ、Linux から次に利用可能な乱数を待っていました。 このスクリプトは、Linux ホスト サーバーの現在の利用可能なエントロピーを出力します。 # Script to print out entropy count once/ per secondfor i in $(seq 60 $END); do date; cat /proc/sys/kernel/random/entropy_avail; sleep 1; done; このスクリプトを使用して、プール数を増やし、いつでも利用可能なエントロピーのレベルを上げることができます。 # Script to increase entropy pool count (runs forever, so ^C out after a few seconds or a minute). dd if=/dev/sda of=/dev/zero count=10000000 アプリノードが実行されているサーバーが ServiceNow のデータセンターではなくオンプレミスである場合は、ServiceNow アプリケーションに対してこの値が低すぎる可能性があるため、値を増やす必要があります。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } MID サーバーが認証情報のフェッチに失敗する主な原因の 1 つは、クローン後に認証情報テーブルのレコードが壊れることです。これにより、上記の Web サービス自体はエラーではありませんが、代わりに「SEVERE *** ERROR *** An error occurred while decrypting credentials from instance」というエラーが発生する傾向があります。(重大なエラーが発生し、返される結果がない場合でも、GetMIDInfo SOAP サービスが結果コード 200 を報告するPRB1508497を参照) 執筆時点では、これは未解決の不具合です。PRB1542851 クローンによってターゲットインスタンスのdiscovery_credentialsテーブルが破損し、孤立/ゴーストレコードに存在しないクラスが残り、MID サーバーですべての認証情報が使用できなくなる可能性があります この同様の原因は、特に認証情報テーブルで修正されていますが、他の TPC 拡張テーブルでもこの問題が残っています。PRB1305469 クラスごとのテーブル (TPC) 拡張テーブルをクローンから除外すると、ディスカバリー認証情報を開くと孤立し、それらを開こうとしたときに「レコードが見つかりません」というエラーが発生することがある 実行時間の長い /GetMIDInfo.do 要求を引き起こす可能性がある既知の問題には、次のようなものがあります。 PRB1665907 KB1369852 /GetMIDInfo.do (CloudServiceAccountInfoUtil) は、cmdb_ci_cloud_service_account レコードのaccount_idが空の場合、ノードメモリを使い果たすかタイムアウトするまで無限ループでハングしますKB0962403 MID サーバーサービスの起動エラー「リダイレクト数を超えたか、要求が 60 秒以内に完了しませんでした」PRB1401009 Linux OS の乱数エントロピープールが低くなると、Linux MID サーバーの起動が長時間発生する (リリース前に修正済み)PRB1576909 レコードのsa_account_id値が空の場合cloud_service_account_view KB1120158 /GetMIDInfo.do 要求によるメモリーやAPI_INTセマフォの枯渇数千のクラウドサービスアカウントレコードが更新されたクラウドリソースまたは GCP ディスカバリー KB0964591、インスタンスに接続されているすべての MID サーバーが DOWN と表示され、「GetCloudServiceAccountInfo-request failed」というエラーメッセージがスローされ続けることがあります。