You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jaeger gRPC服务启动报错:http2Server收到非法客户端问候

问题分析与解决方案

核心原因

日志中的transport: http2Server.HandleStreams received bogus greeting错误,是因为客户端向Jaeger的明文gRPC端口发送了TLS握手请求。日志里的\x16是TLS握手消息的标识字节,说明连接方试图用HTTPS/TLS方式访问一个仅支持明文HTTP/2(h2c)的gRPC端口。

结合更新信息,错误在Jaeger启动后自动重复出现,说明有外部进程/服务在持续向16685端口发送TLS请求,而非Postman调用时触发。

解决方案

1. 确认Jaeger gRPC端口的访问方式

Jaeger的jaeger.api_v3.QueryService默认绑定16685端口,该端口为明文gRPC(h2c),不支持TLS加密。如果用Postman调用:

  • 在Postman的gRPC请求设置中,关闭TLS选项(勾选"Plaintext"模式)。

2. 排查端口的异常访问来源

用工具检查16685端口的连接发起方,定位误访问的服务:

# Linux/macOS查看端口连接
ss -tulpn | grep 16685
# Windows查看端口占用
netstat -ano | findstr :16685

常见原因包括:监控工具配置错误、反向代理路由指向错误、其他服务误占用端口等,找到后调整对应服务的配置即可。

3. (可选)为Jaeger gRPC启用TLS加密

如果需要通过TLS访问gRPC服务,可通过环境变量配置Jaeger的证书:
修改Docker Compose文件:

services:
  jaeger:
    container_name: jaeger
    ports:
      - 16685:16685
      - 16686:16686
      - 4317:4317
      - 4318:4318
      - 5778:5778
      - 9411:9411
    image: jaegertracing/all-in-one:latest
    environment:
      # 配置gRPC服务的TLS证书和密钥
      - QUERY_GRPC_TLS_CERT=/certs/server.crt
      - QUERY_GRPC_TLS_KEY=/certs/server.key
    volumes:
      # 将本地证书目录挂载到容器内
      - ./path/to/your/certs:/certs

配置完成后,Postman调用时需开启TLS,并导入对应的CA证书(如果是自签名证书)。

4. 验证gRPC服务可用性

用grpcurl工具测试明文gRPC连接是否正常:

# 下载Jaeger的proto文件后执行
grpcurl -plaintext localhost:16685 list jaeger.api_v3.QueryService

如果返回服务方法列表,说明gRPC服务已正常启动。


内容的提问来源于stack exchange,提问作者Olivier Gérardin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:47:02