zoukankan      html  css  js  c++  java
  • 性能测试监控:Jmeter+Collectd+Influxdb+Grafana

    系统性能指标图示例:

    采集数据(collectd)-> 存储数据(influxdb) -> 显示数据(grafana)
    • InfluxDB 是 Go 语言开发的一个开源分布式时序数据库,非常适合存储指标、事件、分析等数据

    • collectd C 语言写的一个系统性能采集工具

    • Grafana 是纯 Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表、显示图表等

    • Jmeter是Apache组织开发的基于Java的压力测试工具

    一、 Collectd

    find / -name "collectd"
     /opt/collectd/sbin/collectd start
    rpm --import /etc/pki/rpm-gpg/RPM*
    cd /usr/local/
     ll
     rpm -qa | grep epel-release
    rpm -qa | grep collectd
     yum install collectd
     service collectd start

    1. 下载安装

             官网下载地址:https://collectd.org/download.shtml

                  tar xf collectd-version.tar.bz2

                  cd collectd-version

                  ./configure

                  make all install

             yum安装

                  先查询是否已安装epel-release ,没有则执行yum install epel-release –y安装;

                  yum install -y collectd;

    2. 修改配置

    https://collectd.org/wiki/index.php/First_steps

     cd  /opt/collectd/etc

             vi /etc/collectd.conf

             确保以下几项的注释(#)是去掉的

                 Hostname    "192.168.1.126"      此处改为安装collectd的机器IP地址

                 LoadPlugin cpu

                 LoadPlugin memory

                 LoadPlugin network

                 LoadPlugin swap

                <Plugin cpu>

                        ReportByCpu true

                        ReportByState true

                        ValuesPercentage true   此处启用cpu的使用率,5.7.*以上才有,低版本的不支持百分百

               </Plugin>

               <Plugin network>

                       <Server "192.168.1.222" "25826"> 此处指定将collectd收集的数据发送到的influxdb地址和端口

                                Interface "enp0s31f6"   通过ifconfig获取网卡的名称

                      </Server>

              </Plugin>

    安装启动脚本

    cp contrib/redhat/init.d-collectd /etc/init.d/collectd
    chmod +x /etc/init.d/collectd

    3. 启动

    service collectd start        5.7.2版本以上不能用该命令

     5.8.0版本使用以下重启:

    /ymm/collectd-5.8.0/collectd -C /opt/collectd/etc/collectd.conf

    查看状态:

    /etc/init.d/collectd status

    二、 InfluxDB

    备注:influxdb千万不要装最新版本1.4,web页面版本的被干掉了

    1. 下载安装

         下载地址:https://portal.influxdata.com/downloads  

         选择InfluxDB最新版本如:v1.4.2,点击进去后选择对应的系统版本,如:

         wget https://dl.influxdata.com/influxdb/releases/influxdb-1.4.2-static_linux_amd64.tar.gz

         解压:tar xvfz influxdb-1.4.2-static_linux_amd64.tar.gz

     备注:上面的方式下载不了,网不行

    1.下载

    下载地址2:https://download.csdn.net/download/youyou390/10269204   

    2、安装

    [root@localhost home]# rpm -ivh influxdb-1.2.2.x86_64.rpm

    2. 修改配置

        vi influxdb.conf

        找到 [http] 和 [[collectd]] 、 [[graphite]]节点,enabled改为true(默认是开启的),bind-address修改绑定的IP和端口:

           [http]

           #Determines whether HTTP endpoint is enabled.

           enabled= true      

           # The bindaddress used by the HTTP service.

           bind-address= ":8086"          此处配置的IP和端口供grafana连接使用

           [[collectd]]

           enabled= true

           bind-address = ":25826"         此处配置的IP和端口供collectd上传数据使用

           typesdb = " /usr/share/collectd/types.db"      可在安装collectd的机器上(yum安装默认在/usr/share/collectd目录)拷贝过来,存储在指定的目录

           [[graphite]]

           enabled= true                   Jmeter通过“Backend Listener”,将测试的数据上传到InfluxDB来存储

           database= "graphite"            指定jmeter的性能监控数据存储的数据库名称

           bind-address= ":2003"           此处配置的IP和端口供jmeter上传数据使用


    3、配置:开启web访问端口8083

    [root@localhost home]# vim /etc/influxdb/influxdb.conf
    ......
    [admin]
    # Determines whether the admin service is enabled.
    enabled = true
    
    # The default bind address used by the admin service.
    bind-address = ":8083"
    .......
    

    4、启动InfluxDB

    [root@localhost home]# service influxdb start
    Redirecting to /bin/systemctl start influxdb.service
    
    注:如果是升级版本,卸载InfluxDB后需要重启电脑,否则启动会一直失败!
    

      influxdb 重启: service influxdb restart

     查看端口是否启动:netstat -tupln | grep 25826

     influxdb配置地址 /etc/influxdb/influxdb.conf

    3. 启动

       执行 ./influxd&

       启动成功后执行./influx创建collectd 和 graphite 数据库:

       同时还要执行create database graphite 创建graphite数据供jmeter上传数据使用;

       看到图中会出现httpd的日志,可以修改influxdb.conf 将log-enabled 改为 false,关闭日志打印功能;

       influxdb的数据量一多,会非常影响性能,可以设置只保留5天的数据:

       use collectd

       create retention policy "5_days" on collectd duration 5d replication 1 default

       show retention policies on collectd

    5、验证

    查看influxd进程:
    [root@localhost home]# ps aux | grep influx
    influxdb  20254  0.0  0.2 605104 17552 ?        Ssl  17:47   0:01 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
    
    启动客户端:
    [root@localhost home]# influx
    Connected to http://localhost:8086 version 1.2.2
    InfluxDB shell version: 1.2.2
    > show databases
    name: databases
    name
    ----
    _internal
    > quit


    问题一:
    重启命令:service influxdb restart报错

    [root@198-141 /]# find -name influxdb
    ./var/run/influxdb
    ./var/log/influxdb
    ./var/lib/influxdb
    ./usr/lib/influxdb
    ./etc/default/influxdb
    ./etc/influxdb
    ./etc/logrotate.d/influxdb
    ./etc/rc.d/init.d/influxdb
    [root@198-141 /]# service influxdb restart
    influxdb process already stopped [ OK ]
    Starting influxdb...
    influxdb process was unable to start [ FAILED ]
    [root@198-141 /]# service influxdb restart
    influxdb process already stopped [ OK ]
    Starting influxdb...
    influxdb process was started [ OK ]
    [root@198-141 /]# netstat -tupln | grep 25826
    udp 0 0 192.168.198.141:25826 0.0.0.0:* 8503/influxd
    [root@198-141 /]# influx
    Connected to http://localhost:8086 version 1.5.1
    InfluxDB shell version: 1.5.1
    > show databases
    name: databases
    name
    ----
    _internal
    >

     

    查看日志文件/var/log/influxdb 

    提示run: open server: open service: Stat(): stat /usr/local/share/collectd: no such file or directory

     在/usr/local/share目录下新建collectd后再重启

    安装 rrdtool插件
    yum install collectd-rrdtool rrdtool rrdtool-devel 
    mkdir -p /usr/ var/ lib/collectd/rrd  修改一下collectd.conf配置

    三、 Jmeter

    1.  下载安装

           下载地址:http://jmeter.apache.org/download_jmeter.cgi

           可选择zip包,如“apache-jmeter-3.3.zip”,下载到windows上直接解压即可。

    2. 启动

           在bin目录,运行jmeter.bat,可打开图形化界面。

    3. 添加测试计划

          右击测试计划,指向添加,展开菜单后选择Thread(Users),点击线程组;

          右击线程组,添加http请求:

          输入请求的域名或IP,添加参数

          右击测试计划,选择添加→监听器→Backend Listener(用于将性能数据上传到Influxdb)

          如下图填好相应参数:

          启动测试后,jmeter会异步将测试的数据上传到InfluxDB;

          如果要集群测试,linux上运行“./jmeter-server”,windows上运行jmeter-server.bat,客户端需要在jmeter.properties上配置remote_hosts属性,设置远程机器的IP和端口,然后客户端运行jmeter.bat,打开图形化界面,选择运行→远程启动。

    四、 Grafana

    1.  下载安装

       下载地址:https://grafana.com/grafana/download

       选择对应的系统版本,Linux通用的下载地址

          wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.2.linux-x64.tar.gz

          解压:tar -zxvf grafana-4.6.2.linux-x64.tar.gz

    2.  修改配置(/grafana-4.6.2/conf/defaults.ini)

        [server] 

    http_port= 3000              管理界面的访问端口

    [security]

         admin_user= admin           管理界面登录的用户名

         admin_password= admin        管理界面登录的密码

    [database]

         type =mysql                  可配置mysql、postgres、sqlite3,默认是sqlite3,第一次启动自动创建数据库和初始化表

         host =192.168.1.222:3307     数据库的地址和端口

         name =grafana                数据库名称

         user =root                   数据库用户名

         # If the password contains # or ; you have to wrap it with triple quotes. Ex"""#password;"""

         password= 123456             数据库密码

    3.  启动

         ./grafana-server

         浏览器访问:http://ip:3000 ,输入用户名和密码(默认admin)

    4. 配置DataSource

         登录Granfana管理页面后,点击左上角的图标,展开二级菜单,点击“Data Source”进入数据源管理页面:

         点击Add datasource添加数据源:

         按实际填好数据好,点击“Add”,成功添加会显示“Data source is working”

    5. 配置Dashboard(系统指标)

         点击左上角图标,展开二级菜单,鼠标指向Dashboards,展开右侧的菜单,点击New:

     

         进入Newdashboard页面:

         点击Graph,进入如下页面:

         点击PannelTitle,然后点击Edit,出现Graph的编辑区域:

         点击ToggleEdit Mode可看到生成的sql,如下:

         点击Add Query,分别添加cpu的idle、system、wait数据;

         在General菜单项Title属性,输入“Cpu”;

         在Axes菜单项Left Y 的Unit,选择none – percent(0-100) , 修改Y轴单位;

         一个机器cpu的监控即可配置完成,如下图:

         按CTRL+S,输入监控的机器IP,保存设置。

         点击左上角的 “Backto dashboard”返回dashboard页面,点击“+ADDROW”,分别添加网络流量、内存、Swap等监控。

         网络流量只能在ToggleEdit Mode模式下输入以上SQL,单位是datarate > bytes/sec

         内存的单位是data(IEC)> bytes

         Swap的单位是data(IEC)> bytes

         如果监控安装collectd的机器与Grafana的机器时间有差异,可以在Time range修改:

    6.  配置Dashboard(Jmeter指标)

            添加一个新的Dashboards,配置名字Jmeter;

            添加响应时间的Graph,Axes的unit设置为none:

            添加TPS的Graph,Axes的unit设置为none:

    Jmeter监控指标图示例:

     转自:http://blog.csdn.net/wudufeng/article/details/78567866

  • 相关阅读:
    对Spark硬件配置的建议
    Hadoop调优 | NameNode主备宕机引发的思考
    系统解析Apache Hive
    Spark集群和任务执行
    Redis中的一致性哈希问题
    Java并发队列与容器
    重要 | Spark和MapReduce的对比,不仅仅是计算模型?
    Redis从入门到精通
    LeaFlet自定义控件
    java学习的一些琐碎知识点
  • 原文地址:https://www.cnblogs.com/kaola8023/p/8612574.html
Copyright © 2011-2022 走看看