容器网络流量监控是保障微服务通信性能与安全的关键环节。在 Java 微服务架构中,容器间 RPC 调用、数据库连接、外部 API 访问等均依赖网络,流量异常可能直接导致服务超时、雪崩或安全事件。以下从指标、原理、工具和 Java 特殊考量四个层面展开。
一、核心监控指标
#mermaid-svg-PQH87QkCiKXlLUtR{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-PQH87QkCiKXlLUtR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-PQH87QkCiKXlLUtR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-PQH87QkCiKXlLUtR .error-icon{fill:#552222;}#mermaid-svg-PQH87QkCiKXlLUtR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-PQH87QkCiKXlLUtR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-PQH87QkCiKXlLUtR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-PQH87QkCiKXlLUtR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-PQH87QkCiKXlLUtR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-PQH87QkCiKXlLUtR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-PQH87QkCiKXlLUtR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-PQH87QkCiKXlLUtR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-PQH87QkCiKXlLUtR .marker.cross{stroke:#333333;}#mermaid-svg-PQH87QkCiKXlLUtR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-PQH87QkCiKXlLUtR p{margin:0;}#mermaid-svg-PQH87QkCiKXlLUtR .edge{stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .section--1 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section--1 path,#mermaid-svg-PQH87QkCiKXlLUtR .section--1 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section--1 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section--1 text{fill:#ffffff;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth--1{stroke-width:17;}#mermaid-svg-PQH87QkCiKXlLUtR .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-0 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-0 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-0 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-0 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-0 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-0{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-0{stroke-width:14;}#mermaid-svg-PQH87QkCiKXlLUtR .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-1 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-1 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-1 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-1 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-1 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-1{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-1{stroke-width:11;}#mermaid-svg-PQH87QkCiKXlLUtR .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-2 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-2 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-2 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-2 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-2 text{fill:#ffffff;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-2{stroke-width:8;}#mermaid-svg-PQH87QkCiKXlLUtR .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-3 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-3 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-3 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-3 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-3 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-3{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-3{stroke-width:5;}#mermaid-svg-PQH87QkCiKXlLUtR .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-4 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-4 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-4 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-4 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-4 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-4{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-4{stroke-width:2;}#mermaid-svg-PQH87QkCiKXlLUtR .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-5 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-5 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-5 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-5 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-5 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-5{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-5{stroke-width:-1;}#mermaid-svg-PQH87QkCiKXlLUtR .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-6 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-6 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-6 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-6 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-6 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-6{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-6{stroke-width:-4;}#mermaid-svg-PQH87QkCiKXlLUtR .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-7 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-7 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-7 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-7 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-7 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-7{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-7{stroke-width:-7;}#mermaid-svg-PQH87QkCiKXlLUtR .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-8 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-8 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-8 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-8 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-8 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-8{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-8{stroke-width:-10;}#mermaid-svg-PQH87QkCiKXlLUtR .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-9 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-9 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-9 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-9 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-9 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-9{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-9{stroke-width:-13;}#mermaid-svg-PQH87QkCiKXlLUtR .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-10 rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-10 path,#mermaid-svg-PQH87QkCiKXlLUtR .section-10 circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-10 polygon,#mermaid-svg-PQH87QkCiKXlLUtR .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-10 text{fill:black;}#mermaid-svg-PQH87QkCiKXlLUtR .node-icon-10{font-size:40px;color:black;}#mermaid-svg-PQH87QkCiKXlLUtR .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .edge-depth-10{stroke-width:-16;}#mermaid-svg-PQH87QkCiKXlLUtR .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled,#mermaid-svg-PQH87QkCiKXlLUtR .disabled circle,#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:lightgray;}#mermaid-svg-PQH87QkCiKXlLUtR .disabled text{fill:#efefef;}#mermaid-svg-PQH87QkCiKXlLUtR .section-root rect,#mermaid-svg-PQH87QkCiKXlLUtR .section-root path,#mermaid-svg-PQH87QkCiKXlLUtR .section-root circle,#mermaid-svg-PQH87QkCiKXlLUtR .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-PQH87QkCiKXlLUtR .section-root text{fill:#ffffff;}#mermaid-svg-PQH87QkCiKXlLUtR .section-root span{color:#ffffff;}#mermaid-svg-PQH87QkCiKXlLUtR .section-2 span{color:#ffffff;}#mermaid-svg-PQH87QkCiKXlLUtR .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-PQH87QkCiKXlLUtR .edge{fill:none;}#mermaid-svg-PQH87QkCiKXlLUtR .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-PQH87QkCiKXlLUtR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 容器网络流量监控
吞吐量
rx_bytes
tx_bytes
rx_packets
tx_packets
错误与丢包
rx_dropped
tx_dropped
rx_errors/tx_errors
连接状态
ESTABLISHED, TIME_WAIT 等
新建连接速率
ListenOverflows
延迟
容器间 RTT
网络命名空间延迟
流量来源/目标
NetFlow/sFlow
服务间通信拓扑
- 吞吐量:反映容器网络负载,是容量规划的依据。
- 丢包/错误:网络饱和或故障的早期信号。
- 连接数:对 Java 应用尤其重要,连接池泄漏或 TIME_WAIT 堆积会耗尽端口。
- 延迟:直接影响微服务调用耗时。
- 流量拓扑:用于安全审计和依赖分析。
二、监控原理与数据来源
容器网络流量监控可从多个层面获取数据:
| 监控层面 | 数据来源 | 提供的信息 |
|---|---|---|
| 宿主机 cgroup | cAdvisor, Docker stats | 每个容器的网络接口收发字节/包总量 |
| 容器网络命名空间 | /proc/net/dev, /proc/net/tcp 等 | 容器内部网络统计,含连接状态 |
| Docker 守护进程 | Docker API / stats 端点 | 实时网络计数,与 cgroup 一致 |
| CNI 插件 | Calico, Flannel, Weave 等 | 额外的策略统计、流日志 |
| 服务网格 | Istio/Envoy, Linkerd | 请求级指标:延迟、成功率、流量来源/目标 |
| Linux 内核 | tc, iptables, eBPF | 深度包分析、延迟分布、流日志 |
| 外部流量采集 | sFlow/NetFlow/IPFIX | 交换机/路由器级流量监控 |
最常用的路径:cAdvisor → Prometheus → Grafana 是容器级网络监控的标准组合,而 Java 应用内部可通过 Micrometer 暴露 HTTP 客户端/服务端指标,提供应用视角。
三、容器网络流量监控架构
#mermaid-svg-Wg4lawHgsBXNVFZb{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Wg4lawHgsBXNVFZb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Wg4lawHgsBXNVFZb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Wg4lawHgsBXNVFZb .error-icon{fill:#552222;}#mermaid-svg-Wg4lawHgsBXNVFZb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Wg4lawHgsBXNVFZb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Wg4lawHgsBXNVFZb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Wg4lawHgsBXNVFZb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Wg4lawHgsBXNVFZb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Wg4lawHgsBXNVFZb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Wg4lawHgsBXNVFZb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Wg4lawHgsBXNVFZb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Wg4lawHgsBXNVFZb .marker.cross{stroke:#333333;}#mermaid-svg-Wg4lawHgsBXNVFZb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Wg4lawHgsBXNVFZb p{margin:0;}#mermaid-svg-Wg4lawHgsBXNVFZb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Wg4lawHgsBXNVFZb .cluster-label text{fill:#333;}#mermaid-svg-Wg4lawHgsBXNVFZb .cluster-label span{color:#333;}#mermaid-svg-Wg4lawHgsBXNVFZb .cluster-label span p{background-color:transparent;}#mermaid-svg-Wg4lawHgsBXNVFZb .label text,#mermaid-svg-Wg4lawHgsBXNVFZb span{fill:#333;color:#333;}#mermaid-svg-Wg4lawHgsBXNVFZb .node rect,#mermaid-svg-Wg4lawHgsBXNVFZb .node circle,#mermaid-svg-Wg4lawHgsBXNVFZb .node ellipse,#mermaid-svg-Wg4lawHgsBXNVFZb .node polygon,#mermaid-svg-Wg4lawHgsBXNVFZb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Wg4lawHgsBXNVFZb .rough-node .label text,#mermaid-svg-Wg4lawHgsBXNVFZb .node .label text,#mermaid-svg-Wg4lawHgsBXNVFZb .image-shape .label,#mermaid-svg-Wg4lawHgsBXNVFZb .icon-shape .label{text-anchor:middle;}#mermaid-svg-Wg4lawHgsBXNVFZb .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Wg4lawHgsBXNVFZb .rough-node .label,#mermaid-svg-Wg4lawHgsBXNVFZb .node .label,#mermaid-svg-Wg4lawHgsBXNVFZb .image-shape .label,#mermaid-svg-Wg4lawHgsBXNVFZb .icon-shape .label{text-align:center;}#mermaid-svg-Wg4lawHgsBXNVFZb .node.clickable{cursor:pointer;}#mermaid-svg-Wg4lawHgsBXNVFZb .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Wg4lawHgsBXNVFZb .arrowheadPath{fill:#333333;}#mermaid-svg-Wg4lawHgsBXNVFZb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Wg4lawHgsBXNVFZb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Wg4lawHgsBXNVFZb .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Wg4lawHgsBXNVFZb .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Wg4lawHgsBXNVFZb .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Wg4lawHgsBXNVFZb .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Wg4lawHgsBXNVFZb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Wg4lawHgsBXNVFZb .cluster text{fill:#333;}#mermaid-svg-Wg4lawHgsBXNVFZb .cluster span{color:#333;}#mermaid-svg-Wg4lawHgsBXNVFZb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Wg4lawHgsBXNVFZb .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Wg4lawHgsBXNVFZb rect.text{fill:none;stroke-width:0;}#mermaid-svg-Wg4lawHgsBXNVFZb .icon-shape,#mermaid-svg-Wg4lawHgsBXNVFZb .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Wg4lawHgsBXNVFZb .icon-shape p,#mermaid-svg-Wg4lawHgsBXNVFZb .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Wg4lawHgsBXNVFZb .icon-shape .label rect,#mermaid-svg-Wg4lawHgsBXNVFZb .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Wg4lawHgsBXNVFZb .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Wg4lawHgsBXNVFZb .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Wg4lawHgsBXNVFZb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 应用层
监控平台
宿主机
读取 cgroup
读取/proc/net
抓取
抓取
Micrometer 暴露
HTTP 请求
容器 A
veth 接口
虚拟网桥 docker0
容器 B
veth 接口
宿主机网络栈
cAdvisor
cgroup 统计
node_exporter
宿主机 /proc
Prometheus
Grafana
Alertmanager
Java 服务 A
- cAdvisor :从 cgroup 的
network子系统读取容器的网络收发字节/包,以container_network_receive_bytes_total等指标暴露。 - node_exporter :提供宿主机级别的网络统计,如
node_network_receive_bytes_total,用于区分容器流量与系统流量。 - 应用层监控:Spring Boot 应用引入 Micrometer 并绑定 Prometheus,可获取 HTTP 请求延迟、吞吐、错误率等,属于网络流量的业务视角。
四、关键工具对比
| 工具 | 数据粒度 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| docker stats | 容器级实时 | 零配置,快速查看 | 无历史数据,无聚合 | 开发/临时排障 |
| cAdvisor | 容器级 | 自动发现容器,Prometheus 集成 | 仅提供 cgroup 级统计 | 生产集群必备 |
| node_exporter | 宿主机级 | 通用系统监控 | 不能区分各容器流量 | 结合 cAdvisor 使用 |
| Prometheus + Grafana | 多维度 | 灵活查询,历史趋势 | 需维护 | 标准化方案 |
| 服务网格 (Istio) | 请求级 | 延迟分布、成功率、拓扑 | 性能开销,复杂度高 | 深度服务治理 |
| eBPF 方案 (Pixie/Cilium) | 系统调用级 | 零侵入,超细粒度 | 对内核版本有要求 | 高级性能分析 |
五、Java 容器网络监控的特殊考量
-
TCP 连接状态
Java 应用使用连接池(如 HikariCP、HTTP 连接池),需关注容器内 TCP 状态。当出现
TIME_WAIT堆积时,可能耗尽可用端口,导致Cannot assign requested address。可通过 cAdvisor 的container_network_tcp6_time_wait等指标监控,或进入容器查看/proc/net/sockstat。 -
HTTP 客户端指标
使用
RestTemplate或WebClient时,应通过 Micrometer 暴露调用延迟、错误率、吞吐量,区分目标服务。这对于发现特定下游服务网络延迟非常关键。 -
DNS 解析监控
容器内 Java 应用依赖 Docker 内置 DNS 或 CoreDNS。DNS 查询失败或延迟会影响所有远程调用。可监控 DNS 查询的耗时和失败率(可通过 Micrometer 的
HttpClient指标间接反映,或通过 CoreDNS 插件)。 -
容器间通信 vs 外部流量
区分内部微服务调用流量与访问外部 API/数据库的流量,帮助定位问题是在集群内还是外部依赖。可通过不同的目标 IP 段或端口进行过滤。
-
Java 网络栈调优与监控
在容器中,Java 网络参数(如
-Djava.net.preferIPv4Stack=true、-Dnetworkaddress.cache.ttl)会影响网络行为。监控容器内 JVM 进程的网络 I/O 与容器总网络 I/O 对比,可发现非 JVM 进程(如 sidecar)的网络消耗。
六、监控仪表板与告警建议
- Grafana 仪表板:使用"Docker Monitoring Dashboard"或"Node Exporter Full"模板,展示每个容器的网络收发速率、错误数、TCP 连接状态等。
- Prometheus 告警规则 :
- 容器网络丢包率 > 0:
rate(container_network_receive_drop_total[5m]) > 0 - 容器 TCP TIME_WAIT 数量过高:
container_network_tcp6_time_wait > 阈值 - HTTP 请求错误率 > 5%:
rate(http_client_requests_seconds_count{status=~"5.."}[5m]) / rate(http_client_requests_seconds_count[5m]) > 0.05
- 容器网络丢包率 > 0:
七、思维导图总结
#mermaid-svg-1At2bdw8PY09vYDS{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-1At2bdw8PY09vYDS .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-1At2bdw8PY09vYDS .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-1At2bdw8PY09vYDS .error-icon{fill:#552222;}#mermaid-svg-1At2bdw8PY09vYDS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1At2bdw8PY09vYDS .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-1At2bdw8PY09vYDS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1At2bdw8PY09vYDS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1At2bdw8PY09vYDS .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-1At2bdw8PY09vYDS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1At2bdw8PY09vYDS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1At2bdw8PY09vYDS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1At2bdw8PY09vYDS .marker.cross{stroke:#333333;}#mermaid-svg-1At2bdw8PY09vYDS svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1At2bdw8PY09vYDS p{margin:0;}#mermaid-svg-1At2bdw8PY09vYDS .edge{stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .section--1 rect,#mermaid-svg-1At2bdw8PY09vYDS .section--1 path,#mermaid-svg-1At2bdw8PY09vYDS .section--1 circle,#mermaid-svg-1At2bdw8PY09vYDS .section--1 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section--1 text{fill:#ffffff;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth--1{stroke-width:17;}#mermaid-svg-1At2bdw8PY09vYDS .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-0 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-0 path,#mermaid-svg-1At2bdw8PY09vYDS .section-0 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-0 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-1At2bdw8PY09vYDS .section-0 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-0{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-0{stroke-width:14;}#mermaid-svg-1At2bdw8PY09vYDS .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-1 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-1 path,#mermaid-svg-1At2bdw8PY09vYDS .section-1 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-1 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-1 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-1{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-1{stroke-width:11;}#mermaid-svg-1At2bdw8PY09vYDS .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-2 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-2 path,#mermaid-svg-1At2bdw8PY09vYDS .section-2 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-2 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-2 text{fill:#ffffff;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-2{stroke-width:8;}#mermaid-svg-1At2bdw8PY09vYDS .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-3 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-3 path,#mermaid-svg-1At2bdw8PY09vYDS .section-3 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-3 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-3 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-3{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-3{stroke-width:5;}#mermaid-svg-1At2bdw8PY09vYDS .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-4 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-4 path,#mermaid-svg-1At2bdw8PY09vYDS .section-4 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-4 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-4 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-4{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-4{stroke-width:2;}#mermaid-svg-1At2bdw8PY09vYDS .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-5 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-5 path,#mermaid-svg-1At2bdw8PY09vYDS .section-5 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-5 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-5 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-5{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-5{stroke-width:-1;}#mermaid-svg-1At2bdw8PY09vYDS .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-6 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-6 path,#mermaid-svg-1At2bdw8PY09vYDS .section-6 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-6 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-6 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-6{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-6{stroke-width:-4;}#mermaid-svg-1At2bdw8PY09vYDS .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-7 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-7 path,#mermaid-svg-1At2bdw8PY09vYDS .section-7 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-7 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-7 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-7{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-7{stroke-width:-7;}#mermaid-svg-1At2bdw8PY09vYDS .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-8 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-8 path,#mermaid-svg-1At2bdw8PY09vYDS .section-8 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-8 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-8 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-8{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-8{stroke-width:-10;}#mermaid-svg-1At2bdw8PY09vYDS .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-9 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-9 path,#mermaid-svg-1At2bdw8PY09vYDS .section-9 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-9 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-9 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-9{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-9{stroke-width:-13;}#mermaid-svg-1At2bdw8PY09vYDS .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-10 rect,#mermaid-svg-1At2bdw8PY09vYDS .section-10 path,#mermaid-svg-1At2bdw8PY09vYDS .section-10 circle,#mermaid-svg-1At2bdw8PY09vYDS .section-10 polygon,#mermaid-svg-1At2bdw8PY09vYDS .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-10 text{fill:black;}#mermaid-svg-1At2bdw8PY09vYDS .node-icon-10{font-size:40px;color:black;}#mermaid-svg-1At2bdw8PY09vYDS .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .edge-depth-10{stroke-width:-16;}#mermaid-svg-1At2bdw8PY09vYDS .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1At2bdw8PY09vYDS .disabled,#mermaid-svg-1At2bdw8PY09vYDS .disabled circle,#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:lightgray;}#mermaid-svg-1At2bdw8PY09vYDS .disabled text{fill:#efefef;}#mermaid-svg-1At2bdw8PY09vYDS .section-root rect,#mermaid-svg-1At2bdw8PY09vYDS .section-root path,#mermaid-svg-1At2bdw8PY09vYDS .section-root circle,#mermaid-svg-1At2bdw8PY09vYDS .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-1At2bdw8PY09vYDS .section-root text{fill:#ffffff;}#mermaid-svg-1At2bdw8PY09vYDS .section-root span{color:#ffffff;}#mermaid-svg-1At2bdw8PY09vYDS .section-2 span{color:#ffffff;}#mermaid-svg-1At2bdw8PY09vYDS .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-1At2bdw8PY09vYDS .edge{fill:none;}#mermaid-svg-1At2bdw8PY09vYDS .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-1At2bdw8PY09vYDS :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 容器网络流量监控
核心指标
吞吐: rx_bytes/tx_bytes
丢包: rx_dropped/tx_dropped
连接: tcp_states
延迟: RTT/应用延迟
数据来源
cAdvisor
node_exporter
Docker stats API
CNI 插件
eBPF/服务网格
Java 关注点
HTTP 客户端指标
TCP 连接池泄漏
DNS 解析延迟
容器内 vs JVM 流量
工具链
cAdvisor + Prometheus + Grafana
Micrometer 应用指标
Istio/Linkerd 网格
总结 :容器网络流量监控需从宿主机 cgroup、内核 /proc、应用层 Metrics 等多维度构建全视角。cAdvisor 提供容器级字节/包计数,Prometheus 与 Grafana 完成汇聚与可视化,而 Java 微服务通过 Micrometer 暴露调用延迟与错误率,形成"基础设施 + 应用"的双层监控。在面试中,能清晰描绘出这条数据流,并阐述针对 Java 网络连接池、DNS 等特殊点的监控策略,是架构与运维综合实力的体现。