我如何在普罗米修斯(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 连接数的主要内容,如果未能解决你的问题,请参考以下文章

kubernetes1.23.1部署prometheus-operator

prometheus配置详解

kubelet 指标未出现在普罗米修斯中

window普罗米修斯监控如何重启

搭建Prometheus+Grafana的云平台监控系统

CENTOS7安装PROMETHUS(普罗米修斯)监控系统完整版