OCTimer - グローバル

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:13分
  • OCTimer スクリプトインクルードは、関数が完了するまでにかかる時間を追跡するメソッドを提供します。

    このスクリプトインクルードを使用するには、オンコールスケジューリング (com.snc.on_call_rotation) プラグインを有効にする必要があります。詳細は、「 オンコールスケジューリングのアクティブ化」のトピックを参照してください。

    OCTimer - log (文字列 name, 文字列 entry)

    関数名に基づいてエントリーをログに記録します。

    表 : 1. パラメーター
    名前 タイプ 説明
    name 文字列 関数名。
    entry 文字列 ログの出力の一部となるテキスト。
    表 : 2. 返される内容
    タイプ 説明
    なし

    OCTimer - millisToTime (整数 millis)

    ミリ秒の値を取って、書式設定済みの期間を返します。

    表 : 3. パラメーター
    名前 タイプ 説明
    millis 整数 期間 (ミリ秒単位)。
    表 : 4. 返される内容
    タイプ 説明
    文字列 書式設定済みの期間。

    OCTimer - result ()

    登録された関数それぞれにかかった時間を計算します。

    表 : 5. パラメーター
    名前 タイプ 説明
    なし
    表 : 6. 返される内容
    タイプ 説明
    文字列 登録された関数それぞれにかかった時間。

    次のコード例は、REST API がネットワーク機器内のデバイスから IP アドレスをフェッチして IP アドレステーブルに挿入する際にかかる時間をベンチマークします。API コールは処理に時間がかかる場合があるため、本番環境で実行する前に実行時間のベンチマークを行うことをお勧めします。

    var user = "<user name>"; // ServiceNow login user name
    var password = "<password>";  // ServiceNow login password
    var instance = "<instance name>";   // ServiceNow instance name
    
    // Insert new IP address to IP address table using REST API
    function insertIPAddress(ip_address) {
     var request = new sn_ws.RESTMessageV2();
     request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_ip_address');
     request.setHttpMethod('POST');
    
     request.setBasicAuth(user,password);
     request.setRequestHeader("Accept","application/json");
     request.setRequestHeader('Content-Type','application/json');request.setRequestBody("{\"ip_address\":\"" + ip_address + "\"}");
     var response = request.execute();
    }
    
    // Retrieve IP address from devices in Network gear
    function getIPAddresses() {
     var request = new sn_ws.RESTMessageV2();
     request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_netgear?sysparm_fields=ip_address');
     request.setHttpMethod('GET');
    
     request.setBasicAuth(user,password);
     request.setRequestHeader("Accept","application/json");
    
     var response = request.execute();
     return response.getBody();
    }
    
    var timer = new OCTimer();             // create OCTimer object
    
    // get the IP addresses from Network Gear table
    timer.start("getIPAddresses");         // start timer to time fetching IP addresses from Network Gear table
    var ipAddressStr = getIPAddresses();
    timer.stop('getIPAddresses');          // stop timer
    
    // insert IP addresses to IP Address table
    var ipAddressJson = JSON.parse(ipAddressStr);  // parse result
    var ipAddressList = ipAddressJson.result;      // extract IP addresses to a list
    for (var i=0; i<ipAddressList.length;i++) {    // loop through
     var ip_address = ipAddressList[i]["ip_address"].trim();
     if (ip_address.length > 0) {
      timer.start("insertIPAddress");    // start timer to time inserting IP address to IP Address table
      insertIPAddress(ip_address);       // insert IP address
      timer.stop('insertIPAddress');     // end timer
     }
    }
    
    var result = timer.result();         // get timer results
    gs.info(result);                     // output timer result
    

    出力:

    getIPAddresses method was invoked 1 time and took 00.288 seconds
    insertIPAddress method was invoked 37 times and took 02.352 seconds

    OCTimer - start (文字列 name)

    指定された名前に基づいてタイマーを初期化します。

    表 : 7. パラメーター
    名前 タイプ 説明
    name 文字列 関数名。
    表 : 8. 返される内容
    タイプ 説明
    なし

    次のコード例は、REST API がネットワーク機器内のデバイスから IP アドレスをフェッチして IP アドレステーブルに挿入する際にかかる時間をベンチマークします。API コールは処理に時間がかかる場合があるため、本番環境で実行する前に実行時間のベンチマークを行うことをお勧めします。

    var user = "<user name>"; // ServiceNow login user name
    var password = "<password>";  // ServiceNow login password
    var instance = "<instance name>";   // ServiceNow instance name
    
    // Insert new IP address to IP address table using REST API
    function insertIPAddress(ip_address) {
     var request = new sn_ws.RESTMessageV2();
     request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_ip_address');
     request.setHttpMethod('POST');
    
     request.setBasicAuth(user,password);
     request.setRequestHeader("Accept","application/json");
     request.setRequestHeader('Content-Type','application/json');request.setRequestBody("{\"ip_address\":\"" + ip_address + "\"}");
     var response = request.execute();
    }
    
    // Retrieve IP address from devices in Network gear
    function getIPAddresses() {
     var request = new sn_ws.RESTMessageV2();
     request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_netgear?sysparm_fields=ip_address');
     request.setHttpMethod('GET');
    
     request.setBasicAuth(user,password);
     request.setRequestHeader("Accept","application/json");
    
     var response = request.execute();
     return response.getBody();
    }
    
    var timer = new OCTimer();             // create OCTimer object
    
    // get the IP addresses from Network Gear table
    timer.start("getIPAddresses");         // start timer to time fetching IP addresses from Network Gear table
    var ipAddressStr = getIPAddresses();
    timer.stop('getIPAddresses');          // stop timer
    
    // insert IP addresses to IP Address table
    var ipAddressJson = JSON.parse(ipAddressStr);  // parse result
    var ipAddressList = ipAddressJson.result;      // extract IP addresses to a list
    for (var i=0; i<ipAddressList.length;i++) {    // loop through
     var ip_address = ipAddressList[i]["ip_address"].trim();
     if (ip_address.length > 0) {
      timer.start("insertIPAddress");    // start timer to time inserting IP address to IP Address table
      insertIPAddress(ip_address);       // insert IP address
      timer.stop('insertIPAddress');     // end timer
     }
    }
    
    var result = timer.result();         // get timer results
    gs.info(result);                     // output timer result
    

    出力:

    getIPAddresses method was invoked 1 time and took 00.288 seconds
    insertIPAddress method was invoked 37 times and took 02.352 seconds

    OCTimer - stop (文字列 name)

    指定された名前に対するタイマーの終了時間を登録します。

    表 : 9. パラメーター
    名前 タイプ 説明
    name 文字列 関数名。
    表 : 10. 返される内容
    タイプ 説明
    なし

    次のコード例は、REST API がネットワーク機器内のデバイスから IP アドレスをフェッチして IP アドレステーブルに挿入する際にかかる時間をベンチマークします。API コールは処理に時間がかかる場合があるため、本番環境で実行する前に実行時間のベンチマークを行うことをお勧めします。

    var user = "<user name>"; // ServiceNow login user name
    var password = "<password>";  // ServiceNow login password
    var instance = "<instance name>";   // ServiceNow instance name
    
    // Insert new IP address to IP address table using REST API
    function insertIPAddress(ip_address) {
     var request = new sn_ws.RESTMessageV2();
     request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_ip_address');
     request.setHttpMethod('POST');
    
     request.setBasicAuth(user,password);
     request.setRequestHeader("Accept","application/json");
     request.setRequestHeader('Content-Type','application/json');request.setRequestBody("{\"ip_address\":\"" + ip_address + "\"}");
     var response = request.execute();
    }
    
    // Retrieve IP address from devices in Network gear
    function getIPAddresses() {
     var request = new sn_ws.RESTMessageV2();
     request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_netgear?sysparm_fields=ip_address');
     request.setHttpMethod('GET');
    
     request.setBasicAuth(user,password);
     request.setRequestHeader("Accept","application/json");
    
     var response = request.execute();
     return response.getBody();
    }
    
    var timer = new OCTimer();             // create OCTimer object
    
    // get the IP addresses from Network Gear table
    timer.start("getIPAddresses");         // start timer to time fetching IP addresses from Network Gear table
    var ipAddressStr = getIPAddresses();
    timer.stop('getIPAddresses');          // stop timer
    
    // insert IP addresses to IP Address table
    var ipAddressJson = JSON.parse(ipAddressStr);  // parse result
    var ipAddressList = ipAddressJson.result;      // extract IP addresses to a list
    for (var i=0; i<ipAddressList.length;i++) {    // loop through
     var ip_address = ipAddressList[i]["ip_address"].trim();
     if (ip_address.length > 0) {
      timer.start("insertIPAddress");    // start timer to time inserting IP address to IP Address table
      insertIPAddress(ip_address);       // insert IP address
      timer.stop('insertIPAddress');     // end timer
     }
    }
    
    var result = timer.result();         // get timer results
    gs.info(result);                     // output timer result
    

    出力:

    getIPAddresses method was invoked 1 time and took 00.288 seconds
    insertIPAddress method was invoked 37 times and took 02.352 seconds