Version: Xanadu
ServiceNowと他システムとのHTTP通信
ServiceNowはNMSなどの他システムとHTTP通信して使われるということがよくあると思います
HTTP通信に問題がないか確認するときに自分がよく取る手段をTipsとして書いて置きます
ServiceNowから他システムへのHTTP通信エラー
Outbound HTTP Requests
ServiceNowから他システムへのHTTP通信のログはSystem Logs - Outbound HTTP Requestsに記録されています
リストでHTTP通信したURL hostname, URL, Response statusなどが確認できますResponse statusがHTTP Response Status Codeになりますのでまずはここで問題を切り分けられると思います
HTTP Respose Status CodeはRFCで決まっていますが簡単に一覧を見たい場合には以下のサイトなどが便利かと思います
ざっくり200がGET成功、201がPOST成功、3??はリダイレクト、401が認証失敗、403がアクセス拒否、404がリクエスト先が無い、5??が通信相手のサーバーの状態異常、みたいな感じです(200はメソッドによって内容が違いますが普段使いならこのぐらいでいいかなと)
Response statusが-1になっている時はネットワークが疎通されていないか他システムから通信を拒否されている/他システムが応答していない可能性が高いと思います
RESTのLog level
リストでレコードを選択すると詳細を確認できますがLog Level がBasicだとほぼ何も記録されません
Request/Responseの中身も空っぽです
Log levelの変更はSystem Propertyでインスタンス全体を変更する、またはメソッドレベルで変更することができます
インスタンス全体の変更は「トラブルシューティング時に限られた時間だけ使用してください。」と書かれているのでメソッドレベルで試してみます ここの「コピペ用」に setLogLevel("ALL") のREST文があるのでリンク先の情報で実行してみます
実行されて記録されたLog levelがALLの場合のResponseが以下になりますエラー原因の詳細が記録されています(わざとエラーにしました)
ちなみにHTTP Statusが-1のときのResponseは以下のようになると思います
他システムからServiceNowへのHTTP通信エラー
System Logs - Transactions
他システムからServiceNowへのHTTP通信は System Logs - Transactions に記録されています(Transactionsで始まるメニューが4つありますがフィルター条件が違うだけで同じテーブルのようです)
こちらは正常に通信できたユーザーのRESTのログが確認できます TyoeをREST, Created byを通信しているユーザー名に絞り込んで正常に通信出来た時間と内容を調査するときに使います
認証エラーになった場合などはこちらに記録されないようなので…他システム側の接続情報などを確認する必要があると思います
IP Address Access Control
ServiceNowにはIP Address Access Controlというソフトウェアファイアウォールの機能があるので何もアクセスできない場合にはそちらも確認します(設定していなければ空っぽですが)







