树莓派4B使用docker基于jenkins+jmeter+granfa+influxdb搭建接口实时监控平台
硬件:Raspberry Pi 4B-8g版本
系统:Ubuntu 20.04 LTS
Docker:20.10.3
上一篇树莓派4B基于jenkins+jmeter+granfa+influxdb搭建接口实时监控平台我们虽然介绍了接口实时监控平台的原生安装方式,但现在毕竟是容器化盛行的时代,docker安装和使用方式怎么会缺席呢?下面我们就来介绍一下如何用docker方式的在在树莓派Pi4(IP:192.168.5.21)上基于jenkins+jmeter+granfa+influxdb搭建一个简易的接口实时监控平台,有兴趣的同学可以自行实践。
- 相关安装镜像
jenkins镜像:codenest/jenkins:lts
influxdb镜像:influxdb:1.8.4
granfa镜像:grafana/grafana:7.4.3
jmeter镜像:pi4k8s/jmeter5:5.4.1-8u201-jdk-ubuntu-18-04
注意:因为我们树莓派4B本身并非x86,而是arm架构,且我们的系统装的是64位ubuntu,因此镜像只能选择arm64v8架构的镜像。这里的jmeter镜像是我自己在树莓上编译的,具体Dockerfile参见这里。
安装influxdb
生成配置文件并修改配置
# cd /opt/server/influxdb/config
docker run --rm influxdb:1.8.4 influxd config > influxdb.conf
[graphite]下仅需配置改两个地方
- enabled改为true
- database改为jmeter
安装并启动服务
## 赋权限
# chown 1000 /opt/server/influxdb/
docker run -itd --name influxdb -p 8086:8086 -p2003:2003 \
--restart always \
-e TZ=Asia/Shanghai \
-v /opt/server/influxdb/config/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
-v /opt/server/influxdb/data:/var/lib/influxdb \
influxdb:1.8.4
创建jmeter数据库
# docker exec -it influxdb influx
Connected to http://localhost:8086 version 1.8.4
InfluxDB shell version: 1.8.4
> create database jmeter
安装grafana
生成配置文件
先创建一个grafana容器
# docker run -itd --name grafana \
--restart always \
-e TZ=Asia/Shanghai \
grafana/grafana:7.4.3
把granfa容器里的配置文件复制出来
## 新建配置文件目录
# mkdir -p /opt/server/grafana/config
## 复制配置文件
# docker cp grafana:/etc/grafana/grafana.ini /opt/server/grafana/config
删除grafana容器
docker rm -f grafana
安装并启动服务
## 新建对应data目录
# mkdir -p /opt/server/grafana/data
# chown 1000 /opt/server/grafana/data
## 新建对应log目录
# mkdir -p /opt/server/grafana/log
# chown 1000 /opt/server/grafana/log
# docker run -itd --name grafana -p 3000:3000 \
--restart always \
-e TZ=Asia/Shanghai \
-v /opt/server/grafana/data:/var/lib/grafana \
-v /opt/server/grafana/log:/var/log/grafana \
grafana/grafana:7.4.3
配置grafana部分可参考树莓派4B基于jenkins+jmeter+granfa+influxdb搭建接口实时监控平台,需要注意在配置influxdb时候,下面这个url里面填入的应该是http://192.168.5.21:8086,如果填入http://localhost:8086,会报错InfluxDB Error: Bad Gateway,这里不能使用localhost的原因是因为运行grafana和influxdb服务的分别是两个容器,当然不能使用localhost了。
安装jenkins
## 新建对应jenkins_home目录
# mkdir -p /opt/server/jenkins/jenkins_home
# chown 1000 /opt/server/jenkins/jenkins_home
# usermod -aG docker jenkins
# docker run -itd --name jenkins \
-p 8080:8080 -p 50000:50000 \
--restart always \
-e TZ=Asia/Shanghai \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/server/jenkins/jenkins_home:/var/jenkins_home \
codenest/jenkins:lts
配置jenkins部分可参考树莓派4B基于jenkins+jmeter+granfa+influxdb搭建接口实时监控平台
实例演示
到这里,我们用docker方式安装的接口实时监控平台就搭建好了,接下来我们又到了我们的实例演示部分,本次实例演示部分也可参考树莓派4B基于jenkins+jmeter+granfa+influxdb搭建接口实时监控平台自行实践,只不过我们这次是采用了容器化启动jmeter来执行测试的方式。有如下几处需要注意:
- jenkins插件管理要新增docker pipeline和docker插件
- pipeline script脚本修改如下
pipeline {
agent any
parameters {
gitParameter name: 'TAG',
type: 'PT_TAG',
defaultValue: 'V1.0'
}
stages {
stage('git chekout v0.1') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: "${params.TAG}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
gitTool: 'Default',
submoduleCfg: [],
userRemoteConfigs: [[url: 'https://gitee.com/pi4k8s/jmxs.git']]
])
stash name: "jmxtmp", includes: "demoHome/demoHome.jmx"
}
}
stage('load test') {
agent {
docker { image 'pi4k8s/jmeter5:5.4.1-8u201-jdk-ubuntu-18-04' }
}
steps {
unstash("jmxtmp")
sh '/opt/jmeter5/bin/jmeter -n -t demoHome/demoHome.jmx -JinfluxdbUrl=192.168.5.21:8086'
stash name: "jmxtmpResult", includes: "**/*.log"
}
}
stage('publish report') {
steps {
unstash("jmxtmpResult")
perfReport filterRegex: '', sourceDataFiles: '**/*.log'
}
}
}
}
脚本里我们使用了镜像pi4k8s/jmeter5:5.4.1-8u201-jdk-ubuntu-18-04来执行压力测试。
参考
