mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore: add DRPC server implementation for network telemetry (#13675)
This commit is contained in:
@@ -24,9 +24,11 @@ import (
|
||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||
"github.com/coder/coder/v2/coderd/httpapi"
|
||||
"github.com/coder/coder/v2/coderd/httpmw"
|
||||
"github.com/coder/coder/v2/coderd/telemetry"
|
||||
"github.com/coder/coder/v2/coderd/util/ptr"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
"github.com/coder/coder/v2/tailnet"
|
||||
tailnetproto "github.com/coder/coder/v2/tailnet/proto"
|
||||
)
|
||||
|
||||
// @Summary Workspace agent RPC API
|
||||
@@ -130,11 +132,11 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
|
||||
Pubsub: api.Pubsub,
|
||||
DerpMapFn: api.DERPMap,
|
||||
TailnetCoordinator: &api.TailnetCoordinator,
|
||||
TemplateScheduleStore: api.TemplateScheduleStore,
|
||||
AppearanceFetcher: &api.AppearanceFetcher,
|
||||
StatsReporter: api.statsReporter,
|
||||
PublishWorkspaceUpdateFn: api.publishWorkspaceUpdate,
|
||||
PublishWorkspaceAgentLogsUpdateFn: api.publishWorkspaceAgentLogsUpdate,
|
||||
NetworkTelemetryHandler: api.NetworkTelemetryBatcher.Handler,
|
||||
|
||||
AccessURL: api.AccessURL,
|
||||
AppHostname: api.AppHostname,
|
||||
@@ -165,6 +167,22 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
func (api *API) handleNetworkTelemetry(batch []*tailnetproto.TelemetryEvent) {
|
||||
telemetryEvents := make([]telemetry.NetworkEvent, 0, len(batch))
|
||||
for _, pEvent := range batch {
|
||||
tEvent, err := telemetry.NetworkEventFromProto(pEvent)
|
||||
if err != nil {
|
||||
// Events that fail to be converted get discarded for now.
|
||||
continue
|
||||
}
|
||||
telemetryEvents = append(telemetryEvents, tEvent)
|
||||
}
|
||||
|
||||
api.Telemetry.Report(&telemetry.Snapshot{
|
||||
NetworkEvents: telemetryEvents,
|
||||
})
|
||||
}
|
||||
|
||||
type yamuxPingerCloser struct {
|
||||
mux *yamux.Session
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user