使用者資料包協定 (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 應將 UDP
從連接埠 10000
代理到監聽連接埠 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