MCPcopy
hub / github.com/grpc/grpc-go / main

Function main

examples/features/csm_observability/client/main.go:51–88  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

49)
50
51func main() {
52 flag.Parse()
53 exporter, err := prometheus.New()
54 if err != nil {
55 log.Fatalf("Failed to start prometheus exporter: %v", err)
56 }
57 provider := metric.NewMeterProvider(metric.WithReader(exporter))
58 go http.ListenAndServe(*prometheusEndpoint, promhttp.Handler())
59
60 cleanup := csm.EnableObservability(context.Background(), opentelemetry.Options{MetricsOptions: opentelemetry.MetricsOptions{MeterProvider: provider}})
61 defer cleanup()
62
63 // Set up xds credentials that fall back to insecure as described in:
64 // https://cloud.google.com/service-mesh/docs/service-routing/security-proxyless-setup#workloads_are_unable_to_communicate_in_the_security_setup.
65 creds, err := xdscreds.NewClientCredentials(xdscreds.ClientOptions{FallbackCreds: insecure.NewCredentials()})
66 if err != nil {
67 log.Fatalf("Failed to create xDS credentials: %v", err)
68 }
69 cc, err := grpc.NewClient(*target, grpc.WithTransportCredentials(creds))
70 if err != nil {
71 log.Fatalf("Failed to start NewClient: %v", err)
72 }
73 defer cc.Close()
74 c := pb.NewGreeterClient(cc)
75
76 // Make an RPC every second. This should trigger telemetry to be emitted from
77 // the client and the server.
78 for {
79 ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
80 r, err := c.SayHello(ctx, &pb.HelloRequest{Name: *name})
81 if err != nil {
82 log.Fatalf("Could not greet: %v", err)
83 }
84 fmt.Println(r)
85 time.Sleep(time.Second)
86 cancel()
87 }
88}

Callers

nothing calls this directly

Calls 9

SayHelloMethod · 0.95
EnableObservabilityFunction · 0.92
NewCredentialsFunction · 0.92
NewClientFunction · 0.92
WithTransportCredentialsFunction · 0.92
PrintlnMethod · 0.80
ParseMethod · 0.65
FatalfMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected