OCTimer - グローバル
OCTimer スクリプトインクルードは、関数が完了するまでにかかる時間を追跡するメソッドを提供します。
このスクリプトインクルードを使用するには、オンコールスケジューリング (com.snc.on_call_rotation) プラグインを有効にする必要があります。詳細は、「 オンコールスケジューリングのアクティブ化」のトピックを参照してください。
OCTimer - log (文字列 name, 文字列 entry)
関数名に基づいてエントリーをログに記録します。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | 関数名。 |
| entry | 文字列 | ログの出力の一部となるテキスト。 |
| タイプ | 説明 |
|---|---|
| なし |
OCTimer - millisToTime (整数 millis)
ミリ秒の値を取って、書式設定済みの期間を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| millis | 整数 | 期間 (ミリ秒単位)。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 書式設定済みの期間。 |
OCTimer - result ()
登録された関数それぞれにかかった時間を計算します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 登録された関数それぞれにかかった時間。 |
次のコード例は、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)
指定された名前に基づいてタイマーを初期化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | 関数名。 |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、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)
指定された名前に対するタイマーの終了時間を登録します。
| 名前 | タイプ | 説明 |
|---|---|---|
| name | 文字列 | 関数名。 |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、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