1.執行Server & Client的gRPC專案(沒有OpenTelemetry):
在確保機台有java8的狀態:
另外也有安裝git:
依照上面的doc執行以下:
#拉專案:
git clone -b v1.47.0 --depth 1 https://github.com/grpc/grpc-java#切換到專案路徑:
cd grpc-java/examples#編譯其中的Server與Client專案:
./gradlew installDist
看起來前面是只有JRE,所以會缺少JDK才有的tools.jar,所以再補裝JDK
#執行以下安裝JDK:
sudo apt-get install openjdk-8-jdk
再重跑剛剛的gradlew指令:
接著後面開兩個terminal分別執行Server與Client的專案
#其中一個執行Server專案:
cd ~/grpc-java/examples
./build/install/examples/bin/hello-world-server
#另一個執行client專案:
cd ~/grpc-java/examples
./build/install/examples/bin/hello-world-client
針對Server專案執行ctrl+c結束運行
後面gRPC有簡單改Code教學跳過不做:
以上確保了Server與Client兩包專案的簡單溝通架構
並有印出簡單請求log
2.執行上述兩個專案帶OpenTelemetry的agent jar執行:
接著執行如下:
首先下載上面連結給的opentelemetry-javaagent.jar
設定環境變數:
#執行以下設定環境變數(注意opentelemetry-javaagent.jar的路徑):
export JAVA_OPTS="-javaagent:/tmp/opentelemetry-javaagent.jar"
export OTEL_TRACES_EXPORTER=logging
記得這個設法是by terminal的,所以Server的跟Client的terminal都要設一遍
接著背景執行Server
#執行背景執行Server專案:
cd ~/grpc-java/examples
./build/install/examples/bin/hello-world-server &
接著另一個terminal執行Client
#執行Client專案:
cd ~/grpc-java/examples
./build/install/examples/bin/hello-world-client
詳細看到的訊息整理如下:
#Client Terminal:
ubuntu@ip-10-0-10-173:~/grpc-java/examples$ ./build/install/examples/bin/hello-world-client
[otel.javaagent 2022-07-04 00:53:29:522 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 1.15.0
Jul 04, 2022 12:53:38 AM io.grpc.examples.helloworld.HelloWorldClient greet
INFO: Will try to greet world ...
[otel.javaagent 2022-07-04 00:53:39:880 +0000] [main] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'helloworld.Greeter/SayHello' : a162d3b23f52e59ec14a31488826d17e fc49e0a3a84d8253 CLIENT [tracer: io.opentelemetry.grpc-1.6:1.15.0-alpha] AttributesMap{data={net.transport=ip_tcp, net.peer.name=localhost, net.peer.port=50051, rpc.service=helloworld.Greeter, rpc.method=SayHello, thread.id=1, rpc.system=grpc, thread.name=main, rpc.grpc.status_code=0}, capacity=128, totalAddedValues=9}
Jul 04, 2022 12:53:39 AM io.grpc.examples.helloworld.HelloWorldClient greet
INFO: Greeting: Hello world
[otel.javaagent 2022-07-04 00:53:40:166 +0000] [OkHttp http://localhost:4317/...] ERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export metrics. The request could not be executed. Full error message: Failed to connect to localhost/127.0.0.1:4317
ubuntu@ip-10-0-10-173:~/grpc-java/examples$
上面部分log貼到VScode看到:
往右邊拉:
再來是Server的
#Server Terminal:
ubuntu@ip-10-0-10-173:~/grpc-java/examples$ ./build/install/examples/bin/hello-world-server &
[1] 5410
ubuntu@ip-10-0-10-173:~/grpc-java/examples$ [otel.javaagent 2022-07-04 00:52:03:646 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 1.15.0
Jul 04, 2022 12:52:12 AM io.grpc.examples.helloworld.HelloWorldServer start
INFO: Server started, listening on 50051
[otel.javaagent 2022-07-04 00:53:04:513 +0000] [OkHttp http://localhost:4317/...] ERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export metrics. The request could not be executed. Full error message: Failed to connect to localhost/127.0.0.1:4317
[otel.javaagent 2022-07-04 00:53:39:798 +0000] [grpc-default-executor-0] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter - 'helloworld.Greeter/SayHello' : a162d3b23f52e59ec14a31488826d17e fdeaeb90d9cd6de9 SERVER [tracer: io.opentelemetry.grpc-1.6:1.15.0-alpha] AttributesMap{data={net.transport=ip_tcp, net.peer.port=55240, rpc.service=helloworld.Greeter, rpc.method=SayHello, thread.id=16, rpc.system=grpc, net.peer.ip=127.0.0.1, thread.name=grpc-default-executor-0, rpc.grpc.status_code=0}, capacity=128, totalAddedValues=9}
[otel.javaagent 2022-07-04 00:54:04:411 +0000] [OkHttp http://localhost:4317/...] ERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export metrics. The request could not be executed. Full error message: Failed to connect to localhost/127.0.0.1:4317
[otel.javaagent 2022-07-04 00:55:04:403 +0000] [OkHttp http://localhost:4317/...] ERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export metrics. The request could not be executed. Full error message: Failed to connect to localhost/127.0.0.1:4317
[otel.javaagent 2022-07-04 00:56:04:402 +0000] [OkHttp http://localhost:4317/...] ERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export metrics. The request could not be executed. Full error message: Failed to connect to localhost/127.0.0.1:4317
上面部分log轉到VScode看到:
往右邊拉看到:
後面Server的terminal會持續看到:
後續用ps -ef找到process id後,再跑kill指令才能把Server結束