用户数据报协议 (UDP
)
此沙箱提供了一个非常简单的 Envoy 代理 UDP
的示例。
它还演示了 Envoy 管理端点提供的 UDP
流量统计信息。
步骤 1:构建沙箱
将目录更改为 Envoy 存储库中的 examples/udp
。
启动 Docker 组成
$ pwd
envoy/examples/udp
$ docker compose pull
$ docker compose up --build -d
$ docker compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------------
udp_envoy-udp_1 /docker-entrypoint.sh /usr ... Up 10000/tcp, 0.0.0.0:10000->10000/udp, 0.0.0.0:10001->10001/tcp
udp_service-udp_1 python -u /udplistener.py Up 5005/tcp, 5005/udp
Envoy 应该将端口 10000
上的 UDP
代理到端口 5005
上监听的上游服务器。
Envoy 还提供了一个在端口 10001
上监听的管理端点。
步骤 2:发送一些 UDP
消息
您可以使用 netcat
将数据包发送到上游服务器,该服务器由 Envoy 代理
echo -n HELO | nc -4u -w1 127.0.0.1 10000
echo -n OLEH | nc -4u -w1 127.0.0.1 10000
步骤 3:检查上游 UDP
监听器服务器的日志
检查上游服务器的日志,您应该看到发送的数据包
$ docker compose logs service-udp
Attaching to udp_service-udp_1
service-udp_1 | Listening on UDP port 5005
service-udp_1 | HELO
service-udp_1 | OLEH
步骤 4:查看 Envoy 管理 UDP
统计信息
您可以查看 Envoy 管理端点提供的 UDP
相关统计信息。
例如,要查看非零统计信息
$ curl -s http://127.0.0.1:10001/stats | grep udp | grep -v "\: 0"
cluster.service_udp.default.total_match_count: 1
cluster.service_udp.max_host_weight: 1
cluster.service_udp.membership_change: 1
cluster.service_udp.membership_healthy: 1
cluster.service_udp.membership_total: 1
cluster.service_udp.udp.sess_tx_datagrams: 2
cluster.service_udp.update_attempt: 1
cluster.service_udp.update_success: 1
cluster.service_udp.upstream_cx_tx_bytes_total: 8
udp.service.downstream_sess_active: 2
udp.service.downstream_sess_rx_bytes: 8
udp.service.downstream_sess_rx_datagrams: 2
udp.service.downstream_sess_total: 2
cluster.service_udp.upstream_cx_connect_ms: No recorded values
cluster.service_udp.upstream_cx_length_ms: No recorded values