使用Jenkins和Jmeter和ant腳本構建簡易的業務監控系統

一.背景

       由於前段時間線上業務接口經常崩潰,而又無法第一時間發現,被領導定義爲生產事故,隨後開會三番兩次提及要構建生產接口監控系統,最好能有預警功能。線上的業務是15年基於jdk1.7開發的springmvc+ant編譯打包的應用,無法集成普羅米修斯這些性能強大但是較重的業務監控系統。

二.思路

     收到這個需求後,第一時間的想法是使用定時任務去跑各個業務接口,但是線上如此多的業務接口,光寫這些定時任務很明顯不現實。經過調研,隨後採用Jenkins(定時構建)+ant(腳本構建)+Jmeter(接口請求)的方式進行簡易業務監控系統的搭建。

如果對Jenkins還不太熟悉的,可參考這篇文章https://blog.csdn.net/lvxiucai/article/details/98979157

ant簡單瞭解是個比較古老的打包編譯工具即可。

Jmeter是阿帕奇組織下的性能併發測試工具。

三.實戰

1.Jenkins安裝

   Jenkins安裝使用教程,本篇不再進行贅述,詳細可參考https://blog.csdn.net/lvxiucai/article/details/98979157
2.ant安裝與配置

(1)、從http://ant.apache.org 上下載tar.gz版ant

(2)、複製到/usr下

(3)、tar -vxzf apahce-ant-1.9.2-bin.tar.gz 解壓

(4)、vi /etc/profile 修改系統配置文件

#set Ant enviroment
export ANT_HOME=/usr/apache-ant-1.9.2
export PATH=$PATH:$ANT_HOME/bin

  使配置生效:source  /etc/profile

(5)驗證是否安裝配置

      ant -version

3.Jmeter安裝與配置 

(1).下載:apache-jmeter-5.1.1.zip,上傳到服務器

(2).然後解壓到當前傳的目錄:jmeter

(3).然後把解壓的文件配置到對應的環境變量:

export JMETER_HOME=/root/jmeter
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin

(4).source /etc/profile 目的讓配置文件生效

(5) 驗證配置是否成功  jmeter -v

     

可以先在本地windows環境安裝好jenkins並編寫好腳本,如果對Jmeter壓測工具還不太熟悉的話,就去找一篇資料去系統學習下

 

4.整合Jenkins、Ant、Jmeter

(1).將jmeter的ant-jmeter-1.1.1.jar複製到ant的lib目錄

(2).ant腳本配置

<?xml version="1.0" encoding="UTF-8"?>
<project name="JmeterTest" default="all" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyy/MM/dd HH:mm" />
    </tstamp>

    <!--Jmeter主目錄-->
    <property name="jmeter.home" value="/home/software/apache-jmeter-5.1.1" />

    <!--存放Jmeter生成的報告文件的文件夾-->
    <property name="jmeter.result.dir" value="/home/software/apache-jmeter-5.1.1/result" />

    <!--Jmeter文件名-->
    <property name="ReportName" value="TestReport" />

    <!--jtl文件-->
    <property name="jmeter.result.jtlName" value="${jmeter.result.dir}/${ReportName}.jtl" />
    <!--html報告文件-->
    <property name="jmeter.result.htmlName" value="${jmeter.result.dir}/${ReportName}.html" />

    <!--彙總標籤-->
    <target name="all">
        <antcall target="clean" />
        <antcall target="test" />
        <antcall target="report" />
    </target>

    <!--每次清除Jmeter生成的結果目錄-->
    <target name="clean">
        <delete includeemptydirs="true">
            <fileset dir="${jmeter.result.dir}" includes="**/*"/>
        </delete>
    </target>


    <!--運行Jmeter腳本文件-->
    <target name="test">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
            <testplans dir="${jmeter.home}/jmx" includes="*.jmx" />
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>

    <path id="xslt.classpath">
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    </path>

    <!--生成測試報告-->
    <target name="report">
        <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" >
            <param name="dateReport" expression="${time}"/>
        </xslt>
        <!--複製報告所需圖標-->
        <copy todir="${jmeter.result.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>
</project>

(3).Jenkins創建監控任務

 

 

 

(4).構建之前將ant的腳本文件,build.xml放到【測試監控】任務的workspace目錄中,如果你的Jenkins是使用rpm安裝,則任務默認放在 /var/lib/jenkins目錄下的workspace目錄中。

(5).定時構建之後可以在Jenkins的文件夾中看到Html文件

 

(6)如果想要有報警和發送郵件提醒

     需要建立一個和【測試監控】任務關聯的子任務,通過解析Html文件中的接口成功率來配置發送給開發人員,以達到預警的木的。

 

                                                                          分享不易,如果覺得有用的話,可以點個贊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章