jenkins执行jmeter和python文件,jenkins实现定时检查服务稳定性
jenkins定时检查服务稳定性
背景:由于最近线上某些服务不稳定,产品需要对于线上环境服务的稳定性进行检查,针对不同的服务设置每隔15分钟检查一次和每隔2小时检查一次,检查服务是否可用。
设计:同步的服务用jmeter检查接口,然后python检查jmeter生成的报告,异步的服务用python进行检查,jenkins定时执行。如果有问题给相关人员发邮件。
先在本地调整,本地Windows环境调整成功,贴下配置。
15分钟执行一次的jenkins配置如下:
之所以不把python和jmeter放在一起执行是因为,jmeter执行之后会自动关闭窗口
每隔2小时执行项目
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_172
set JMETER_HOME=C:\2services\apache-jmeter-4.0
set path=C:\2services\apache-jmeter-4.0\bin;C:\Program Files\Java\jdk1.8.0_172\bin;C:\Program Files\Java\jdk1.8.0_172\jre\bin;%SystemRoot%/system32;%SystemRoot%;
cd \2services\apache-tomcat-7.0.78\webapps\jmeter
rd /s /q report2
del listener2.jtl
jmeter -n -t twohours.jmx -l listener2.jtl -e -o report2
set path=C:\Users\fir\AppData\Local\Programs\Python\Python37\
cd \2services\apache-tomcat-7.0.78\webapps\ui-test\test
python check_timer_twohours.py
python check_report_twohours.py
其中发邮件部分都是写在python文件中的,没有使用jenkins本身的构建发送邮件功能,因为我只需要出错的时候发送邮件
后面转入服务器,jmeter和jenkins安装如下
Linux下安装jmeter
jmeter把zip压缩包放到Linux下对应位置解压就好
rz 命令和unzip命令
解压之后去bin目录执行./jmeter.sh -v
说明安装成功了
由于需要运行jmeter文件,输入jmeter不识别,配置环境变量
去/etc下编辑profile文件, vim profile
执行命令source profile 让配置生效,当前窗口命令已生效
重新打开一个窗口没有生效
重启docker也没生效
把这个配置复制到用户文件中,vim ~/.bashrc 追加到最后一行,这样就好了运行下
到jmeter文件所在目录运行
jmeter -n -t onedaytest.jmx -l listener.jtl -e -o report
Linux下安装jenkins
2.安装jenkins,下载jenkins的war包放到Tomcat项目中直接运行(我用的我Windows环境下使用的war包)
访问地址端口号后面增加/jenkins
然后一步步安装下去
配置完成之后直接访问一片空白,重启Tomcat之后访问正常
Linux下安装python
3.Linux下安装python
uname -a查看系统版本
执行命令安装
sudo apt-get update
sudo apt-get install python3.7
不识别sudo。。。
执行
apt-get update
apt-get install python3.7
选择Y,一直安装下去,安装成功。。识别的是python3.7。。。
然后发现不能使用pip命令
执行以下命令安装pip
apt-get install python3-pip
然后把HTMLTestRunner.py文件放到lib目录下
Linux下安装chrome浏览器
apt install wget
wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
apt update
apt install google-chrome-stable
查看是否安装成功
google-chrome -version
然后在启动浏览器中增加配置
opt.add_argument('--no-sandbox')
jenkins运行
配置好后差不多可以自动运行了
贴一下配置
注意点
运行脚本的时候监控下shm内存,我的docker只有64M,启动浏览器就占用超过50%了,很容易就崩溃了(不关闭浏览器不会释放内存的,所以异常了要关闭浏览器)
后面加到1G就好些了
其中有一次没关浏览器,后面一直占用内存,我重启docker才会释放
jmeter在Linux下执行不会存在Windows下关闭窗口的问题,所以 直接写在一起是可以的
Windows下写路径没注意,用的是\连接坑死自己了,全部需要改,用路径拼接函数os.path.join()
由于有截图,发现Linux中中文都是显示口口口的,
这是缺少字体,把Windows下C:\Windows\Fonts文件打包上传到docker的/usr/share/fonts/windows/truetype文件夹下(后面两级是我新建的),解压之后执行
fc-cache -fv
后面邮件截图OK了