目录
平台结构
该平台为简化版本(主要简化在项目部分),共计4台云服务器,均位于同一内网中,使用的是阿里云计量付费模式,4C8G配置。
图中黑色方框即为一台独立主机,蓝色方框表示部署在 docker 内部。如果应用程序启用了 Redis,请使用 docker 部署于 Mysql 服务器上。
平台介绍
平台分为四个部分:
- Jmeter 部分为压力机,未进行多机并发压力
- Application 部分为程序主要位置。
- MySql 部分可增加 Reids,为数据部分。
- Grafana、Prometheus、InfluxDB 分别负责数据可视化、存储主机状态数据、存储压力相关数据。
平台基础环境为 JDK、 Docker,理论情况下完全部署到 Docker内。
所有主机操作系统均为 Centos 7.6,Mysql版本 5.7
JDK 安装
一言以蔽之:下载JDK、解压、移动到自己想安装的位置下、设置环境变量、source生效
另外:也可使用仓库下载 OpenJDK
- 下载JDK:官方网站下载JDK,下载时请注意系统版本
#1. 查看当前Linux系统是否已经安装java
rpm -qa | grep -i java
#2. 解压已上传的JDK压缩包,并移动到/usr/local目录下
mkdir /usr/local/study
tar -zxvf /root/jdk-8u361-linux-x64.tar.gz -C /usr/local/study
#3. 测试jdk
/usr/local/study/jdk1.8.0_361/bin/java -version
#4. 配置环境变量
vim /etc/profile
G 跳转到最后一行
i 进入插入模式
export JAVA_HOME=/usr/local/study/jdk1.8.0_361
export PATH=$PATH:$JAVA_HOME/bin
esc 进入命令行模式
:wq! 保存
#5. 更新环境变量
source /etc/profile
#6. 测试
java -version
能够正常打印信息则表示无问题,存在问题请再使用搜索引擎搜索:JDK 安装。
Docker 安装
一言以蔽之:更新仓库源、利用仓库下载
# 更新仓库源 centos 为 yum, Ubuntu 为 apt-get
sudo yum update -y
# 下载指定依赖 yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 配置yum源的代理,类似于maven镜像仓库,加速下载软件 视自己网络情况而定
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装
sudo yum install docker-ce -y
# 启动
systemctl start docker
# 检查
docker -v
Jmeter
Jmeter 安装
Jmeter ,可以从官网地址进行下载,同时可以阅览其中文社区了解更多内容。
压测方式主要是在本地电脑使用可视化界面进行脚本设计,完成后使用 Linux 进行分布式压力测试。
单机 Linux 版本安装如下:
# 1、下载、安装JMeter 链接可以从官网更新为最新的
wget -c https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.5.tgz
# 解压
tar -zxvf apache-jmeter-5.4.1.tgz -C /usr/local/study
cd /usr/local/study/apache-jmeter-5.5
# 2、配置环境变量
输入命令 vim /etc/profile ,在最下面添加如下内容:
export JMETER_HOME=/usr/local/study/apache-jmeter-5.5
export PATH=$JMETER_HOME/bin:$PATH
# 3、保存后,输入命令 ,使修改的配置生效。
source /etc/profile
# 4、测试是否安装成功
jmeter -v
Jmeter 插件安装:
从下载地址下载后,移动到
- 关于Jmeter 插件: 在PC端安装之后,可以同步文件夹到 Linux 环境下,即可完成插件安装。
Jmeter Linux 使用
主要是上传压测脚本到压测服务器,然后执行命令:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
# 常用参数说明
-h 帮助:打印出有用的信息并退出
-n 非 GUI 模式:在非 GUI 模式下运行 JMeter
-t 测试文件:要运行的 JMeter 测试脚本文件
-l 日志文件:记录结果的文件
-r 远程执行:启动远程服务
-H 代理主机:设置 JMeter 使用的代理主机
-P 代理端口:设置 JMeter 使用的代理主机的端口号
-e:测试结束后,生成测试报告
-o:指定测试报告的存放位置
Jmeter 使用
可以查看Jmeter使用教程,学习Jmeter基础操作,学习如何构建基本的测试环境。
可以自行百度: Jmeter 配置后置监听器,设定 InfluxDB 所在的 Ip、端口、数据库即可。
InfluxDB
InfluxDB 安装
一言以蔽之: 拉取 Docker镜像、运行镜像。
# 搜索InfluxDB镜像
docker search influxdb
# 下载
docker pull influxdb:1.8
# 启动,并将 8083 和 8086 端口暴露出来
docker run -d --name influxdb -p 8086:8086 -p 8083:8083 influxdb:1.8
# 进入容器
docker exec -it influxdb /bin/bash
InfluxDB 使用
# 进入 InfluxDB 操作界面
influxdb
# 创建数据库
>create databse jmeter
>show database
# 使用 jmeter 库查看数据 此时应该为空
>use jmeter
>select * from jmeter
此时操作结束,可以使用 Jmeter 进行压力测试 然后再次使用 select
命令查看是否存在数据。
MySql
Mysql 安装
一言以蔽之: 拉取 Docker镜像、运行镜像。
可以使用 yum 等包管理器安装
docker pull mysql:5.7
# -p 端口映射 -v 文件挂载 -e 设置环境变量
docker run -id --name=c_mysql -p 3306:3306 \
-v /root/mysql/logs:/logs \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
通过暴露的端口和映射的文件夹,使用 source
命令完成自己的数据库创建和导入过程。
Application
Application 打包
Springboot 打成 Jar 包最为简单,然后使用 java -jar xxx.jar
进行启动。
Application 启动
SpringMVC 打成 war 包,服务器下载tomcat,然后启动。
具体可以自己百度。
Prometheus
Prometheus 安装
下载解压运行
# 下载
wget -c https://github.com/prometheus/prometheus/releases/download/v2.15.1/prometheus-2.15.1.linux-amd64.tar.gz
# 解压
mkdir /usr/local/study/
tar zxvf prometheus-2.15.1.linux-amd64.tar.gz -C /usr/local/study/
cd /usr/local/study/prometheus-2.15.1.linux-amd64
# 运行
nohup ./prometheus > prometheus.log 2>&1 &
检查 http://ip:9090/targets查看是否启动成功。
node-server 安装
在想要监听的服务器上,需要安装 node-xporter
进行监听。
# 下载
wget -c https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
# 解压
tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz -C /usr/local/study/
# 启动
cd /usr/local/study/node_exporter-0.18.1.linux-amd64
nohup ./node_exporter > node.log 2>&1 &
下载解压启动即可。
检查 http://ip:9100/metrics 查看是否启动成功。
Prometheus 修改配置文件
修改配置文件以配对
- job_name: '这里随意'
static_configs:
- targets: ['ip1:9100','ip2:9100','ip3:9100']
其中 ip1
、ip2
、ip3
等对应其他安装 node-exporter
的主机。端口为 node-exporter
所暴露端口。
配置完成后重启 Prometheus,
ps aux | grep prometheus
kill pid
nohup ./prometheus > prometheus.log 2>&1 &
检查 http://ip:9090/targets等待节点状态刷新,查看是否能看到 Endipoint
及 State
。
Grafana
Grafana 安装
docker pull grafana/grafana
docker run -d --name grafana -p 3000:3000 grafana/grafana
网页端访问http://ip:3000验证部署成功
默认账号密码: admin
、admin
。
Grafana 使用
两步走: 配置数据源、配置模板,即可。
Grafana 配置 InlufxDB
配置数据源
首页找到 DATA SOURCES 选项,点击。
选择InfluxDB 选项,点击。
配置 Name
、URL
、Database
,配置完成后,点击 Save and Check
,如果成功会有绿色提示。
设置模板id
在左侧菜单栏找到 Dashboards
,点击最下面 Import
,开始模板导入。
模板导入共有三种方式:
- 直接输入模板id号
- 直接上传模板json文件
- 直接输入模板json内容
可以通过 Grafana Forum 查看并搜索模板。
推荐模板:
- Apache JMeter Dashboard
- dashboad-ID:5496
- JMeter Dashboard(3.2 and up)
- dashboad-ID:3351
配置好 id 和数据源后,点击 import
即可。
注意: 如果我们修改过表名,也就是在jmeter的Backend Listener的measurement配置(默认为jmeter),这个时候就需要去设置中进行修改,我这里使用的就是默认的,所以无需修改。
Grafana 配置 Prometheus
Prometheus 操作相同,不再赘述。
推荐模板 id:
- Node Exporter for Prometheus Dashboard EN 20201010
- dashboard-ID: 11074
- Node Exporter Dashboard
- dashboard-ID: 16098