zoukankan      html  css  js  c++  java
  • 第十四讲: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])
    

     

          

  • 相关阅读:
    js操作
    函数知识点补充
    css---position
    css-浮动
    css-边界重叠以及边界塌陷
    css
    css文本类型操作
    POJ 2828 线段树活用
    POJ 3468 线段树
    POJ 3013 SPFA算法,邻接表的使用
  • 原文地址:https://www.cnblogs.com/minseo/p/13385510.html
Copyright © 2011-2022 走看看