Start performance info report

NAS File Storage REST API Reference

Version
15.6.x
File Size
1291 KB
Audience
anonymous
Part Number
MK-92HNAS100-07
ft:lastEdition
2026-04-07
post /v9/storage/file-devices/performance-info-reports

Starts a performance info report (PIR). This call does not return immediately, and may take up to 30 seconds to start the PIR.

A PIR will run in the background for a set period of time, and gather performance data for off line analysis. The report data is stored in a file that can be downloaded once the PIR has completed.

The filesystemId and nodeId parameters can't both be supplied at the same time.

Note: Accepted parameter values may be restricted based on the virtual server access granted by the API key used for authentication.

Authentication: x_subsystem_user Api Key "X-Subsystem-User"
Authentication: x_subsystem_password Api Key "X-Subsystem-Password"
Authentication: api_key Api Key "X-Api-Key"
Authentication: basicAuth HTTP - basic scheme
CLIENT REQUEST
curl -X 'POST'
-H "X-Subsystem-User: [[apiKey]]" \
-H "X-Subsystem-Password: [[apiKey]]" \
-H "X-Api-Key: [[apiKey]]" \
-H "Authorization: Basic [[basicHash]]" \
-H 'Accept: application/json'
-H 'Content-Type: application/json'
'https://172.27.146.40:8444/v9/storage/file-devices/performance-info-reports'
-d ''
import http.client conn = http.client.HTTPSConnection("172.27.146.40:8444") payload = "{\"durationInMinutes\":10,\"filesystemId\":\"7B263DFD1D71E65A0000000000000000\",\"includeProfile\":true,\"includeTrouble\":true,\"nodeId\":\"1\"}" headers = { 'Authorization': "Basic REPLACE_BASIC_AUTH", 'content-type': "application/json" } conn.request("POST", "/v9/storage/file-devices/performance-info-reports", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
require 'uri' require 'net/http' require 'openssl' url = URI("https://172.27.146.40:8444/v9/storage/file-devices/performance-info-reports") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Post.new(url) request["Authorization"] = 'Basic REPLACE_BASIC_AUTH' request["content-type"] = 'application/json' request.body = "{\"durationInMinutes\":10,\"filesystemId\":\"7B263DFD1D71E65A0000000000000000\",\"includeProfile\":true,\"includeTrouble\":true,\"nodeId\":\"1\"}" response = http.request(request) puts response.read_body
const data = JSON.stringify({ "durationInMinutes": 10, "filesystemId": "7B263DFD1D71E65A0000000000000000", "includeProfile": true, "includeTrouble": true, "nodeId": "1" }); const xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener("readystatechange", function () { if (this.readyState === this.DONE) { console.log(this.responseText); } }); xhr.open("POST", "https://172.27.146.40:8444/v9/storage/file-devices/performance-info-reports"); xhr.setRequestHeader("Authorization", "Basic REPLACE_BASIC_AUTH"); xhr.setRequestHeader("content-type", "application/json"); xhr.send(data);
HttpResponse<String> response = Unirest.post("https://172.27.146.40:8444/v9/storage/file-devices/performance-info-reports") .header("Authorization", "Basic REPLACE_BASIC_AUTH") .header("content-type", "application/json") .body("{\"durationInMinutes\":10,\"filesystemId\":\"7B263DFD1D71E65A0000000000000000\",\"includeProfile\":true,\"includeTrouble\":true,\"nodeId\":\"1\"}") .asString();
import Foundation let headers = [ "Authorization": "Basic REPLACE_BASIC_AUTH", "content-type": "application/json" ] let parameters = [ "durationInMinutes": 10, "filesystemId": "7B263DFD1D71E65A0000000000000000", "includeProfile": true, "includeTrouble": true, "nodeId": "1" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://172.27.146.40:8444/v9/storage/file-devices/performance-info-reports")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume()
<?php $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_PORT => "8444", CURLOPT_URL => "https://172.27.146.40:8444/v9/storage/file-devices/performance-info-reports", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => "{\"durationInMinutes\":10,\"filesystemId\":\"7B263DFD1D71E65A0000000000000000\",\"includeProfile\":true,\"includeTrouble\":true,\"nodeId\":\"1\"}", CURLOPT_HTTPHEADER => [ "Authorization: Basic REPLACE_BASIC_AUTH", "content-type: application/json" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; }
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST"); curl_easy_setopt(hnd, CURLOPT_URL, "https://172.27.146.40:8444/v9/storage/file-devices/performance-info-reports"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Basic REPLACE_BASIC_AUTH"); headers = curl_slist_append(headers, "content-type: application/json"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"durationInMinutes\":10,\"filesystemId\":\"7B263DFD1D71E65A0000000000000000\",\"includeProfile\":true,\"includeTrouble\":true,\"nodeId\":\"1\"}"); CURLcode ret = curl_easy_perform(hnd);
var client = new RestClient("https://172.27.146.40:8444/v9/storage/file-devices/performance-info-reports"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Basic REPLACE_BASIC_AUTH"); request.AddHeader("content-type", "application/json"); request.AddParameter("application/json", "{\"durationInMinutes\":10,\"filesystemId\":\"7B263DFD1D71E65A0000000000000000\",\"includeProfile\":true,\"includeTrouble\":true,\"nodeId\":\"1\"}", ParameterType.RequestBody); IRestResponse response = client.Execute(request);
Body parameters
application/json
durationInMinutesintegerint32

Duration that the PIR will run for

Example:10
Default:10
filesystemIdstring

Either the file system ID or the object ID of the file system

Example:"7B263DFD1D71E65A0000000000000000"
includeProfileboolean

True indicates that profiling commands will be run as part of the PIR

Default:true
includeTroubleboolean

True indicates that the trouble command output will be included as part of the PIR

Default:true
nodeIdobject

Either a node object ID or a cluster node ID

integer

Either a node object ID or a cluster node ID

Example:"1"
string

Either a node object ID or a cluster node ID

Example:"1"
REQUEST
{ "durationInMinutes": 10, "filesystemId": "7B263DFD1D71E65A0000000000000000", "includeProfile": false, "includeTrouble": false, "nodeId": "1" }
Responses

Created - a new object has been created

Body
application/json
performanceInfoReportobject

Performance info report

durationInMinutesintegerint32

Duration that the PIR was run for

Example:10
endTimestring

End time of the operation

Example:"2023-08-04 14:42:10+01:00"
nodeIdintegerint32

Cluster node ID

Example:1
objectIdstring

Unique ID of the object

Example:"333a3a3a3a3a3a303a3a3a4f49445f24232140255f56"
pirIdstring

ID of the performance info report

Example:"f4d70604-c6d7-11d9-982c-0bef787b2638"
statusstring (Enum)

Status of PIR

Allowed values:"STARTING""RUNNING""FINALISING""FINISHED""FINISHED_FILE_AVAILABLE""CONTINUOUS""NOT_FOUND"
uristring

URI of the newly created or updated object

RESPONSE
{ "performanceInfoReport": { "durationInMinutes": 10, "endTime": "2023-08-04 14:42:10+01:00", "nodeId": 1, "objectId": "333a3a3a3a3a3a303a3a3a4f49445f24232140255f56", "pirId": "f4d70604-c6d7-11d9-982c-0bef787b2638", "status": "STARTING" }, "uri": "example" }

Bad Request

Body
application/json
errorCodeintegerint32

Generic error code

Example:1081353
errorMsgstring

Main error message

Example:"Invalid description parameter - the optional parameter must be between 2 and 30 characters long to be valid, if supplied"
RESPONSE
{ "errorCode": 1081353, "errorMsg": "Invalid description parameter - the optional parameter must be between 2 and 30 characters long to be valid, if supplied" }

Unauthorized - the request was rejected because the credentials or API key were either missing or invalid

Forbidden - the client does not have the required permissions to perform the operation

Body
application/json
errorMsgstring

Main error message

Example:"Forbidden request - the client does not have the required permissions to perform the operation"
RESPONSE
{ "errorMsg": "Forbidden request - the client does not have the required permissions to perform the operation" }

Internal Server Error

Body
application/json
errorCodeintegerint32

Generic error code

errorDetailobject

Detailed error information

detailstring

More details on why the error occurred

faultstring
fileNamestring

Source file where the error occurred

Example:"RestApiFilesystems.cpp"
functionstring

Internal function name where the error occurred

Example:"mountFilesystem"
lineNumberintegerint32

Line number within the source file, where the error occurred

messagestring

Reason why the error(s) occurred

Example:"The file system is currently unassigned"
reasonstring

Reason why the error(s) occurred

Example:"The file system is currently unassigned"
returnedValueintegerint32

Not used

subCodeintegerint32

Specific failure error code

errorMsgstring

Main error message

Example:"Failed to mount file system"
RESPONSE
{ "errorCode": 0, "errorDetail": { "detail": "", "fault": "", "fileName": "RestApiFilesystems.cpp", "function": "mountFilesystem", "lineNumber": 0, "message": "The file system is currently unassigned", "reason": "The file system is currently unassigned", "returnedValue": 0, "subCode": 0 }, "errorMsg": "Failed to mount file system" }