一.背景
由於前段時間線上業務接口經常崩潰,而又無法第一時間發現,被領導定義爲生產事故,隨後開會三番兩次提及要構建生產接口監控系統,最好能有預警功能。線上的業務是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文件中的接口成功率來配置發送給開發人員,以達到預警的木的。
分享不易,如果覺得有用的話,可以點個贊!