美文网首页
周末不定期更新:Nginx集群 + Jmeter + Influ

周末不定期更新:Nginx集群 + Jmeter + Influ

作者: 科学Jia | 来源:发表于2018-03-25 11:33 被阅读278次

    Yesterday I saw a lion kiss a deer, turn the page maybe we'll find a brand new ending. Where we dancing in our tears. __<Lost Stars>

    半个月前,研究了Jmeter里面添加HTTP2.0的插件,因为2.0时代已经到来。配置HTTP 2.0也是非常方便的,至少在最新安装的Nginx配置文件里,默认是把HTTP2.0打开的,HTTP 2.0 只能支持和HTTPS一起使用,如果用的是HTTP,是无法用到HTTP2.0。

    nginx.conf配置文件
    • 这次实验目的有3个:
    1. 尝试用docker镜像运行服务;
    2. 学会docker里的文件mount到宿主机器上; 例如服务的一些配置文件和日志信息需要从docker里映射到宿主机上,一方面便于配置和查看,另外一方面避免docker的消失,而失去一些重要的日志信息等等;
    3. 在搭建好的nginx集群基础上,用Jmeter HTTP 2.0 访问该Nginx集群,同时启动Jmeter的Backend Listener, 它将测试结果实时送往时序数据库Influxdb, 同时用Grafana将数据库Influxdb的数据实时展示出来。

    准备工作

    我在阿里云的一台ECS上创建了一个由4个nginx docker 作为后端 + 1个nginx作为负载均衡的小小集群。配置负载均衡的nginx的通信为默认的HTTP2.0。

    具体步骤完全可以参照这篇写的很好的文章: 使用Nginx + Docker配置HTTPS的负载均衡

    小贴士:在nginx的html文件下,一定要创建属于自己的index.html文件,不然,在你搭建好集群后,会遇到403的错误,你可以在nginx的access.log里找到相应的日志信息来进行对应的解决方法。在这里,我为4个nginx的服务(html1~4)都分别创建了index.html.


    创建index.html文件

    在这台ECS上安装Influxdb和Grafana,因为这台机器的系统是CentOS,所以这里只能以该系统的安装方法简单讲讲,其他系统其实网上也有很多的方法。

    安装和配置Influxdb

    wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm

    sudo yum localinstall influxdb-1.2.4.x86_64.rpm

    在启动influxdb服务之前,我们先去修改下influxdb的配置文件,打开8083端口让它可以通过网页的形式访问到,同时开启默认的8086端口,用http的方式对数据库进行读和写的操作。
    小贴士:这里有一个非常好用的命令,划下重点 rpm -ql influxdb, 该命令可以很轻松到的找到关于influxdb的相关文件信息。

    找到influxdb的conf文件

    修改influxdb.conf文件,打开8083和8086的端口;


    打开8083和8086端口

    在同样的文件里,修改graphite指定database和开启端口,方便等会儿Jmeter测试结果的数据往influxdb发送。


    Influx.conf的graphite配置

    这个时候,你肯定会问,我都没有创建名为"jmeter"的数据库,为什么你就知道指定"jmeter"的数据库?
    是的,是的,我只是把步骤提前了,你的确需要创建一个名为"jmeter"的数据库。不管怎样,先把配置文件改好,然后启动influxdb的服务:

    service influxdb start // 启动

    接下来,我们要把刚刚配置文件里提到的名为"jmeter“数据库创建起来,输入influxdb, 然后 CREATE DATABASE "jmeter", 这样就创建好了。

    创建名为jmeter的数据库

    以上关于Influxdb的部分就搞定了,接下来是安装Grafana.

    Jmeter配置Backend Listener

    在讲Grafana之前,我们先把Jmeter的HTTP 2.0 访问Nginx集群的脚本写好,并把Backend Listener配置好,这样可以把实时测试结果发送到Influxdb。

    配置HTTP 2 Request到你的服务:

    配置HTTP2 Request

    如果不知道,HTTP2 Request的插件怎么安装和配置,可以先看我写的这篇文章:Jmeter 如何配置 HTTP 2.0

    然后添加Backend Listener的监听器:

    配置Backend Listener

    关于这个监听器得到的测试结果,比如percentiles: 90;95;99 等等数据的含义,需要参考Jmeter的官方解释:Jmeter Real-time Result Metrics

    安装和配置Grafana

    在同样的机器上,继续安装Grafana.

    wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.5.1-1.x86_64.rpm

    sudo yum localinstall grafana-4.5.1-1.x86_64.rpm

    启动服务:

    service grafana-server start

    登陆Grafana进行配置,访问http://your_ip_address:3000/, 就会看到你的grafana的登陆界面,输入默认的用户名:admin和密码:admin,即可开始配置。

    先配置数据库的源,刚刚在influxdb开放的8086端口这里需要用到,如图:

    配置数据源.png

    接着配置名为Jmeter数据库的metrics信息,如图:


    配置Graph

    最后,通过jmeter不间断发送消息到nginx的集群,那么关于访问该集群的测试结果的信息就会插入到influxdb的jmeter数据库,并在grafana得到展示:

    TP99的延时展示,以毫秒为单位

    以上。

    周末不定期更新:Nginx集群 + Jmeter + Influxdb + Grafana

    相关文章

      网友评论

          本文标题:周末不定期更新:Nginx集群 + Jmeter + Influ

          本文链接:https://www.haomeiwen.com/subject/xblhcftx.html