The Tenant HTTP API
The Grafana Fleet Management Tenant API allows you to retrieve information about your stack.
Calls to the API can give you aggregated analytics about your fleet’s composition and health status.
They can also tell you what limits, if any, apply to your stack.
The data returned by the GetSummary endpoint powers the Overview tab in the Fleet Management application.
Find the base URL
You can find the base URL for the Tenant API in the Grafana Cloud Fleet Management interface.
- In your Grafana Cloud stack, click Connections > Collector > Fleet Management in the left-side menu.
- On the Fleet Management interface, switch to the API tab.
- Find the URL in the Base URL section.
It looks like the following URL, where
<CLUSTER_NAME>is the production cluster of your stack:
https://fleet-management-<CLUSTER_NAME>.grafana.net/tenant.v1.TenantService/Note
If you need to secure your API traffic, you can configure a private endpoint in place of the base URL. You can find the service name for endpoint configuration and the private DNS name on the same API tab where the base URL is found. For more information, refer to the instructions for your cloud provider:
TenantService
TenantService is the service that provides information about the tenant.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| GetLimits | GetLimitsRequest | GetLimitsResponse | Returns the limits applied to the stack |
| GetSummary | GetSummaryRequest | GetSummaryResponse | Returns aggregated analytics of the stack |
Endpoints
Note
Protobuf field names are defined in
snake_case. Due to default protojson behavior, field names are converted tocamelCasein responses. Bothsnake_caseandcamelCasefield names are accepted in requests.
GetLimitsRequest
GetLimitsRequest is a request to retrieve the collector, pipeline, and requests per second (RPS) limits for a stack.
GetLimitsResponse
GetLimitsResponse is the response to a GetLimitsRequest.
It contains all limits applied to the stack.
If a limit field is omitted in the response, that limit does not apply to the stack.
For example, if the response does not contain the collectors field, the stack does not have a limit on the number of collectors.
| Field | Type | Label | Description |
|---|---|---|---|
| collectors | integer | The limit on the number of collectors for the tenant | |
| pipelines | integer | The limit on the number of configuration pipelines for the tenant | |
| requests_per_second | RequestLimits | The request limits for the tenant |
RequestLimits
| Field | Type | Label | Description |
|---|---|---|---|
| collector | integer | The limit on the number of requests per second for collectors | |
| api | integer | The limit on the number of requests per second for the API and UI |
GetSummaryRequest
The GetSummaryRequest is a request to retrieve collector and pipeline analytics for the stack.
GetSummaryResponse
The GetSummaryResponse contains summarized analytics for collectors and pipelines, as well as the health status of your fleet.
| Field | Type | Label | Description |
|---|---|---|---|
| collectors | CollectorSummary | Summary analytics about all collectors in the stack | |
| pipelines | PipelineSummary | Summary analytics about all configuration pipelines in the stack | |
| limits | LimitsSummary | Summary analytics about collector and pipeline limits for the stack |
CollectorSummary
CollectorSummary aggregates collectors by several characteristics.
If no collectors are registered, the response returns an empty collectors object and all other fields are omitted.
For all other fields, the field is omitted from the response if no collectors match.
| Field | Type | Label | Description |
|---|---|---|---|
| total | integer | required | Total number of collectors in the stack |
| health_status | map(string, int) | required | Number of collectors by health status: healthy, warning, error, offline, 0 if none apply |
| by_type | map(string, int) | optional | Number of collectors by type: ALLOY or OTEL |
| by_version | map(string, int) | optional | Number of collectors by collector version |
| by_os | map(string, int) | optional | Number of collectors by operating system |
PipelineSummary
PipelineSummary aggregates configuration pipelines in total and by external sync source.
If no pipelines exist, the response returns an empty pipelines object and all other fields are omitted.
| Field | Type | Label | Description |
|---|---|---|---|
| total | integer | required | Total number of configuration pipelines in the stack |
| by_sync_source | map(string, int) | optional | Number of configuration pipelines for each source: GIT, TERRAFORM, UNSPECIFIED |
LimitsSummary
LimitsSummary provides the current total and stack limit for collectors and configuration pipelines. The current count of collectors includes active collectors only.
| Field | Type | Label | Description |
|---|---|---|---|
| collectors | Limits | Current total and maximum limit for active collectors | |
| pipelines | Limits | Current total and maximum limit for pipelines |
Limits
| Field | Type | Label | Description |
|---|---|---|---|
| current | integer | The current count of active collectors or total pipelines | |
| max | integer | The maximum allowed count, or -1 if unlimited |
Examples
The following request retrieves limits for the authorized stack. The Basic Auth username and password are set as environment variables.
curl -s \
-u "$GCLOUD_INSTANCE_ID:$GCLOUD_FM_API_TOKEN" \
-H "Content-Type: application/json" \
-X POST \
-d '{}' \
https://fleet-management-prod-001.grafana.net/tenant.v1.TenantService/GetLimits \
| jqThis is the response showing all limits:
{
"pipelines": 200,
"collectors": 2000,
"requestsPerSecond": {
"collector": 20,
"api": 3
}
}The following request retrieves aggregated analytics for collectors and pipelines in the authorized stack. The Basic Auth username and password are set as environment variables.
curl -s \
-u "$GCLOUD_INSTANCE_ID:$GCLOUD_FM_API_TOKEN" \
-H "Content-Type: application/json" \
-X POST \
-d '{}' \
https://fleet-management-prod-001.grafana.net/tenant.v1.TenantService/GetSummary \
| jqThis is the response showing collector and pipeline analytics:
{
"collectors": {
"total": 2000,
"healthStatus": {
"healthy": 1800,
"warning": 100,
"error": 50,
"offline": 50
},
"byType": {
"ALLOY": 1900,
"OTEL": 100
},
"byVersion": {
"v0.142.0": 100,
"v1.11.3": 1200,
"v1.12.0": 700
},
"byOs": {
"linux": 1500,
"darwin": 300,
"windows": 200
}
},
"pipelines": {
"total": 180,
"bySyncSource": {
"GIT": 130,
"TERRAFORM": 20
"UNSPECIFIED": 30
}
},
"limits": {
"collectors": {
"current": 1950,
"max": 2000
},
"pipelines": {
"current": 180,
"max": 200
}
}
}Was this page helpful?
Related resources from Grafana Labs


