第十四讲:Prometheus 企业级实际使⽤二
本讲内容
Prometheus+grafana TCP等待链接监控 企 业实际使⽤
使⽤公式
1 | count_netstat_wait_connections |
⼀个key⾜够了 gauge
数据来源: pushgateway + 脚本
其实 node_exporter 也有对应的 tcp wait
不过 ⾥⾯提供的 各种 tcp 状态的数据种类 实在太多 太细了 (我有点懒得去 ⼀个⼀个TCP状态 加起来出监控 , 不过感 兴趣的同学 可以⾃⼰尝试) 索性 我这⾥就⽤脚本⾃⼰写⼀个了
处于各种 wait状态的 TCP链接 是作为运维 平⽇排查(⽹络负 载,服务器的负载,DB)的⼀个重要指标
Close_wait , time_wait 等等。。(TCP链接的⽅向 ) TCP协议
⼀般当 wait类型的TCP 过⼤时
⼀定说明 系统⽹络负载(流量负载) 出现问题了
⽐如这种状况
导致这种 状况的原因 很多 并⾮只会因为 ⽹络不给⼒
还跟 访问请求量 攻击流量 数据库 CPU 等等 都有可能引起
Prometheus+grafana ⽂件描述符监控 企业 实际使⽤
Linux系统 我们之前在 系列课程上篇时 提到过 本⾝就是⼀个 基于⽂件表达的操作系统
任何资源的使⽤ 都可以映射成⼀个⽂件
⽂件 和 ⽂件句柄(Linux中 叫做⽂件描述符更准确 不过习惯 叫句柄 不好改⼜了) 虽然并⽆直接联系 但是 有间接的连带 关系
如下是⼀段 ⽹上对⽂件描述符的解释 我们来看下
⽂文件描述符是linux/unix操作系统中特有的概念。其相当于 windows系统中的句句柄。习惯性的,我们也把linux⽂文件描述 符称之句句柄。 Linux系统中, 每当进程打开⼀一个⽂文件时,系统就为其分配 ⼀一个唯⼀一的整型⽂文件描述符,⽤用来标识这个⽂文件。标准C中每 个进程默认打开的有三个⽂文件,标准输⼊入,标准输出,标准 错误,分别⽤用⼀一个FILE结构的指针来表示,即stdin,stout, sterr,这三个结构分别对应着三个⽂文件描述符0,1,2。 ⽂文件描述符是⼀一个简单的整数,⽤用以标明每⼀一个被进程所打 开的⽂文件和socket。第⼀一个打开的⽂文件是0,第⼆二个是1, PID->⽂文件的句句柄 依此类推。 linux 操作系统通常对每个进程l能打开的⽂文件数量量有⼀一个限 制。 linux系统默认的最⼤大⽂文件描述符限制是1024
文件描述符使用率公式
1 | (node_filefd_allocated / node_filefd_maximum)*100 |
Prometheus+grafana ⽹络丢包率监控 企业 实际使⽤
使用pushgateway收集数据,以9092端口启动一个pushgateway
1 | ./pushgateway --web.listen-address= ":9092" & |
同时prometheus配置文件添加配置
收集脚本
本脚本是测试到局域网的丢包率和网络延时,生成中可以把ping的对象改成其他的可以是局域网也可以是公网
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # cat ping_shell.sh #!/bin/bash instance_name=`hostname -f | cut -d '.' -f1` #?#本机机器名 变量用于于之后的标签 if [ $instance_name == "localhost" ];then echo "Must FQDN hostname" fi lostpk=`timeout 5 ping -q -A -s 500??-W1000 -c 100 192.168.1.100|grep transmitted|awk '{print $6}' ` rrt=`timeout 5 ping -q -A -s 500??-W1000 -c 100 192.168.1.100 | grep transmitted | awk '{print $10}' ` value_lostpk=`echo $lostpk | sed "s/%//g" ` value_rrt=`echo $rrt | sed "s/ms//g" ` echo "lostpk_" $instance_name "_to_prometheus??: $value_lostpk" echo "lostpk_" $instance_name "_to_prometheus $value_lostpk" |curl --data-binary @- http: //192.168.1.101:9092/metrics/job/pushgateway/instance/$instance_name echo "rrt_" $instance_name "_to_prometheus??: $value_rrt" echo "rrt_" $instance_name "_to_prometheus $value_rrt" |curl --data-binary @- http: //192.168.1.101:9092/metrics/job/pushgateway/instance/$instance_name |
脚本解释
1 2 3 4 | lostpk是丢包率 例如1% rrt是延时 例如4ms value_lostpk是lostpk过滤掉%的浮点数 value_rrt是rrt过滤掉ms的浮点数 因为只接收浮点数不接收字符串 |
注意:echo "rrt_"value_rrt"之间只能保留一个空格,复制会认为是字符串而不是浮点数
另外管道符号|与前面没有空格,否则也是提示错误
1 | text format parsing error in line 1: expected float as value, got "kasjh" |
grafana图形
公式
1 | increase(rrt_hdp3_to_prometheus[1m]) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!