mirror of
https://github.com/coder/coder.git
synced 2025-07-21 01:28:49 +00:00
feat: add connection statistics for workspace agents (#6469)
* fix: don't make session counts cumulative This made for some weird tracking... we want the point-in-time number of counts! * Add databasefake query for getting agent stats * Add deployment stats endpoint * The query... works?!? * Fix aggregation query * Select from multiple tables instead * Fix continuous stats * Increase period of stat refreshes * Add workspace counts to deployment stats * fmt * Add a slight bit of responsiveness * Fix template version editor overflow * Add refresh button * Fix font family on button * Fix latest stat being reported * Revert agent conn stats * Fix linting error * Fix tests * Fix gen * Fix migrations * Block on sending stat updates * Add test fixtures * Fix response structure * make gen
This commit is contained in:
@ -64,18 +64,53 @@ curl -X GET http://coder-server:8080/api/v2/buildinfo \
|
||||
| ------ | ------------------------------------------------------- | ----------- | ------------------------------------------------------------------ |
|
||||
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.BuildInfoResponse](schemas.md#codersdkbuildinforesponse) |
|
||||
|
||||
## Report CSP violations
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X POST http://coder-server:8080/api/v2/csp/reports \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H 'Coder-Session-Token: API_KEY'
|
||||
```
|
||||
|
||||
`POST /csp/reports`
|
||||
|
||||
> Body parameter
|
||||
|
||||
```json
|
||||
{
|
||||
"csp-report": {}
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| ------ | ---- | ---------------------------------------------------- | -------- | ---------------- |
|
||||
| `body` | body | [coderd.cspViolation](schemas.md#coderdcspviolation) | true | Violation report |
|
||||
|
||||
### Responses
|
||||
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | ------------------------------------------------------- | ----------- | ------ |
|
||||
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | |
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
|
||||
## Get deployment config
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X GET http://coder-server:8080/api/v2/config/deployment \
|
||||
curl -X GET http://coder-server:8080/api/v2/deployment/config \
|
||||
-H 'Accept: application/json' \
|
||||
-H 'Coder-Session-Token: API_KEY'
|
||||
```
|
||||
|
||||
`GET /config/deployment`
|
||||
`GET /deployment/config`
|
||||
|
||||
### Example responses
|
||||
|
||||
@ -362,38 +397,55 @@ curl -X GET http://coder-server:8080/api/v2/config/deployment \
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
|
||||
## Report CSP violations
|
||||
## Get deployment stats
|
||||
|
||||
### Code samples
|
||||
|
||||
```shell
|
||||
# Example request using curl
|
||||
curl -X POST http://coder-server:8080/api/v2/csp/reports \
|
||||
-H 'Content-Type: application/json' \
|
||||
curl -X GET http://coder-server:8080/api/v2/deployment/stats \
|
||||
-H 'Accept: application/json' \
|
||||
-H 'Coder-Session-Token: API_KEY'
|
||||
```
|
||||
|
||||
`POST /csp/reports`
|
||||
`GET /deployment/stats`
|
||||
|
||||
> Body parameter
|
||||
### Example responses
|
||||
|
||||
> 200 Response
|
||||
|
||||
```json
|
||||
{
|
||||
"csp-report": {}
|
||||
"aggregated_from": "2019-08-24T14:15:22Z",
|
||||
"collected_at": "2019-08-24T14:15:22Z",
|
||||
"next_update_at": "2019-08-24T14:15:22Z",
|
||||
"session_count": {
|
||||
"jetbrains": 0,
|
||||
"reconnecting_pty": 0,
|
||||
"ssh": 0,
|
||||
"vscode": 0
|
||||
},
|
||||
"workspaces": {
|
||||
"building": 0,
|
||||
"connection_latency_ms": {
|
||||
"p50": 0,
|
||||
"p95": 0
|
||||
},
|
||||
"failed": 0,
|
||||
"pending": 0,
|
||||
"running": 0,
|
||||
"rx_bytes": 0,
|
||||
"stopped": 0,
|
||||
"tx_bytes": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
| ------ | ---- | ---------------------------------------------------- | -------- | ---------------- |
|
||||
| `body` | body | [coderd.cspViolation](schemas.md#coderdcspviolation) | true | Violation report |
|
||||
|
||||
### Responses
|
||||
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | ------------------------------------------------------- | ----------- | ------ |
|
||||
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | |
|
||||
| Status | Meaning | Description | Schema |
|
||||
| ------ | ------------------------------------------------------- | ----------- | -------------------------------------------------------------- |
|
||||
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | OK | [codersdk.DeploymentStats](schemas.md#codersdkdeploymentstats) |
|
||||
|
||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||
|
||||
|
@ -1947,6 +1947,45 @@ CreateParameterRequest is a structure used to create a new parameter value for a
|
||||
| --------- | ----------------------------------------------- | -------- | ------------ | ----------- |
|
||||
| `entries` | array of [codersdk.DAUEntry](#codersdkdauentry) | false | | |
|
||||
|
||||
## codersdk.DeploymentStats
|
||||
|
||||
```json
|
||||
{
|
||||
"aggregated_from": "2019-08-24T14:15:22Z",
|
||||
"collected_at": "2019-08-24T14:15:22Z",
|
||||
"next_update_at": "2019-08-24T14:15:22Z",
|
||||
"session_count": {
|
||||
"jetbrains": 0,
|
||||
"reconnecting_pty": 0,
|
||||
"ssh": 0,
|
||||
"vscode": 0
|
||||
},
|
||||
"workspaces": {
|
||||
"building": 0,
|
||||
"connection_latency_ms": {
|
||||
"p50": 0,
|
||||
"p95": 0
|
||||
},
|
||||
"failed": 0,
|
||||
"pending": 0,
|
||||
"running": 0,
|
||||
"rx_bytes": 0,
|
||||
"stopped": 0,
|
||||
"tx_bytes": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ----------------- | ---------------------------------------------------------------------------- | -------- | ------------ | --------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `aggregated_from` | string | false | | Aggregated from is the time in which stats are aggregated from. This might be back in time a specific duration or interval. |
|
||||
| `collected_at` | string | false | | Collected at is the time in which stats are collected at. |
|
||||
| `next_update_at` | string | false | | Next update at is the time when the next batch of stats will be updated. |
|
||||
| `session_count` | [codersdk.SessionCountDeploymentStats](#codersdksessioncountdeploymentstats) | false | | |
|
||||
| `workspaces` | [codersdk.WorkspaceDeploymentStats](#codersdkworkspacedeploymentstats) | false | | |
|
||||
|
||||
## codersdk.DeploymentValues
|
||||
|
||||
```json
|
||||
@ -3293,6 +3332,26 @@ Parameter represents a set value for the scope.
|
||||
| `enabled` | boolean | false | | |
|
||||
| `message` | string | false | | |
|
||||
|
||||
## codersdk.SessionCountDeploymentStats
|
||||
|
||||
```json
|
||||
{
|
||||
"jetbrains": 0,
|
||||
"reconnecting_pty": 0,
|
||||
"ssh": 0,
|
||||
"vscode": 0
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ------------------ | ------- | -------- | ------------ | ----------- |
|
||||
| `jetbrains` | integer | false | | |
|
||||
| `reconnecting_pty` | integer | false | | |
|
||||
| `ssh` | integer | false | | |
|
||||
| `vscode` | integer | false | | |
|
||||
|
||||
## codersdk.SupportConfig
|
||||
|
||||
```json
|
||||
@ -4746,6 +4805,53 @@ Parameter represents a set value for the scope.
|
||||
| `name` | string | false | | |
|
||||
| `value` | string | false | | |
|
||||
|
||||
## codersdk.WorkspaceConnectionLatencyMS
|
||||
|
||||
```json
|
||||
{
|
||||
"p50": 0,
|
||||
"p95": 0
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ----- | ------ | -------- | ------------ | ----------- |
|
||||
| `p50` | number | false | | |
|
||||
| `p95` | number | false | | |
|
||||
|
||||
## codersdk.WorkspaceDeploymentStats
|
||||
|
||||
```json
|
||||
{
|
||||
"building": 0,
|
||||
"connection_latency_ms": {
|
||||
"p50": 0,
|
||||
"p95": 0
|
||||
},
|
||||
"failed": 0,
|
||||
"pending": 0,
|
||||
"running": 0,
|
||||
"rx_bytes": 0,
|
||||
"stopped": 0,
|
||||
"tx_bytes": 0
|
||||
}
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Required | Restrictions | Description |
|
||||
| ----------------------- | ------------------------------------------------------------------------------ | -------- | ------------ | ----------- |
|
||||
| `building` | integer | false | | |
|
||||
| `connection_latency_ms` | [codersdk.WorkspaceConnectionLatencyMS](#codersdkworkspaceconnectionlatencyms) | false | | |
|
||||
| `failed` | integer | false | | |
|
||||
| `pending` | integer | false | | |
|
||||
| `running` | integer | false | | |
|
||||
| `rx_bytes` | integer | false | | |
|
||||
| `stopped` | integer | false | | |
|
||||
| `tx_bytes` | integer | false | | |
|
||||
|
||||
## codersdk.WorkspaceQuota
|
||||
|
||||
```json
|
||||
|
Reference in New Issue
Block a user