Jmeter+influxdb+Grafana+Docker 初步实践

前言

        概述:最近的几年,因为新冠导致国内外动荡不安,2022 年年底随着疫情放松、疫情放开到疫情真正结束。国内的经济跌宕起伏,几经波折,各行各业都在经历着大洗牌。当然,计算机行业影响也稍微有所影响,不过因为 23 年年初的第一枪:ChatGPT火起来了,导致计算机行业率先承受了重大打击,大家纷纷为了自保开始了内卷。

        故而,目前如何提升自身核心竞争力也变得重要了起来。那么如何提升自身核心竞争力呢?

        1️⃣ 拥抱这个时代,学习并使用ChatGPT 这个工具,提升效率

        2️⃣ 能快速学习并运用于当前工作并实践的能力

        So,目前我目前选择的是提升性能测试方面的能力。故本文是对学习过程和课后操作的步骤的补充和回顾。

一、前期准备

        1️⃣ ECS 云服务器 CentOS

        2️⃣ 实体电脑MAC 电脑

二、ECS 云服务器配置 JDK和Docker 环境及其发布 jar 服务

        1、安装 JDK(PS:先百度一个吧,我之前自己没有配置过,等后续补充)

        2、安装 Docker

根据系统自行查阅安装步骤即可。

举例:
在CentOS上安装Docker环境通常需要执行以下步骤:

更新软件包列表:

sudo yum update
安装所需的依赖包:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker软件仓库:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Docker引擎:

sudo yum install -y docker-ce
启动并设置Docker服务自动启动:

sudo systemctl start docker
sudo systemctl enable docker
验证Docker安装是否成功,运行以下命令:

sudo docker version

        3、发布 jar 服务

# 进入当前用户的家目录
cd ~

# 创建目录
mkdir -p learning/order

# 将 jar 包放到learning/order目录下
# 通过相应的软件ftp 上传,我使用的是Electerm

# 通过在learning/order目录下,创建 Dockerfile文件,且文件内内容如下:
------------------------------------------------------------------------------
# 设置基础镜像
FROM openjdk:8-jre-slim

# 设置工作目录
WORKDIR /app

# 复制 jar 文件到工作目录
COPY order-service-1.0.0.jar /app/app.jar

# 暴露容器的端口号
EXPOSE 9082

# 设定容器启动时运行的命令
CMD ["java", "-jar", "app.jar"]
------------------------------------------------------------------------------

# 如果没有安装openjdk8基础镜像,使用 pull 安装,版本和 Dockerfile 里面的保持一致
docker pull openjdk:8

# 将上传的 jar 包制作为镜像,使用一下命令,order文件名称和版本与Dockerfile 里面的保持一致,且最后的 . 符号也是需要
docker build -t order:1.0.0 .

# 查看 order 镜像,使用 docker images
docker images

# 将 order 镜像制作一个 order 容器, --name后容器名称,-p后端口名称(宿主机:容器),9998 是 jar 内固定的,端口后跟的是镜像及其版本
docker run -d --name my-order -p 9081:9998 order:1.0.0

# 查看order容器状态,使用 docker ps 或者 docker ps -a
docker ps
docker ps -a

# 如果发现 my-order 容器是停用状态,可以使用 docker start
docker start my-order

# 如果使用 docker ps 没有发现 my-order 容器,可以通过 docker logs -t my-order 命令查看日志
docker logs -f my-order

# 想要停用 my-order 容器,可以使用 docker stop
docker stop my-order

# 想要删除容器,可以使用命令 docker rm
docker rm my-order

# 想要删除镜像,可以使用命令 docker rmi
docker rmi order:1.0.0

# 如果发现my-order 容器的状态是正常启用的,那就可以通过 curl + 连接 正常访问
curl 127.0.0.1:9081/xxxxx

# 如果外网也是可以去进行连接的,如果连接不了,可以在 ECS 后台--安全组--安全组规则--入方向 里面加上相应的端口,比我的这个是 9081

三、本机Jmeter 安装及其配置 

        1、本机 JDK 和Jmeter安装和配置

四、云端influxdb安装及其配置

        1、influxdb 安装

        

# 通过 docker pull 安装 influxdb,推荐版本 1.8.3
docker pull influxdb:1.8.3

# 查看 influxdb 镜像是否安装完成
docker images

# 创建 influxdb 容器
docker run -d --name myinfluxdb -p 9083:8086 influxdb:1.8.3

# 通过 docker ps 或者 docker ps -a 查看 influxdb 容器是否正常
docker ps

# 进入 容器内部,通过 docker exec -it 容器名 /bin/bash
docker exec -it myinfluxdb /bin/bash

# 进入 influx
influx

# 查看当前数据库
show databases;

# 创建数据库
create database jmeter;

# 使用当前数据库;
use jmeter;

# 查询表中的值
select * from jmeter;

# 查看数据库中的表
show measurements;

# 退出 influx 数据库
exit

# 退出 myifluxdb 容器
exit

        2、Jmter 配置 influxdb

        1️⃣ 在“线程组”下添加-->“监听器”-->“后置监听器”

        2️⃣ 后端监听器实现 选择:org.apache,jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient

        3️⃣ influxdbUrl:ECS 的外网地址+myinfluxdb 宿主机的端口

        4️⃣ measurement:在 influx 中创建的表

五、云端Grafana安装及其配置

        1、Grafana 安装

        

# 通过 docker pull 安装 Grafana,默认最新的
docker pull grafana

# 查看 grafana 镜像是否安装完成
docker images

# 创建 grafana 容器
docker run -d --name my-grafana -p 3001:3000 grafana

# 通过 docker ps 或者 docker ps -a 查看 grafana 容器是否正常
docker ps

        2、Grafana 配置

        1️⃣ 本机浏览器访问 ECS外网 IP:3001,这里的 3001 是对应上述的 grafan 里面的宿主机的端口

        2️⃣ 默认登录账号和密码都是:admin,登录后会要求修改登录密码

        3️⃣ 配置influxdb 的数据源

        4️⃣ 配置仪表盘

常用dashboard模板地址: https://grafana.com/grafana/dashboards/

通过Dashboard ID 或者 JSON导入 grafana 的 bashboard

        5️⃣ 使用仪表板并加载数据源

六、整体实践

        jmeter 跑脚本-->通过 jmeter 中的“后端监听器”将数据保存到:influxdb 中的数据库“jmeter-->grafana 调取 influx 中数据库“jmeter”中的数据通过 dashboards进行展示。

FAQ:

        报错1:Docker mysql和jar包报错com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

        答:jar 包不对,换了一个,和本次的实验没有关系。

        报错 2:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

        答:没有找到解决办法,因为本次没有用到自己的 mysql

        报错 3:org .apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:7890 /127.0.0.1 failed: Connection refused

        答:重启 jmeter即可。因为经常开启代理导致的。

        报错 4:容器启用不了,查询日志报:database or disk is full

        答:通过一下命令解决问题

# 查看系统磁盘信息
df -h

# 查看当前目录大小,-s参数表示只显示总和,-h参数表示以人类可读的方式显示。
du -sh ./*

# 进入占用很大的目录,再多次使用du 命令查看当前目录下的所有文件的大小
du -sh *

# 最好百度查询一下那些是可以删除的,一般是/var/log M 目录下的文件过大,使用 rm 命令删除
rm -f xx 文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值