🏥

curl で gRPC の疎通確認をしたい

2024/12/19に公開

実行コマンド

printf '\x00\x00\x00\x00\x00' |
  curl \
    -v -s --http2 \
    -H "Content-Type: application/grpc" \
    -H "TE: trailers" \
    --data-binary @- --output - \
    "${GRPC_ENDPOINT:?}/grpc.health.v1.Health/Check" |
  hexdump -C 

空のメッセージを /grpc.health.v1.Health/Check 宛に送ってあげれば良い。

実行例

  • リクエスト: 00 00 00 00 00
    • 最初の 1 バイト 00 は圧縮フラグ(0 = 非圧縮)
    • 次の 4 バイト 00 00 00 00 はメッセージ長(0バイト)
$ printf '\x00\x00\x00\x00\x00' | curl -v -s --http2 -H "Content-Type: application/grpc" -H "TE: trailers" --data-binary @- --output - "${GRPC_ENDPOINT:?}/grpc.health.v1.Health/Check" | hexdump -C 
... 略 ...
00000000  00 00 00 00 02 08 01                              |.......|
00000007
  • レスポンス 00 00 00 00 02 08 01
    • 最初の5バイト 00 00 00 00 02
      • 最初の 1 バイト 00 は圧縮フラグ(0 = 非圧縮)
      • 次の 4 バイト 00 00 00 02 はメッセージ長(2バイト)
    • 残りの2バイト 08 01

Discussion