第十四讲:Prometheus 企业级实际使⽤二

  本讲内容

  Prometheus+grafana  TCP等待链接监控 企 业实际使⽤

  

  使⽤公式

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

  文件描述符使用率公式

(node_filefd_allocated / node_filefd_maximum)*100

 

 

  Prometheus+grafana  ⽹络丢包率监控 企业 实际使⽤

  使用pushgateway收集数据,以9092端口启动一个pushgateway

./pushgateway --web.listen-address=":9092" &

   同时prometheus配置文件添加配置

 

   收集脚本

  本脚本是测试到局域网的丢包率和网络延时,生成中可以把ping的对象改成其他的可以是局域网也可以是公网

# 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

   脚本解释

lostpk是丢包率 例如1%
rrt是延时 例如4ms
value_lostpk是lostpk过滤掉%的浮点数
value_rrt是rrt过滤掉ms的浮点数 因为只接收浮点数不接收字符串

   注意:echo "rrt_"$instance_name"_to_prometheus $value_rrt"之间只能保留一个空格,复制会认为是字符串而不是浮点数

    另外管道符号|与前面没有空格,否则也是提示错误

text format parsing error in line 1: expected float as value, got "kasjh"

   grafana图形

   公式

increase(rrt_hdp3_to_prometheus[1m])

 

 

 

 

      

posted @ 2020-07-27 15:07  minseo  阅读(725)  评论(0编辑  收藏  举报