serverC.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package main
  2. import (
  3. "context"
  4. "log"
  5. "net/http"
  6. "time"
  7. "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
  8. "go.opentelemetry.io/otel"
  9. otel2 "standard/open_telemetry/otel"
  10. )
  11. func main() {
  12. ctx := context.Background()
  13. serviceName := "ServiceC" // 服务名称
  14. jaegerEndpoint := "http://7162377c.r11.cpolar.top/api/v2/spans" // Jaeger 的 Collector Endpoint
  15. // 初始化 OpenTelemetry SDK
  16. shutdown, err := otel2.SetupOTelSDK(ctx, serviceName, jaegerEndpoint)
  17. if err != nil {
  18. log.Fatalf("Failed to setup OpenTelemetry SDK: %v", err)
  19. }
  20. defer shutdown(ctx)
  21. // 注册 /serviceC 路由
  22. http.HandleFunc("/serviceC", func(w http.ResponseWriter, r *http.Request) {
  23. _, span := otel.Tracer(serviceName).Start(r.Context(), "ServiceC.serviceC") // 创建一个 Span
  24. log.Printf("Request headers: %+v", r.Header)
  25. defer span.End()
  26. // 模拟一些工作
  27. time.Sleep(time.Second)
  28. })
  29. log.Println("Starting ServiceC on :8082")
  30. log.Fatal(http.ListenAndServe(":8082", otelhttp.NewHandler(http.DefaultServeMux, serviceName)))
  31. }