curl --request GET \
--url {schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary \
--header 'Authorization: Bearer <token>'import requests
url = "{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"_from": 1704067200,
"_to": 1704153600,
"_project_id": "abc123def456",
"_environment_id": "main",
"_branch_machine_name": "main-bvxea6i",
"data": {
"services": {
"app": {
"app.0": {
"cpu_used": {
"min": 0.12,
"max": 1.85,
"avg": 0.45,
"stddev": 0.32,
"p50": 0.42,
"p95": 1.23,
"p96": 1.34,
"p97": 1.45,
"p98": 1.62,
"p99": 1.78
},
"cpu_limit": {
"max": 2
},
"memory_used": {
"min": 536870912,
"max": 715827883,
"avg": 612892672,
"stddev": 45000000,
"p50": 605000000,
"p95": 690000000,
"p96": 695000000,
"p97": 700000000,
"p98": 708000000,
"p99": 712000000
},
"memory_limit": {
"max": 1073741824
},
"swap_used": {
"min": 0,
"max": 4194304,
"avg": 1048576,
"stddev": 850000,
"p50": 950000,
"p95": 3200000,
"p96": 3400000,
"p97": 3600000,
"p98": 3900000,
"p99": 4100000
},
"swap_limit": {
"max": 536870912
},
"memory_pressure": {
"min": 0,
"max": 0.15,
"avg": 0.03,
"stddev": 0.02,
"p50": 0.02,
"p95": 0.12,
"p96": 0.13,
"p97": 0.14,
"p98": 0.145,
"p99": 0.148
},
"cpu_pressure": {
"min": 0,
"max": 0.08,
"avg": 0.01,
"stddev": 0.01,
"p50": 0.01,
"p95": 0.05,
"p96": 0.06,
"p97": 0.065,
"p98": 0.07,
"p99": 0.075
},
"io_pressure": {
"min": 0,
"max": 0.22,
"avg": 0.05,
"stddev": 0.04,
"p50": 0.04,
"p95": 0.18,
"p96": 0.19,
"p97": 0.2,
"p98": 0.21,
"p99": 0.215
},
"irq_pressure": {
"min": 0,
"max": 0.01,
"avg": 0.001,
"stddev": 0.002,
"p50": 0,
"p95": 0.008,
"p96": 0.009,
"p97": 0.0095,
"p98": 0.0097,
"p99": 0.0099
},
"mountpoints": {
"": {
"disk_used": {
"min": null,
"max": null,
"avg": null,
"stddev": null,
"p50": null,
"p95": null,
"p96": null,
"p97": null,
"p98": null,
"p99": null
},
"disk_limit": {
"max": null
},
"inodes_used": {
"min": null,
"max": null,
"avg": null,
"stddev": null,
"p50": null,
"p95": null,
"p96": null,
"p97": null,
"p98": null,
"p99": null
},
"inodes_limit": {
"max": null
}
},
"/tmp": {
"disk_used": {
"min": 147197952,
"max": 147197952,
"avg": 147197952,
"stddev": null,
"p50": 147197952,
"p95": 147197952,
"p96": 147197952,
"p97": 147197952,
"p98": 147197952,
"p99": 147197952
},
"disk_limit": {
"max": 17169383424
},
"inodes_used": {
"min": 2244,
"max": 2244,
"avg": 2244,
"stddev": null,
"p50": 2244,
"p95": 2244,
"p96": 2244,
"p97": 2244,
"p98": 2244,
"p99": 2244
},
"inodes_limit": {
"max": 8388608
}
}
}
}
},
"clickhouse": {
"clickhouse.0": {
"cpu_used": {
"min": 0.88,
"max": 0.88,
"avg": 0.88,
"stddev": null,
"p50": 0.88,
"p95": 0.88,
"p96": 0.88,
"p97": 0.88,
"p98": 0.88,
"p99": 0.88
},
"cpu_limit": {
"max": 16
},
"memory_used": {
"min": 1415147520,
"max": 1415147520,
"avg": 1415147520,
"stddev": null,
"p50": 1415147520,
"p95": 1415147520,
"p96": 1415147520,
"p97": 1415147520,
"p98": 1415147520,
"p99": 1415147520
},
"memory_limit": {
"max": 34359738368
},
"swap_used": {
"min": 223432704,
"max": 223432704,
"avg": 223432704,
"stddev": null,
"p50": 223432704,
"p95": 223432704,
"p96": 223432704,
"p97": 223432704,
"p98": 223432704,
"p99": 223432704
},
"swap_limit": {
"max": 536870912
},
"memory_pressure": {
"min": 0,
"max": 0,
"avg": 0,
"stddev": null,
"p50": 0,
"p95": 0,
"p96": 0,
"p97": 0,
"p98": 0,
"p99": 0
},
"cpu_pressure": {
"min": 0.08,
"max": 0.08,
"avg": 0.08,
"stddev": null,
"p50": 0.08,
"p95": 0.08,
"p96": 0.08,
"p97": 0.08,
"p98": 0.08,
"p99": 0.08
},
"io_pressure": {
"min": 0.12,
"max": 0.12,
"avg": 0.12,
"stddev": null,
"p50": 0.12,
"p95": 0.12,
"p96": 0.12,
"p97": 0.12,
"p98": 0.12,
"p99": 0.12
},
"irq_pressure": {
"min": 0,
"max": 0,
"avg": 0,
"stddev": null,
"p50": 0,
"p95": 0,
"p96": 0,
"p97": 0,
"p98": 0,
"p99": 0
},
"mountpoints": {
"": {
"disk_used": {
"min": null,
"max": null,
"avg": null,
"stddev": null,
"p50": null,
"p95": null,
"p96": null,
"p97": null,
"p98": null,
"p99": null
},
"disk_limit": {
"max": null
},
"inodes_used": {
"min": null,
"max": null,
"avg": null,
"stddev": null,
"p50": null,
"p95": null,
"p96": null,
"p97": null,
"p98": null,
"p99": null
},
"inodes_limit": {
"max": null
}
},
"/mnt": {
"disk_used": {
"min": 608173674496,
"max": 608173674496,
"avg": 608173674496,
"stddev": null,
"p50": 608173674496,
"p95": 608173674496,
"p96": 608173674496,
"p97": 608173674496,
"p98": 608173674496,
"p99": 608173674496
},
"disk_limit": {
"max": 1056876748800
},
"inodes_used": {
"min": 495287,
"max": 495287,
"avg": 495287,
"stddev": null,
"p50": 495287,
"p95": 495287,
"p96": 495287,
"p97": 495287,
"p98": 495287,
"p99": 495287
},
"inodes_limit": {
"max": 65536000
}
},
"/tmp": {
"disk_used": {
"min": 76398592,
"max": 76398592,
"avg": 76398592,
"stddev": null,
"p50": 76398592,
"p95": 76398592,
"p96": 76398592,
"p97": 76398592,
"p98": 76398592,
"p99": 76398592
},
"disk_limit": {
"max": 17169383424
},
"inodes_used": {
"min": 11,
"max": 11,
"avg": 11,
"stddev": null,
"p50": 11,
"p95": 11,
"p96": 11,
"p97": 11,
"p98": 11,
"p99": 11
},
"inodes_limit": {
"max": 8388608
}
}
}
}
}
}
}
}{
"type": "https://tools.ietf.org/html/rfc2616#section-1",
"title": "Please ensure parameters are correct.",
"status": 400,
"violations": {
"from": [
"The from timestamp must be in the past."
],
"to": [
"The to timestamp must be greater than the from timestamp."
]
}
}{
"error": "Too much data fetched",
"message": "Please reduce the time range or add more filters to narrow down the query"
}Get resource metrics summary
Returns per-instance resource statistics aggregated over the time range. Filter results using aggs[] (min, max, avg, stddev, p50, p95-p99) and types[] (cpu, memory, swap, disk, inodes, pressure metrics). Response grouped by service name then instance ID (e.g., “app.0”, “database.1”). All aggregations nullable when insufficient data exists.
curl --request GET \
--url {schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary \
--header 'Authorization: Bearer <token>'import requests
url = "{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("{schemes}://api.upsun.com/projects/{projectId}/environments/{environmentId}/observability/resources/summary")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"_from": 1704067200,
"_to": 1704153600,
"_project_id": "abc123def456",
"_environment_id": "main",
"_branch_machine_name": "main-bvxea6i",
"data": {
"services": {
"app": {
"app.0": {
"cpu_used": {
"min": 0.12,
"max": 1.85,
"avg": 0.45,
"stddev": 0.32,
"p50": 0.42,
"p95": 1.23,
"p96": 1.34,
"p97": 1.45,
"p98": 1.62,
"p99": 1.78
},
"cpu_limit": {
"max": 2
},
"memory_used": {
"min": 536870912,
"max": 715827883,
"avg": 612892672,
"stddev": 45000000,
"p50": 605000000,
"p95": 690000000,
"p96": 695000000,
"p97": 700000000,
"p98": 708000000,
"p99": 712000000
},
"memory_limit": {
"max": 1073741824
},
"swap_used": {
"min": 0,
"max": 4194304,
"avg": 1048576,
"stddev": 850000,
"p50": 950000,
"p95": 3200000,
"p96": 3400000,
"p97": 3600000,
"p98": 3900000,
"p99": 4100000
},
"swap_limit": {
"max": 536870912
},
"memory_pressure": {
"min": 0,
"max": 0.15,
"avg": 0.03,
"stddev": 0.02,
"p50": 0.02,
"p95": 0.12,
"p96": 0.13,
"p97": 0.14,
"p98": 0.145,
"p99": 0.148
},
"cpu_pressure": {
"min": 0,
"max": 0.08,
"avg": 0.01,
"stddev": 0.01,
"p50": 0.01,
"p95": 0.05,
"p96": 0.06,
"p97": 0.065,
"p98": 0.07,
"p99": 0.075
},
"io_pressure": {
"min": 0,
"max": 0.22,
"avg": 0.05,
"stddev": 0.04,
"p50": 0.04,
"p95": 0.18,
"p96": 0.19,
"p97": 0.2,
"p98": 0.21,
"p99": 0.215
},
"irq_pressure": {
"min": 0,
"max": 0.01,
"avg": 0.001,
"stddev": 0.002,
"p50": 0,
"p95": 0.008,
"p96": 0.009,
"p97": 0.0095,
"p98": 0.0097,
"p99": 0.0099
},
"mountpoints": {
"": {
"disk_used": {
"min": null,
"max": null,
"avg": null,
"stddev": null,
"p50": null,
"p95": null,
"p96": null,
"p97": null,
"p98": null,
"p99": null
},
"disk_limit": {
"max": null
},
"inodes_used": {
"min": null,
"max": null,
"avg": null,
"stddev": null,
"p50": null,
"p95": null,
"p96": null,
"p97": null,
"p98": null,
"p99": null
},
"inodes_limit": {
"max": null
}
},
"/tmp": {
"disk_used": {
"min": 147197952,
"max": 147197952,
"avg": 147197952,
"stddev": null,
"p50": 147197952,
"p95": 147197952,
"p96": 147197952,
"p97": 147197952,
"p98": 147197952,
"p99": 147197952
},
"disk_limit": {
"max": 17169383424
},
"inodes_used": {
"min": 2244,
"max": 2244,
"avg": 2244,
"stddev": null,
"p50": 2244,
"p95": 2244,
"p96": 2244,
"p97": 2244,
"p98": 2244,
"p99": 2244
},
"inodes_limit": {
"max": 8388608
}
}
}
}
},
"clickhouse": {
"clickhouse.0": {
"cpu_used": {
"min": 0.88,
"max": 0.88,
"avg": 0.88,
"stddev": null,
"p50": 0.88,
"p95": 0.88,
"p96": 0.88,
"p97": 0.88,
"p98": 0.88,
"p99": 0.88
},
"cpu_limit": {
"max": 16
},
"memory_used": {
"min": 1415147520,
"max": 1415147520,
"avg": 1415147520,
"stddev": null,
"p50": 1415147520,
"p95": 1415147520,
"p96": 1415147520,
"p97": 1415147520,
"p98": 1415147520,
"p99": 1415147520
},
"memory_limit": {
"max": 34359738368
},
"swap_used": {
"min": 223432704,
"max": 223432704,
"avg": 223432704,
"stddev": null,
"p50": 223432704,
"p95": 223432704,
"p96": 223432704,
"p97": 223432704,
"p98": 223432704,
"p99": 223432704
},
"swap_limit": {
"max": 536870912
},
"memory_pressure": {
"min": 0,
"max": 0,
"avg": 0,
"stddev": null,
"p50": 0,
"p95": 0,
"p96": 0,
"p97": 0,
"p98": 0,
"p99": 0
},
"cpu_pressure": {
"min": 0.08,
"max": 0.08,
"avg": 0.08,
"stddev": null,
"p50": 0.08,
"p95": 0.08,
"p96": 0.08,
"p97": 0.08,
"p98": 0.08,
"p99": 0.08
},
"io_pressure": {
"min": 0.12,
"max": 0.12,
"avg": 0.12,
"stddev": null,
"p50": 0.12,
"p95": 0.12,
"p96": 0.12,
"p97": 0.12,
"p98": 0.12,
"p99": 0.12
},
"irq_pressure": {
"min": 0,
"max": 0,
"avg": 0,
"stddev": null,
"p50": 0,
"p95": 0,
"p96": 0,
"p97": 0,
"p98": 0,
"p99": 0
},
"mountpoints": {
"": {
"disk_used": {
"min": null,
"max": null,
"avg": null,
"stddev": null,
"p50": null,
"p95": null,
"p96": null,
"p97": null,
"p98": null,
"p99": null
},
"disk_limit": {
"max": null
},
"inodes_used": {
"min": null,
"max": null,
"avg": null,
"stddev": null,
"p50": null,
"p95": null,
"p96": null,
"p97": null,
"p98": null,
"p99": null
},
"inodes_limit": {
"max": null
}
},
"/mnt": {
"disk_used": {
"min": 608173674496,
"max": 608173674496,
"avg": 608173674496,
"stddev": null,
"p50": 608173674496,
"p95": 608173674496,
"p96": 608173674496,
"p97": 608173674496,
"p98": 608173674496,
"p99": 608173674496
},
"disk_limit": {
"max": 1056876748800
},
"inodes_used": {
"min": 495287,
"max": 495287,
"avg": 495287,
"stddev": null,
"p50": 495287,
"p95": 495287,
"p96": 495287,
"p97": 495287,
"p98": 495287,
"p99": 495287
},
"inodes_limit": {
"max": 65536000
}
},
"/tmp": {
"disk_used": {
"min": 76398592,
"max": 76398592,
"avg": 76398592,
"stddev": null,
"p50": 76398592,
"p95": 76398592,
"p96": 76398592,
"p97": 76398592,
"p98": 76398592,
"p99": 76398592
},
"disk_limit": {
"max": 17169383424
},
"inodes_used": {
"min": 11,
"max": 11,
"avg": 11,
"stddev": null,
"p50": 11,
"p95": 11,
"p96": 11,
"p97": 11,
"p98": 11,
"p99": 11
},
"inodes_limit": {
"max": 8388608
}
}
}
}
}
}
}
}{
"type": "https://tools.ietf.org/html/rfc2616#section-1",
"title": "Please ensure parameters are correct.",
"status": 400,
"violations": {
"from": [
"The from timestamp must be in the past."
],
"to": [
"The to timestamp must be greater than the from timestamp."
]
}
}{
"error": "Too much data fetched",
"message": "Please reduce the time range or add more filters to narrow down the query"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The unique identifier of the Upsun project
[a-z0-9]+"abc123def456"
The environment identifier
.+"main"
Query Parameters
Start timestamp for the time range (Unix timestamp in seconds)
1704067200
End timestamp for the time range (Unix timestamp in seconds)
1704153600
Statistical aggregations to include in the response. Can be specified multiple times. Available values: avg, stddev, max, min, p50, p95, p96, p97, p98, p99. Specify parameter multiple times for multiple values (e.g., ?aggs[]=avg&aggs[]=p50).
avg, stddev, max, min, p50, p95, p96, p97, p98, p99 Metric types to include in the response. Can be specified multiple times. Available values: cpu, memory, disk, inodes, swap, memory_pressure, cpu_pressure, io_pressure, irq_pressure. Specify parameter multiple times for multiple values (e.g., ?types[]=cpu&types[]=memory).
cpu, memory, disk, inodes, swap, memory_pressure, cpu_pressure, io_pressure, irq_pressure Filter results to specific services. Can be specified multiple times for multiple services. When omitted, all services are included by default. Use services_mode to control inclusion/exclusion behavior. Specify parameter multiple times for multiple values (e.g., ?services[]=app&services[]=database).
Filter mode for services parameter. "1" (additive) includes only specified services. "-1" (subtractive, default) excludes specified services and includes all others.
1, -1 "1"
Response
Successfully retrieved resource summary with per-service-instance aggregations
Query start timestamp
1704067200
Query end timestamp
1704153600
Project identifier
"abc123def456"
Environment identifier
"main"
Branch machine name
"main-bvxea6i"
Resource summary data organized by service and instance
Show child attributes
Show child attributes
Was this page helpful?