Observability
Logs, metrics, traffic and runtime state of services and environments. Each operation lists its method and path, parameters, request body, responses and an example call.
/api/v1/clusters/{id}/project-usageAn API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.
In: header
Path Parameters
Cluster id.
Response Body
application/json
application/problem+json
curl -X GET "https://example.com/api/v1/clusters/string/project-usage"{ "$schema": "https://example.com/ClusterProjectUsageOutputBody.json", "projects": [ { "cpuMilli": 0, "memoryBytes": 0, "projectId": "string" } ]}/api/v1/environments/{id}/canvas-metricsAn API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.
In: header
Path Parameters
Environment id.
Response Body
application/json
application/problem+json
curl -X GET "https://example.com/api/v1/environments/string/canvas-metrics"{ "$schema": "https://example.com/CanvasMetricsOutputBody.json", "services": [ { "cron": { "lastScheduleTime": "2019-08-24T14:15:22Z", "nextRunTime": "2019-08-24T14:15:22Z", "processName": "string", "runs": [ { "finishedAt": "2019-08-24T14:15:22Z", "startedAt": "2019-08-24T14:15:22Z", "succeeded": true } ] }, "instances": [ { "ready": true, "role": "writer" } ], "kind": "string", "limits": { "cpuMilli": 0, "memoryBytes": 0 }, "metrics": [ { "headline": 0.1, "key": "cpu", "observed": 0, "points": [ { "t": "2019-08-24T14:15:22Z", "v": 0.1 } ], "unreported": "tailnet-only", "value": "string" } ], "processName": "string", "serviceId": "string" } ]}/api/v1/environments/{id}/logsAn API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.
In: header
Path Parameters
Environment id.
Query Parameters
Opaque cursor from a previous response's nextCursor. Omit for the first page.
How many items to return.
int641 <= value <= 20050Restrict to one service. Omit for the whole environment.
Restrict to one pod. Omit for every pod.
Full-text search over log lines. Omit to match everything.
Inclusive lower time bound. Omit for the start of retention.
date-timeExclusive upper time bound. Omit for now.
date-timeOnly lines at this level or worse (warn includes error). Omit for every line, including lines with no detectable level.
Value in
- "debug"
- "info"
- "warn"
- "error"
Response Body
application/json
application/problem+json
curl -X GET "https://example.com/api/v1/environments/string/logs"{ "$schema": "https://example.com/ListLogsOutputBody.json", "items": [ { "at": "2019-08-24T14:15:22Z", "gap": true, "gapReason": "string", "level": "debug", "podName": "string", "processName": "string", "serviceId": "string", "text": "string" } ], "nextCursor": "string"}/api/v1/environments/{id}/logs/streamAn API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.
In: header
Path Parameters
Environment id.
Query Parameters
Restrict the tail to one service. Omit for the whole environment.
Restrict the tail to one pod. Omit for every pod.
Only lines at this level or worse (warn includes error). Omit for every line, including lines with no detectable level.
Value in
- "debug"
- "info"
- "warn"
- "error"
Response Body
text/event-stream
application/problem+json
curl -X GET "https://example.com/api/v1/environments/string/logs/stream"[ { "data": { "at": "2019-08-24T14:15:22Z", "environmentId": "string", "level": "debug", "podName": "string", "processName": "string", "serviceId": "string", "text": "string" }, "event": "log", "id": 0, "retry": 0 }]/api/v1/services/{id}/metricsAn API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.
In: header
Path Parameters
Service id.
Query Parameters
Environment id.
Trailing window to report.
Value in
- "1h"
- "6h"
- "24h"
Response Body
application/json
application/problem+json
curl -X GET "https://example.com/api/v1/services/string/metrics"{ "$schema": "https://example.com/ServiceMetricsOutputBody.json", "pods": [ { "podName": "string", "samples": [ { "at": "2019-08-24T14:15:22Z", "cpuMilli": 0, "memoryBytes": 0 } ] } ]}/api/v1/services/{id}/metrics/summaryAn API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.
In: header
Path Parameters
Service id.
Query Parameters
Environment id.
Trailing window to report.
"1h"Value in
- "1h"
- "24h"
- "7d"
Response Body
application/json
application/problem+json
curl -X GET "https://example.com/api/v1/services/string/metrics/summary?environmentId=string"{ "$schema": "https://example.com/MetricsSummaryOutputBody.json", "bucketSeconds": 0, "cpu": { "limitMilli": 0, "points": [ { "t": "2019-08-24T14:15:22Z", "v": 0.1 } ], "unit": "percent" }, "errorRate": { "points": [ { "t": "2019-08-24T14:15:22Z", "v": 0.1 } ] }, "memory": { "limitBytes": 0, "points": [ { "t": "2019-08-24T14:15:22Z", "v": 0.1 } ], "unit": "percent" }, "p95Ms": { "points": [ { "t": "2019-08-24T14:15:22Z", "v": 0.1 } ] }, "requestsPerMinute": { "points": [ { "t": "2019-08-24T14:15:22Z", "v": 0.1 } ] }, "trafficReported": true, "usageReported": true, "window": "1h"}/api/v1/services/{id}/runtimeAn API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.
In: header
Path Parameters
Service id.
Query Parameters
Environment id.
Response Body
application/json
application/problem+json
curl -X GET "https://example.com/api/v1/services/string/runtime"{ "$schema": "https://example.com/ServiceRuntimeOutputBody.json", "clusterId": "string", "events": [ { "at": "2019-08-24T14:15:22Z", "kind": "string" } ], "observedAt": "2019-08-24T14:15:22Z", "pods": [ { "cpuMilli": 0, "lastExitCode": 0, "lastTerminationReason": "string", "memoryBytes": 0, "name": "string", "node": "string", "phase": "string", "processName": "string", "ready": true, "restarts": 0, "startedAt": "2019-08-24T14:15:22Z", "waitingMessage": "string", "waitingReason": "string" } ], "resources": [ { "name": "string", "of": "string" } ]}/api/v1/services/{id}/trafficAn API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.
In: header
Path Parameters
Service id.
Query Parameters
Environment id.
Trailing window to report.
Value in
- "1h"
- "6h"
- "24h"
Response Body
application/json
application/problem+json
curl -X GET "https://example.com/api/v1/services/string/traffic"{ "$schema": "https://example.com/ServiceTrafficOutputBody.json", "points": [ { "at": "2019-08-24T14:15:22Z", "errors5xx": 0, "errors5xxShare": 0.1, "latencyP95Milli": 0, "requests": 0, "requestsPerMinute": 0.1 } ]}Mesh
The WireGuard mesh between machines, and the access grants between environments. Each operation lists its method and path, parameters, request body, responses and an example call.
Events
A live stream of hints about what changed in the active organization. Each operation lists its method and path, parameters, request body, responses and an example call.