feat: add Prometheus collector for DERP server expvar metrics (#22583)

This PR does three things:
- Exports derp expvars to the pprof endpoint
- Exports the expvar metrics as prometheus metrics in both coderd and
wsproxy
- Updates our tailscale to a fix I also had to make to avoid a data race
condition

I generated this with mux but I also manually tested that the metrics
were getting properly emitted
This commit is contained in:
Jon Ayers
2026-03-06 01:57:58 -06:00
committed by GitHub
parent d034903736
commit 6c44de951d
11 changed files with 617 additions and 16 deletions
+25
View File
@@ -125,6 +125,31 @@ deployment. They will always be available from the agent.
| `coder_aibridgeproxyd_inflight_mitm_requests` | gauge | Number of MITM requests currently being processed. | `provider` |
| `coder_aibridgeproxyd_mitm_requests_total` | counter | Total number of MITM requests handled by the proxy. | `provider` |
| `coder_aibridgeproxyd_mitm_responses_total` | counter | Total number of MITM responses by HTTP status code class. | `code` `provider` |
| `coder_derp_server_accepts_total` | counter | Total DERP connections accepted. | |
| `coder_derp_server_average_queue_duration_ms` | gauge | Average queue duration in milliseconds. | |
| `coder_derp_server_bytes_received_total` | counter | Total bytes received. | |
| `coder_derp_server_bytes_sent_total` | counter | Total bytes sent. | |
| `coder_derp_server_clients` | gauge | Total clients (local + remote). | |
| `coder_derp_server_clients_local` | gauge | Local clients. | |
| `coder_derp_server_clients_remote` | gauge | Remote (mesh) clients. | |
| `coder_derp_server_connections` | gauge | Current DERP connections. | |
| `coder_derp_server_got_ping_total` | counter | Total pings received. | |
| `coder_derp_server_home_connections` | gauge | Current home DERP connections. | |
| `coder_derp_server_home_moves_in_total` | counter | Total home moves in. | |
| `coder_derp_server_home_moves_out_total` | counter | Total home moves out. | |
| `coder_derp_server_packets_dropped_reason_total` | counter | Packets dropped by reason. | `reason` |
| `coder_derp_server_packets_dropped_total` | counter | Total packets dropped. | |
| `coder_derp_server_packets_dropped_type_total` | counter | Packets dropped by type. | `type` |
| `coder_derp_server_packets_forwarded_in_total` | counter | Total packets forwarded in from mesh peers. | |
| `coder_derp_server_packets_forwarded_out_total` | counter | Total packets forwarded out to mesh peers. | |
| `coder_derp_server_packets_received_kind_total` | counter | Packets received by kind. | `kind` |
| `coder_derp_server_packets_received_total` | counter | Total packets received. | |
| `coder_derp_server_packets_sent_total` | counter | Total packets sent. | |
| `coder_derp_server_peer_gone_disconnected_total` | counter | Total peer gone (disconnected) frames sent. | |
| `coder_derp_server_peer_gone_not_here_total` | counter | Total peer gone (not here) frames sent. | |
| `coder_derp_server_sent_pong_total` | counter | Total pongs sent. | |
| `coder_derp_server_unknown_frames_total` | counter | Total unknown frames received. | |
| `coder_derp_server_watchers` | gauge | Current watchers. | |
| `coder_pubsub_connected` | gauge | Whether we are connected (1) or not connected (0) to postgres | |
| `coder_pubsub_current_events` | gauge | The current number of pubsub event channels listened for | |
| `coder_pubsub_current_subscribers` | gauge | The current number of active pubsub subscribers | |