hi,我是蛋挞,一个初出茅庐的后端开发,希望可以和大家共同努力、共同进步!
开启掘金成长之旅!这是我参与「掘金日新计划 · 4 月更文挑战」的第 21 天,点击查看活动详情
- 起始标记->项目性能优化:「项目性能优化 | 上」
- 结尾标记->项目性能优化:「项目性能优化 | 上」
压测监控平台
Docker + JMeter + InfluxDB + Grafana + node_exporter
**1 配置Docker环境 **
1)yum 包更新到最新
sudo yum update
2)安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖
的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3)设置yum源为阿里云
配置yum源的代理,类似于maven镜像仓库,加速下载软件。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4)安装docker
sudo yum install docker-ce
5)安装后查看docker版本
docker -v
2安装InfluxDB
1)下载InfluxDB的镜像:
docker pull influxdb:1.8
2)启动InfluxDB的容器,并将端口 8083 和 8086 映射出来
docker run -d --name influxdb -p 8086:8086 -p 8083:8083 influxdb:1.8
3)进入容器内部,创建名为jmeter的数据库:
进入 jmeter-influx 容器
docker exec -it influxdb /bin/bash
- 输入 influx 命令,即可进入 influx 操作界面
- 输入 create database jmeter 命令,创建名为 jmeter 的数据库
- 输入 show databases 命令,查看数据库创建成功
root@517f57017d99:/# influx Connected to http://localhost:8086 version 1.7.10 InfluxDB shell version: 1.7.10
create database jmeter show databases
4)使用JMeter 库, select 查看数据,这个时候是没有数据的:
- 输入 use jmeter 命令,应用刚才创建的数据库
- 输入 select * from jmeter 命令,查询库中有哪些数据
use jmeter select * from jmeter
**3设置JMeter脚本后置监听器
**1)想要将 JMeter的测试数据导入 InfluxDB ,就需要在 JMeter中使用 Backend Listener 配置
2)主要配置说明: implementation 选择 InfluxDB所对应的:
- influxdbUrl:需要改为自己influxdb的部署ip和映射端口,我这里是部署在阿里云服务器,所以就
- 是47.93.59.248,口是容器启动时映射的8086端口,db后面跟的是刚才创建的数据库名称
- application:可根据需要自由定义,只是注意后面在 grafana 中选对即可
- measurement:表名,默认是 jmeter ,也可以自定义
-
use jmeter
-
select * from jmeter
- 1
- 2summaryOnly:选择true的话就只有总体的数据。false会记录总体数据,然后再将每个
- transaction都分别记录
- samplersRegex:样本正则表达式,将匹配的样本发送到数据库
- percentiles:响应时间的百分位P90、P95、P99
- testTitle:events表中的text字段的内容
- eventTags:任务标签,配合Grafana一起使用
注意:云服务器配置开启端口8086
influxdbMetricsSender org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender influxdbUrl http://47.93.59.248:8086/write?db=jmeter application hero_mall_one measurement jmeter summaryOnly false samplersRegex * percentiles 90;95;99 testTitle 压力测试案例01 eventTags
3)运行验证:运行 Jmeter 脚本,然后再次在 influxdb 中查看数据,发现类似下面的数据说明输入导入
成功:
4 安装Grafana
1)下载Grafana镜像:
docker pull grafana/grafana
2)启动Grafana容器,将3000端口映射出来:
docker run -d --name grafana -p 3000:3000 grafana/grafana
3)网页端访问http://47.93.59.248:3000验证部署成功
默认账户密码:admin\admin
4)选择添加数据源
5)找到并选择 influxdb :
6)配置数据源
数据源创建成功时会有绿色的提示:
7)导入模板
模板导入分别有以下3种方式:
- 直接输入模板id号
- 直接上传模板json文件
- 直接输入模板json内容
8)在grafana的官网找到我们需要的展示模板
- Apache JMeter Dashboard
- dashboad-ID:5496
- JMeter Dashboard(3.2 and up)
- dashboad-ID:3351
9)导入模板,我这里选择输入模板id号,导入后如下,配置好模板名称和对应的数据源,然后 import
即可
10)展示设置,首先选择创建的application
**注意: **如果我们修改过表名,也就是在jmeter的Backend Listener的measurement配置(默认为
jmeter),这个时候就需要去设置中进行修改,我这里使用的就是默认的,所以无需修改。
03-安装node_exporter
下载
wget -c github.com/prometheus/… porter-0.18.1.linux-amd64.tar.gz
解压
tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz -C /usr/local/hero/
启动
cd /usr/local/hero/node_exporter-0.18.1.linux-amd64 nohup ./node_exporter > node.log 2>&1 &
注意:在被监控服务器中配置开启端口9100
04-安装Prometheus
1)下载解压运行
下载
wget -c github.com/prometheus/… -2.15.1.linux-amd64.tar.gz
解压
tar zxvf prometheus-2.15.1.linux-amd64.tar.gz -C /usr/local/hero/
运行
nohup ./prometheus > prometheus.log 2>&1 &
2)配置 在prometheus.yml中加入如下配置:
- job_name: 'hero-Linux' static_configs:
- targets: ['172.17.187.78:9100','172.17.187.79:9100','172.17.187.81:9100']
3)测试Prometheus是否安装配置成功
http://47.93.59.248:9090/targets
3)在Grafana中配置Prometheus的数据源:
4)导入Linux系统dashboard
- Node Exporter for Prometheus Dashboard EN 20201010
- dashboard-ID: 11074
- Node Exporter Dashboard
- dashboard-ID: 16098
此文章为4月Day21学习笔记,内容来源于极客时间《Elasticsearch 核心技术与实战》