树莓派4B基于jenkins+jmeter+granfa+influxdb搭建接口实时监控平台
硬件:Raspberry Pi 4B-8g版本
系统:Ubuntu 20.04 LTS
最近有个客户化本地实施的项目需要对接口实时监控,以便即时发现问题,我们在树莓派Pi4(IP:192.168.5.21)上基于jenkins+jmeter+granfa+influxdb搭建了一个简易的接口实时监控平台,下面简单介绍搭建过程和实用效果,有兴趣的同学可以自行实践。
- 相关安装文件
https://dl.influxdata.com/chronograf/releases/chronograf-1.8.10_linux_armhf.tar.gz https://dl.grafana.com/oss/release/grafana_7.4.2_arm64.deb https://mirrors.bfsu.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.1.tgz
安装influxdb
# cd /opt/server # wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.4_linux_armhf.tar.gz # tar -zxvf influxdb-1.8.4_linux_armhf.tar.gz # mv influxdb-1.8.4-1 influxdb # cd inflxdb # mkdir /etc/influxdb # cp etc/influxdb/influxdb.conf /etc/influxdb/influxdb.conf
修改配置文件
配置文件位置:/etc/influxdb/influxdb.conf
主要是启用graphite配置,并修改数据库名为jmeter
[[graphite]] # Determines whether the graphite endpoint is enabled. enabled = true database = "jmeter" retention-policy = "" bind-address = ":2003" protocol = "tcp" consistency-level = "one" # These next lines control how batching works. You should have this enabled # otherwise you could get dropped metrics or poor performance. Batching # will buffer points in memory if you have many coming in. # Flush if this many points get buffered batch-size = 5000 # number of batches that may be pending in memory batch-pending = 10 # Flush at least this often even if we haven't hit buffer limit batch-timeout = "1s" # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max. udp-read-buffer = 0
设置启动文件
# vi /usr/lib/systemd/system/influxdb.service [Unit] Description=influxdb After=network.target [Service] Type=simple User=root Group=root ExecStart=/opt/server/influxdb/usr/bin/influxd --config /etc/influxdb/influxdb.conf Restart=on-failure [Install] WantedBy=multi-user.target
启动服务
# systemctl daemon-reload # systemctl start influxdb
设置自启动
# systemctl enable influxdb
创建jmeter数据库
# cd /opt/server/influxdb # ./usr/bin/influx Connected to http://localhost:8086 version 1.8.4 InfluxDB shell version: 1.8.4 > create database jmeter
安装grafana
# cd /opt/software # wget https://dl.grafana.com/oss/release/grafana_7.4.2_arm64.deb # dpkg -i grafana_7.4.2_arm64.deb ## 启动服务 # systemctl daemon-reload # systemctl start grafana-server ## 设置自启动 # systemctl enable grafana-server
访问http://192.168.5.21:3000/login
输入默认用户名/密码 admin/admin ,点log in,首次登录需要修改密码如下
配置influxdb数据源
接入grafana系统后,我们首先配置数据库,如上图所示,我们从左边菜单区依次点Configuration、选中“Datasource”,进入配置管理的数据源标签页面如下
grafana因为是新装的缘故,目前还没有一个数据源,点击“Add data source”进入添加数据源页面如下
可以看到grafana支持安装好多种类的数据库,这里我们不过多阐述,我们选择添加InfluxDB类型的数据源
http区域的URL填入 http://localhost:8086
InfluxDB Details 区域的 Database 填入 jmeter
点“Save & Test”,提示“Data source is working”,到此我们的第一个数据源就添加完毕了。
导入jmeter面板
接下来我们导入jmeter面板
如上图所示,我们从左边菜单区依次点“+”、选中“Import”,进入导入面板页面如下
输入5496,点Load
DB name选择InfluxDB,其它输入框保持默认值,点“Import”,进入Jmeter面板如下
安装jenkins
这里我们使用apt安装方式,所以不需要安装文件
## 安装jdk # apt install openjdk-8-jdk # java -version openjdk version "1.8.0_282" OpenJDK Runtime Environment (build 1.8.0_282-8u282-b08-0ubuntu1~20.04-b08) OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode) ## 安装jenkins # wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - # sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \ /etc/apt/sources.list.d/jenkins.list' # apt update # apt install jenkins
访问http://192.168.5.21:8080
输入管理员密码,点“继续”按钮,进入自定义Jenkins页面如下
“选择插件来安装”,进入选择插件界面如下,我这里安装的jenkins版本是2.263.4,默认选择了20个插件如下
点“安装”按钮,等待插件安装完成后,会显示“创建第一个管理员用户”页面如下
如上我们新建一个管理员账户“admin”,点击“保存并完成”,进入“实例配置”页面如下
继续点击“保存并完成”,进入“Jenkins已就绪”页面如下
继续点击“开始使用Jenkins”,进入Jenkins首页如下
进入插件管理,搜索两个插件,分别安装。 一个叫Performance
一个叫Git Parameter
安装jmeter
jmeter也需要jdk环境,我们在装jenkins的时候已经安装了jdk,所以这里只需要下载jmeter安装包,并解压到相关目录下即可
## 下载jmeter # cd /opt/tools # wget https://mirrors.bfsu.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.1.tgz # tar -zvf apache-jmeter-5.4.1.tgz
实例演示
到这里,我们的接口实时监控平台就搭建好了,只要在jenkins上配置一个简单的流水线,后续我们就可以对我们的系统接口进行实时监控了。这里提供了一个简单的jmx脚本,我们接下来就以这个脚本来演示实时监控平台效果。
建立jenkins任务loadTest
jenkins控制台新建Item,进入新建任务页面如下
任务名称输入“loadTest”,选择项目类型为流水线,点“确定”按钮,进入任务配置页面,直接拉到流水线定义片段如下
输入pipeline script脚本如下
pipeline { agent any parameters { gitParameter name: 'TAG', type: 'PT_TAG', defaultValue: 'v0.1' } 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']] ]) } } stage('load test') { steps { sh '/opt/tools/apache-jmeter-5.4.1/bin/jmeter -n -t demoHome/demoHome.jmx' } } stage('publish report') { steps { perfReport filterRegex: '', sourceDataFiles: '**/*.log' } } } }
直接点保存按钮,该任务建立成功
执行jenkins任务loadTest
进入loadTest任务页面如下
点Build Now链接,会触发首次构建
构建结果如上图显示,刷新loadTest任务页面,会发现Build Now链接变成了Build with Parameters
点Build with Parameters链接,会进入选择tag页面如下
这里我们继续选择v0.1,点“开始构建”按钮。 等任务结束后,我们继续刷新loadTest任务页面,如果我们安装过程中如果没有没有偏差,这时候我们会发现这次两次任务应该都执行成功了,显示如下
查看任务执行情况
jenkins控制台看任务执行情况
loadTest任务页面点Performance Trend,可以直接看历次接口的性能趋势报告,这里主要是显示了吞吐量、响应时间和错误率三个指标的折线图。 另外通过点Last Report链接和Filter trend data链接可以直接看最近一次的详细测试报告和配置生成性能趋势报告用到什么的测试记录,另外从构建历史中可以打开每次任务的执行结果页面,从结果页面,也可以进入历次执行结果的详细测试报告页面。
如上是loadTest某次执行结果的详细测试报告页面。
grafana控制台看任务执行情况
jenkins控制台看到的任务执行情况统计的指标少,显示效果也一般,这里我们可以看下grafana中的jmeter面板,显示如下
grafana中的jmeter面板显示了更多的信息,除了吞吐量、响应时间、错误率外,还有请求数、收到字节数、发送字节数、网络流量等更多指标。显然比jenkins控制台显示更胜一筹。
配置任务定时执行
到这里,我们的实例就演示完了,读者只要把这里的jmx换成自己的接口监控脚本,这个简单的接口实时监控平台就大功告成了。如果想做到无人值守,那么只需要将任务loadTest配置成定时执行即可,具体配置参考如下
参考
- [树莓派4B安装 Ubuntu 20.04 LTS](https://my.oschina.net/fastjrun/blog/4303293 "树莓派4B安装 Ubuntu 20.04 LTS")

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《你好,李焕英》口碑爆棚,原来秘诀都隐藏在了影迷的评论里面
《你好,李焕英》成为了春节档最热门最火爆的电影之一。 截止目前,根据猫眼电影专业版的数据显示,该影片的票房已经突破了43亿;在抖音搜索上,因为其“好哭”而冲上了热榜;豆瓣的评分也稳定在了8.1的高分,今天小编就来分析分析,《你好,李焕英》的爆红其中的秘密有哪些。 从评分的分布来看,4颗星和5颗星的评分占到了绝大多数,总计有77.1%,可见观众朋友们对该影片给予了高度的认可和肯定, 小编另外也抓取了观众朋友们的评论, 将爬下来的数据进行进一步的处理与整合, 计算相应的演员被提及的次数 并进行可视化的分析 从结果来看,贾玲以及演员张小斐被影迷朋友们广泛的议论 下面我们对发了评论的影迷朋友们的地域信息进行归总,发现,来自北京、上海的影迷朋友居多,其次便是广州、深圳等地,说明来自上述地域的影迷朋友有着写观影后评论的习惯,当然春节期间大家纷纷走进影院观影所引发的“报复性”观影,也是该影片高票房的重要原因 而这些影迷朋友们的他们大多数是在2019年加入的,而其次就是2021年和2020年刚加入的新用户,可见豆瓣在新用户增长上面也是下了不少的功夫 接下来小编便是评论的词云图的绘...
- 下一篇
Python和JavaScript在使用上有什么区别?
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://www.freecodecamp.org/news/python-vs-javascript-what-are-the-key-differences-between-the-two-popular-programming-languages/ JavaScript和Python这两种语言非常流行和强大,但它们在部分语法的使用上却有着一些不同,如果你恰好对这些区别对比感兴趣,那么这篇文章中的内容可能会为你提供一些帮助。 在本文中,你将了解到: Python和JavaScript的不同实际应用程序。 Python和JavaScript之间的主要语法和功能差异。 Python VS JavaScript:应用上的差异 Python 由于它的强大和通用性,Python已成为全世界几乎所有科学应用中的重要工具。它是一种通用编程语言,支持不同的编程范式。 它被广泛应用于科学和专业应用,包括数据科学、人工智能、机器学习、计算机科学教育、计算机视觉和图像处理、医学、生物学,甚至天文...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果