grafana+prometheus如何查看tcp连接数量

最后解决方案

经过和负责监控的大佬了解,获得了一个可行的方案:在每个pod中新增一个sidecar容器,在容器中部署node_exporter,或者在容器中放个自动查看端口连接数并推送的脚本。
因为node_exporter不支持push监控数据,所以的话如果使用node_exporter,还需要自己做两点:
1.增加计划任务,自动从node_exporter获取需要的指标后,推送到pushgateway或者prometheus
2.如果每个pod都上报全部指标,会造成prometheus里面数据过多,可以考虑过滤上报的数据,只保留需要的
两个监控都加上后经过验证,经过验证,正确的结论是:
在k8s集群环境下,使用node_sockstat_TCP_inuse 加 node_sockstat_TCP6_inuse 加 node_sockstat_TCP_tw 加 node_sockstat_TCP_orphan这样的指标才能获取到所有容器的连接数。
node_tcp_connection_states指标只能看到宿主机的连接数,看不到容器中的。

以下的结论是错误的,不过过程和相关的数据可能对大家有帮助,就保留了。
以下的结论是错误的,不过过程和相关的数据可能对大家有帮助,就保留了。
以下的结论是错误的,不过过程和相关的数据可能对大家有帮助,就保留了。

背景

通过现有的监控,发现tcp连接数量异常,超过了65535,初步怀疑可能监控指标不对,于是有了以下分析。

grafana+prometheus如何查看tcp连接数量

查看监控,发现数值比较高的指标为node_sockstat_TCP_tw,参考一些网上的文档,说这是tcp连接数,但后来发现其实和我们平常所说的连接数意义是不一样的。
登录到服务器上,查看more sockstat,数据和监控是一致的

grafana+prometheus如何查看tcp连接数量

排查过程

这个时候有一些同学应该已经发现不对了,这里显示的数量不是我们平常说的tcp的网络端口监控,而是socket的监控。后来查看了相关的文档,端口连接数和socket连接数的上限是不一样的。
netstat
我们一般看的端口连接数,上限 65535。使用的命令

netstat -auntlp|grep -i listen|wc -l
prometheus的指标为 node_tcp_connection_states{state="established"} 加 node_tcp_connection_states{state="listen"} 加 node_tcp_connection_states{state="time_wait"}

sockstat
上面监控看到的socket连接数,上限为/proc/sys/fs/file-max和ulimit的值,我们的服务器上是100W。使用命令

more /proc/net/sockstat #查看socket的详细情况
more /proc/sys/fs/file-max #查看系统级最大允许打开的句柄数
ulimit #查看用户级最大允许打开的句柄数
prometheus的指标为 node_sockstat_TCP_inuse 加 node_sockstat_TCP6_inuse 加  node_sockstat_TCP_tw 加 node_sockstat_TCP_orphan

详细的socket和句柄相关的解释,可以参考
张彦飞:刨根问底儿式处理 Too many open files 错误!
设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别
综上所述,这也是为什么显示连接数都已经7W+了,服务还没有异常的原因,因为这里监控的是socket连接数,上限是100W。

如何查看UDP连接数
可能是目前我的node_exporter版本较低,目前能看到UDP相关的指标只有node_sockstat_UDP_inuse,和文件系统还有netstat查到的数据是一致的,但是目前看不到udp6的数据,查看新版的node_exporter已经支持了node_sockstat_UDP6_inuse

grafana+prometheus如何查看tcp连接数量

参考文档:

prometheus node_exporter 监控项
如何排查ss& netstat统计结果不一样的原因?-问答-阿里云开发者社区-阿里云
端口号超过了65535 – 云+社区 – 腾讯云

