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)

大家都在看

  • C++复制构造函数,类型转换构造函数,析构函数,引用,指针常量和常量指针

    复制构造函数形如className :: className(const &) / className :: className(const className &…

    Linux 2023年6月7日
    077
  • 四年测试的面试题分享

    其实想说为什么每次面试都要先来点自我介绍,说来说去简历上都有,我曾想过不能快速进入面试阶段嘛 我的专业技能: 基本上这些专业技能是在工作上用过或者自己摸索过,实战经验比较少,下面是…

    Linux 2023年6月8日
    078
  • python截取字符串(字符串切片)

    python中使用 []来截取字符串,语法: 字符串[起始&#…

    Linux 2023年6月6日
    0119
  • Netty源码解读(二)-服务端源码讲解

    简单Echo案例 代码是netty的源码,我添加了自己理解的中文注释。 了解了Netty的线程模型和组件之后,我们先看看如何写一个简单的Echo案例,后续的源码讲解都基于此案例。以…

    Linux 2023年6月7日
    0103
  • RHCSA阶段笔记

    命令终端字段含义介绍 [root@localhost ~]# 解释: root:当前登录系统用户名(root超级管理员) localhost :当前主机名 :当前用户所在目录( 为…

    Linux 2023年5月27日
    078
  • Docker搭建Redis Cluster集群及扩容和收容

    上一篇文章讲解了Redis集群原理及搭建,由于工作中使用docker较多,本文主要讲解使用docker搭建集群及对集群的扩展收容。环境:Centos7.6Docker:20.10….

    Linux 2023年6月13日
    069
  • 自动化集成:Pipeline整合Docker+K8S

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译、打包、镜像构建、部署等操作; 本篇文章主要描述流水线集成K8S用法。 一、背景…

    Linux 2023年5月27日
    0162
  • Redis和Memcache

    redis 和memcached都支持集群 Redis支持的数据类型要丰富得多,Redis不仅仅支持简单的k/v类型的数据,同时还提供String,List,Set,Hash,So…

    Linux 2023年5月28日
    084
  • PWN学习总结

    一、栈溢出原理 什么是栈溢出?栈溢出就是缓冲区溢出的一种。 由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。程序在运行过程中,为了临时存取数据的需要,一般都要分…

    Linux 2023年6月8日
    088
  • Linux at命令详解

    大家好,我是良许。 生活中,我们有太多场景需要使用到闹钟,比如早上 7 点起床,下午 4 点开会,晚上 8 点购物,等等。 在 Linux 系统里,我们同样也有类似的需求。比如我们…

    Linux 2023年6月14日
    067
  • IDEA远程部署项目到Docker

    最近在写东西部署到服务器,结构是springboot工程配合docker部署。但是每次部署都3个步骤: 部署次数一多,我就怀疑人生了。就在找有没有IDEA远程部署Docker的方案…

    Linux 2023年6月7日
    074
  • 简单记录CookieCollection的使用

    HttpHelper 点击查看代码 /// <summary> /// &#x7C7B;&#x8BF4;&#x660E;&#xFF1A;…

    Linux 2023年6月13日
    081
  • django学习__1

    Django python网络编程回顾 之前我们介绍过web应用程序和http协议,简单了解过web开发的概念。Web应用程序的本质 接收并解析HTTP请求,获取具体的请求信息 处…

    Linux 2023年6月7日
    095
  • Linux专项之Apache

    1.&#x865A;&#x62DF;&#x673A;&#x4E0A;&#x7F51; 1.安装软件(httpd) yum search ht…

    Linux 2023年5月27日
    086
  • Kafka入门实战教程(8):常用的shell工具脚本

    1 Kafka提供的命令行脚本 Kafka默认提供了多个命令行脚本,用于实现各种各样的功能和运维管理。从2.2版本开始,提供了多达30+个Shell脚本。 今天我们来看一些其中比较…

    Linux 2023年5月28日
    097
  • OpenSSL测试-SM3

    任务详情 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务 使用OpenSSL的命令计算你的8位学号的摘要值(SM3),提交截图(5’…

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