in plugins/core/reporter/grpc/grpc.go [48:92]
func NewGRPCReporter(logger operator.LogOperator, serverAddr string, opts ...ReporterOption) (reporter.Reporter, error) {
r := &gRPCReporter{
logger: logger,
tracingSendCh: make(chan *agentv3.SegmentObject, maxSendQueueSize),
metricsSendCh: make(chan []*agentv3.MeterData, maxSendQueueSize),
logSendCh: make(chan *logv3.LogData, maxSendQueueSize),
checkInterval: defaultCheckInterval,
cdsInterval: defaultCDSInterval, // cds default on
connectionStatus: reporter.ConnectionStatusConnected,
}
for _, o := range opts {
o(r)
}
var credsDialOption grpc.DialOption
if r.creds != nil {
// use tls
credsDialOption = grpc.WithTransportCredentials(r.creds)
} else {
credsDialOption = grpc.WithTransportCredentials(insecure.NewCredentials())
}
conn, err := grpc.Dial(serverAddr, credsDialOption, grpc.WithConnectParams(grpc.ConnectParams{
// update the max backoff delay interval
Backoff: backoff.Config{
BaseDelay: 1.0 * time.Second,
Multiplier: 1.6,
Jitter: 0.2,
MaxDelay: r.checkInterval,
},
}))
if err != nil {
return nil, err
}
r.conn = conn
r.traceClient = agentv3.NewTraceSegmentReportServiceClient(r.conn)
r.metricsClient = agentv3.NewMeterReportServiceClient(r.conn)
r.logClient = logv3.NewLogReportServiceClient(r.conn)
r.managementClient = managementv3.NewManagementServiceClient(r.conn)
if r.cdsInterval > 0 {
r.cdsClient = configuration.NewConfigurationDiscoveryServiceClient(r.conn)
r.cdsService = reporter.NewConfigDiscoveryService()
}
return r, nil
}