我如何在普罗米修斯(kubernetes 监控)中获取(当前)已建立的 TCP 连接数
Posted
技术标签:
【中文标题】我如何在普罗米修斯(kubernetes 监控)中获取(当前)已建立的 TCP 连接数【英文标题】:How I get the number of (currently) established TCP connections in prometheus (kubernetes monitoring) 【发布时间】:2021-10-18 16:47:10 【问题描述】:我在 linux 中使用这个命令来查看(当前)建立的 TCP 连接:
netstat -ant | grep ESTABLISHED | wc -l
如何将此命令转换为 PromQL(每个节点)?
我在我的 kubernetes 集群中使用 prometheus 和节点导出器
【问题讨论】:
【参考方案1】:要获取当前打开的 TCP 连接数,您可以使用 node_netstat_Tcp_CurrEstab
(Gauge) 指标。
您还可以使用node_netstat_Tcp_ActiveOpens
(计数器)指标和适当的比率,例如
rate(node_netstat_Tcp_ActiveOpens[10m])
这些指标基于TCP-MIB (RFC-4022),通过解析每个运行导出器的节点上的/proc/net/netstat
和/proc/net/tcp
文件获得。
【讨论】:
谢谢,我也可以使用 /proc/net/sockstat 和 /proc/net/sockstat 来获取已建立的连接(inuse)、处于时间等待状态的连接(tw)和总 tcp 连接(alloc ) ? @karlos 是的,只需根据提到的 MIB 找出指标名称 我有一个 pb,prometheus 中的 node_netstat_Tcp_CurrEstab 只给出 2,但是当我做 netstat -ant | grep 已建立 | wc -l,我得到 3000。有什么想法吗? 嗯,这是Gauge
指标(例如node_netstat_Tcp_CurrEstab
)的一般问题。您将仅获得 Prometheus 要求的值(通常每 30 秒)。这就是计数器指标(例如node_netstat_Tcp_ActiveOpens
)派上用场的确切情况。如果您将其绘制在图表中,您将随着时间的推移而增加,并且不要错过在完成指标刮擦后进程打开一堆连接的时刻
我用来自 grafana ***.com/questions/68819667/…的图表为这个 pb 做了这篇文章以上是关于我如何在普罗米修斯(kubernetes 监控)中获取(当前)已建立的 TCP 连接数的主要内容,如果未能解决你的问题,请参考以下文章