【问题标题】:get status code from a gRPC endpoint not using a gRPC client从不使用 gRPC 客户端的 gRPC 端点获取状态代码
【发布时间】:2021-06-22 22:40:15
【问题描述】:

如何在没有 gRPC 客户端的情况下从 gRPC 端点获取 status code

我需要测试AWS application load balancer (target group) 后面的一些gRPC 端点,并且运行状况检查配置为仅接受状态12

UNIMPLEMENTED   12  The operation is not implemented or is not supported/enabled in this service.

例如我试过grpcurl

grpcurl -plaintext 10.1.2.8:8443 AWS.ALB/healthcheck:

但在很多情况下我得到:

Error invoking method "AWS.ALB/healthcheck": failed to query for service descriptor "AWS.ALB": server does not support the reflection API

任何替代方案或想法?我只对状态码12 或描述UNIMPLEMENTED 感兴趣

【问题讨论】:

  • 我遇到了同样的问题。您最终找到解决方案了吗?
  • 不是最好的,但我创建了这个crates.io/crates/grpc-status
  • 12 表示目标群体健康检查响应码。我们在服务器中将其设置为 0

标签: amazon-web-services grpc


【解决方案1】:

状态码12可以通过

    alb.ingress.kubernetes.io/success-codes: '0'      // change success code to 0
spec:
  rules:
    - host: server.xxx.com
      http:
        paths:
          - path: /*                                 // set to * to match all grpc service paths
            backend:
              serviceName: server
              servicePort: 9420

同时启用server reflection

@@ -40,6 +40,7 @@ import (
        "google.golang.org/grpc"
        pb "google.golang.org/grpc/examples/helloworld/helloworld"
+       "google.golang.org/grpc/reflection"
 )

 const (
@@ -61,6 +62,8 @@ func main() {
        }
        s := grpc.NewServer()
        pb.RegisterGreeterService(s, &pb.GreeterService{SayHello: sayHello})
+       // Register reflection service on gRPC server.
+       reflection.Register(s)
        if err := s.Serve(lis); err != nil {
                log.Fatalf("failed to serve: %v", err)
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 2022-11-30
    • 1970-01-01
    • 2017-09-20
    相关资源
    最近更新 更多