搭建监控平台:grafana + prometheus + 硬件监控

  • 安装granafa
    • 非被测服务器---只要不是易捷支付机器
    • yum install grafana-**.rpm -y
    • systemctl restart granafa-server
    • http://server_ip:3000  admin/admin
  • 安装prometheus:是一个时序数据库,不具备收集数据功能
    • 非被测服务器----只要不是易捷支付机器
    • tar -zxf prometheus-2.17.1.linux-amd64.tar.gz
    • 进入解压后的文件夹
    • ./prometheus 可以启动
    • http://server_id:9090/
  • 安装node_export
    • node_exporter 是要安装在被监控的机器上
    • node_exporter收集硬件资源数据
    • tar -xzvf node_exporter-1.1.1.linux-and64.tar.gz
    • 进入解压后的文件夹
    • ./node-exporter
    • http://server_ip:9100
  • prometheus + node_exporter配置
    • prometheus配置文件 prometheus.yml
    • - job_name: 'node_exporter'
        static_configs:
        - targets: ['192.168.2.56:9100']

    重启prometheus:nohup ./prometheus &

  • granafa + prometheus配置
    • add you data source 
      • 选择prometheus
      • URL:http://prometheus_ip:9090
      • save & Test
    • import 引入模板
      • 8919
      • 选择数据源为上一步添加大datasource 
  • 安装stress-ng 
    • yum install -y epel-release.noarch && yum -y update
    • yum install stress -ng
    • 实操一:进程上下文切换
    • ((proc_cnt = 'nproc'*10)); stress-ng ---cpu $proc_cnt ---pthread 1 --timeout 150

      结论:
      1、top:load average值一直在增加,系统负载在升高

      2、top:CPU的 us + sy 约等于100%,全部占用CPU

      3、vmstat:proces中r列有大量的数据,说明有大量的进程在竞争CPU,处于等待状态

      4、vmstat:system的in(每秒中断次数)和cs(上下文切换数)都很大

      5、vmstat:free、buff、catche变化不大

      6、pidstat:nvcswch/s 非自愿上下文切换在逐步升高

      当企业中,实际的项目,出现上述情况,我们可以理解为,进程上下文切换比较多。

      解决办法:项目所在的服务器,1、要么减少运行中的进程(减少部署运行的项目),2、要么增加cpu数量

    • 实操二:线程上下文切换 ----线程密集型
    • stress-ng --cpu 'nproc' --pthread 1024 --timeout 60

      结论:

      • top:load average 迅速升高
        • us + sy 约等于100% us低一点,sy高一点
      • vmstat 1 procs中 r队列有非常大的数据,说明有大量的CPU竞争
        • system:in中断有大量的数据,cs上下文切换,也有大量的数据
        • memory:free数据有明显变小,buffer基本不变,cache变大
          • free:内存空闲空间,内存消耗增大
          • buffer:buffer是磁盘虚拟出来的,用于内存从磁盘读数据时使用
          • cache:cache是内存虚拟出来的,用于cpu与内存速度匹配
      • pidstat -u -w 1:
        • 自愿上下文切换比较多,非自愿上下文切换
    • 当企业中,一个程序开启了大量的线程,就会使用大量的内存资源,就会出现大量的cpu竞争(从内存中获取数据,io),sy比us高,r队列有大量的等待,有大量的上下文切换,自愿上下文切换比较多
    • 解决办法:1、减少项目启动的线程数,2、更换内存速度更高的内存条,3、更换使用cpu的缓存更大的cpu,4、改系统的交互分区
    • 实操三:io密集型

    企业项目中,应用服务器和数据库服务器是在不同的服务器上,因为他们的性能关注点不一样。应用服务器要进行大量的计算,所以关注的性能是计算能里;数据服务器,是要读写数据到数据库中,有大量的磁盘读写,所以关注的性能点是磁盘读写能力。

    • io负载,导致系统负载比较
    • stress-ng -i 6 --hdd 1 --timeout 150:该命令会开启1个worker不停的读写临时文件,同时启动6个worker不停的调用提交缓存
    • top
    • vmstat 1
    • mpstat -P  ALL 3
    • pidstat -w 1
    • 结论:
      • top:load值升高,CPU的wa值很大,freeMem变小,buff/cache值增大
      • vmstat:memory的free变小,buff基本不变,cache变大,io的bo值非常大,CPU的in、cs也都变大
      • mpstat:%iowait 变得很大
      • pidstat:cswch/s 自愿上下文切换变得非常大
    • 企业中,出现了上述的情况,怎么解决?
      • 磁盘IO:1、更换读写速度够快的磁盘  2、加大内存
      • 网络IO:调整网络参数或更换速度更快的网卡
posted @ 2021-07-12 21:51  sinder2018  阅读(211)  评论(0)    收藏  举报