Original: https://www.cnblogs.com/ly6161/p/grafanaprometheus-ru-he-cha-kantcp-lian-jie-shu-li.html
Author: 打个酱油6161
Title: grafana+prometheus如何查看tcp连接数量

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/609343/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Windows10 下使用 telnet 命令

    正常情况下 windows 是使用不了 telnet 命令的: 打开控制面板-》程序和功能-》启用或关闭 Windows 功能 勾选 “Telnet客户端”…

    Linux 2023年6月13日
    094
  • redis如何设置密码

    密码设置这里简单介绍一下redis如何设置密码redis密码设置有两种方式,一种需要重启redis服务,一种不需要重启redis服务。 首先,介绍一下需要重启redis服务的设置方…

    Linux 2023年5月28日
    0101
  • Golang 实现 Redis(6): 实现 pipeline 模式的 redis 客户端

    本文是使用 golang 实现 redis 系列的第六篇, 将介绍如何实现一个 Pipeline 模式的 Redis 客户端。 通常 TCP 客户端的通信模式都是阻塞式的: 客户端…

    Linux 2023年5月28日
    087
  • Linux CURL的安装和使用

    –获得安装包,从网上直接下载或者其他途径,这里直接wgetwget http://curl.haxx.se/download/curl-7.17.1.tar.gz&#8…

    Linux 2023年6月13日
    088
  • VS2022编译太慢

    解决方法是把编译出的exe程序或目录添加到杀毒软件白名单 一个C++的helloworld,在vs里硬是10秒才能编译启动。不知道大家有没有遇到。禁用符号加载还是很慢。甚至换成co…

    Linux 2023年6月6日
    0112
  • vert.x-快速入门

    vert.x是Eclipse软件基金会顶级java开源项目之一,它基于netty的、运行在jvm之上的、支持多种编程语言的高性能异步、非阻塞、响应式全栈java web框架。它在t…

    Linux 2023年6月8日
    0115
  • OpenSSL测试-随机数

    任务详情 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务 使用OpenSSL定义一个私有函数 static int getRandom(char…

    Linux 2023年6月8日
    0105
  • js笔记之switch-case

    switch 语句来选择要执行的多个代码块之一。switch 不能处理大于小于的 工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比…

    Linux 2023年6月13日
    092
  • 音视频技术入门课-02 音频从采集到输出涉及哪些关键参数?

    我们平常听到的自然界的声音,比如说鸟鸣、水流,其实是一种模拟信号,声音是振动产生的一种声波,通过气态、液态、固态的物理介质传播并能被人或动物感知的波动现象。声音的频率一般会以赫兹(…

    Linux 2023年6月7日
    0100
  • DNS Rebinding漏洞原理

    DNS Rebinding 广泛用于 绕过同源策略、SSRF过滤等。 背景 为什么需要SSRF过滤器?• 由于一些业务的需要,他们就是需要让用户输入URL,然后进行跳转,如果过滤得…

    Linux 2023年6月6日
    0124
  • Git 不识别文件名字母大小写变化

    问题 今天为一个项目撰写持续构建计划,撰写 Jenkinsfile 之后进行构建时报错: [2022-05-23 16:54:21] unable to prepare conte…

    Linux 2023年6月7日
    0103
  • 让SpringBoot也用上Fluent Validator

    前言 在使用SpringBoot的时候经常需要对客户端传入的参数进行合法性的校验,校验的方法基本上都是使用SpringBoot提供的注解,有时候遇上注解不能满足需求的时候还需要在业…

    Linux 2023年6月14日
    094
  • alpinelinux镜像安装中文字体

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 编辑dockerfile,先切换国内镜像源,默认alpinelinux是国外源,下载包会很慢 vim Dockerfile FR…

    Linux 2023年6月7日
    0113
  • 面试连环炮系列(二十六):什么情况下JVM频繁发生full GC

    什么情况下JVM频繁发生full GC; 在实际项目什么代码导致full GC;线上怎么排查是哪个程序导致的ful GC 1. 什么情况下JVM频繁发生full GC?full g…

    Linux 2023年6月6日
    0126
  • LVS+keepalived+nginx+tomcat

    一、 环境准备 本次配置基于DR负载均衡模式,设置一个VIP(Virtual IP)为19.50.67.173,用户只需要访问这个IP地址即可获得后端服务 其中,负载均衡主机为19…

    Linux 2023年6月6日
    0139
  • MySQL SUBSTRING_INDEX截取字符串

    一、SUBSTRING_INDEX 二、示例 Original: https://www.cnblogs.com/woods1815/p/16368248.htmlAuthor: …

    Linux 2023年6月13日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球