-
Notifications
You must be signed in to change notification settings - Fork 896
feat(coderd/healthcheck): add access URL error codes and healthcheck doc #10915
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
cbb09ea
to
8080874
Compare
What would be the expected shape here? Something like: {
"warnings": [
"code": "W001",
"message": "This is a warning"
],
"resolutions": {
"W001": "https://docs.coder.com/warning/W001"
}
} |
I had envisioned |
@johnstcn sounds good! |
8080874
to
1994ce1
Compare
// CodeUnknown is a catch-all health code when something unexpected goes wrong (for example, a panic). | ||
CodeUnknown Code = "EUNKNOWN" | ||
|
||
CodeProxyUpdate Code = "EWP01" | ||
CodeProxyFetch Code = "EWP02" | ||
CodeProxyVersionMismatch Code = "EWP03" | ||
CodeProxyUnhealthy Code = "EWP04" | ||
|
||
CodeDatabasePingFailed Code = "EDB01" | ||
CodeDatabasePingSlow Code = "EDB02" | ||
|
||
CodeWebsocketDial Code = "EWS01" | ||
CodeWebsocketEcho Code = "EWS02" | ||
CodeWebsocketMsg Code = "EWS03" | ||
|
||
CodeAccessURLNotSet Code = "EACS01" | ||
CodeAccessURLInvalid Code = "EACS02" | ||
CodeAccessURLFetch Code = "EACS03" | ||
CodeAccessURLNotOK Code = "EACS04" | ||
|
||
CodeDERPNodeUsesWebsocket Code = `EDERP01` | ||
CodeDERPOneNodeUnhealthy Code = `EDERP02` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
review: these all have to go in here to be generated properly
Co-authored-by: Muhammad Atif Ali <atif@coder.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few comments but this is Awesome <3
Co-authored-by: Muhammad Atif Ali <atif@coder.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestions inline
> [forced websocket connections for DERP](../cli/server.md#--derp-force-websockets). | ||
|
||
**Solution:** ensure that any configured reverse proxy does not strip the | ||
`Upgrade: derp` header. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ensure that any proxies you use allow connection upgrade with the Upgrade: derp
header.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
performance may be impacted for clients closest to the unhealthy DERP server. | ||
|
||
**Solution:** Ensure that the DERP server is available and reachable over the | ||
network on port 443, for example: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ensure that the DERP server is available and reachable over the network, for example:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
network on port 443, for example: | ||
|
||
```shell | ||
curl -v "https://coder.company.com:443/derp" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:443 is redundant if you use https://
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
running Coder, using standard troubleshooting tools like `curl`: | ||
|
||
```shell | ||
curl -v "https://coder.company.com:443/" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:443 is redundant with https://
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
``` | ||
|
||
2. Ensure that any reverse proxy that is sitting in front of Coder's configured | ||
access URL is not stripping the HTTP header `Upgrade: websocket`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ensure that any reverse proxy that is serving Coder's configured access URL allows connection upgrade with the header Upgrade: websocket
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
**Problem:** One or more workspace proxies are not reachable. | ||
|
||
**Solution:** Ensure that Coder can establish a connection to the configured | ||
workspace proxies on port 443. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ensure that Coder can establish a connection to the configured
workspace proxies
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Relates to #8965
Future work:
site/src/api
to create a troubleshooting link from an error that extracts the error code prefix matching^([A-Z0-9]+):
..error
and.warnings[]
to be a shape of{ message: string, code: string}
. I started on this but realised it makes the diff too large, so will do it in a follow-up.