性能测试阶段6之行业流行性能监控工具

http://t.csdn.cn/FcpOt

01流行性能监控工具

  1. Linux自带命令:Vmstat,Top
  2. 机器监控工具: Nmon
  • 物理机监控:Collectd + InfluxDB + Grafana
  1. Docker +Mysql+ Redis一体化监控∶Prometheus + Grafana(node exporter, mysqld_exporter,redis_exporter,自定义exporter,全家桶)
  2. 全链路Tracing 监控:Zipkin

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
系统级分析/调试工具
在这里插入图片描述
在这里插入图片描述

02InfluxDB + Grafana 搭建

2.1 ubuntu docker方式部署

2.1.1 influxDB部署

  1. 安装docker:先切到顶级目录
  • sudo su
  • cd ../..
    	# 关闭docker
    	sudo systemctl stop docker
    	
    	# 卸载旧版本:
    	sudo apt-get purge docker-ce
    	
    	# 安装新版本
    	sudo apt update
    	sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    	curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    	sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    	sudo apt-cache madison docker-ce
    
    	# 根据终端显示的版本选择一个
    	sudo apt install docker-ce=5:19.03.1~3-0~ubuntu-bionic
    	systemctl start docker
    	sudo systemctl start docker
    	sudo systemctl enable docker
    	sudo docker info
    	
    	# 安装nvidia-docker 看业务
    	sudo apt update 
    	sudo apt install nvidia-docker2
    
  1. 下载influxDB镜像:docker pull influxdb

  2. 启动influxDB容器:docker start container id

  3. 将新influxDB容器命名为jmeterdb,执行docker创建容器命docker run -d -p 8086:8086 -p 8083:8083 --name=jmeterdb influxdb

  4. 执行如下命令进入容器内部:docker exec -it jmeterdb bash

  5. 在容器内部创建jmeter数据库,用于收集JMeter发送的压测数据

  6. 执行influx命令进入命令台

  7. 执行类sql语句创建jmeter数据库:create database jmeter;

  8. 创建完jmeter数据库之后执行如下命令验证数据库已经创建成功:show databases;

  9. docker基础命令

    	列出已下载docker镜像: 			|							docker images
    	列出运行中的docker容器: 			|							docker ps
    	列出运行中+已停止docker容器:		|							docker ps -a
    	停止容器:						|							docker stop [docker container id]
    	启动容器:						|							docker start [docker container id]
    	删除容器: 						|							docker rm [docker container id]
    

在这里插入图片描述

2.1.2 Grafana 配置

  1. 部署方法:Docker 部署
  2. 下载镜像: docker pull grafana/grafana
  3. 启动镜像: docker run -d -p 3000:3000 --name=jmeterGraf grafana/grafana
  4. 访问Grafana的控制台链接,验证它已经运行正常
  5. 默认用户名/密码:admin / admin,登录之后请跳过修改密码
  6. 在Grafana中添加数据源
  7. 选择Add data source
  8. 找到InfluxDB
  9. 单击选择该DB
  10. 配置InfluxDB数据源
    - 输入URL : http://[hostname or IP]:8086
    - Access: browser
    - Database:jmeter
    - 其余参数保持默认
  11. 在Grafana内导入JMeter Dashboard
  12. 输入Home Dashboard页面,选择Import
  13. 网上下载jmeter_dashboard.json文件
  14. 将json文本复制/粘贴到paste JSON文本框中
  15. 单击Load按钮导入
  16. DB name中选择InfluxDB
  17. 单击Import按钮完成 Dashboard导入
  18. 打开导入的JMeter Dashboard查看结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 centos docker方式部署

2.2.1 安装docker

2.2.2 influxDB部署

  • InfluxDB是一个用Go语言开发的开源分布式时序数据库,特别适合处理和分析资源监控数据,用于存储压测数据

1. 下载镜像:docker pull influxdb:1.7.10
在这里插入图片描述

2. 新建容器网络:docker network create grafana
在这里插入图片描述

3. 运行容器:

 docker run -d --name=influxdb --network grafana -p 8086:8086 -v ${PWD}/influxdb/:/var/lib/influxdb/ influxdb:1.7.10

在这里插入图片描述

4. 创建数据库

  • 方式1:
    curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE jmeter"
    
  • 方式2:
    • 进入容器:docker exec -it influxdb influx
    • 执行语句:create database jmeter;
      在这里插入图片描述

5. 创建数据库

  • show databases;
  • use jmeter;
  • show measurements;
  • select * from jmeter limit 3;

2.2.2 Grafana 配置

  • 官网:https://hub.docker.com/r/grafana/grafana
  • 度量分析与可视化图标展示工具,可以支持不用种类的数据源,用于将存储于InfluxDB中的数据以图表的形式展示出来

1. 下载Grafana镜像:docker pull grafana/grafana:6.6.2
在这里插入图片描述
2. 运行容器:

docker run -d --name grafana --network grafana -p 3000:3000 grafana/grafana:6.6.2

在这里插入图片描述

  • 查看容器ip:
    docker exec -it influxdb sh
    cat /etc/hosts
    
    在这里插入图片描述
    在这里插入图片描述

3. 默认登陆账号: admin,密码: admin。
在这里插入图片描述在这里插入图片描述
4. 配置数据源

URL: http://influxdb:8086
Database: jmeter
Min time interval: 5

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5. 导入dashboard

在这里插入图片描述
在这里插入图片描述

2.3 jmeter配置

在JMeter中添加Backend Listener组件,用于收集数据并发送给influxdb

  • Backend Listener implementation中选择
    InfluxdbBackendListenerClient(注意:必须使用jmeter 5.0以上版本,否则需要单独装插件才可以看到这个组件)
  • influxdbURL中将实际的influxdb hostname填写进去
  • 在application中填写应用名称
  • testTitle中填写测试标题
  • 其余配置保持不变
  • 运行JMeter,然后在influxdb中检验是否已经能够接受到数据
  • 在influxdb命令台中使用查询语句,检查是否已经能够收到数据
    在这里插入图片描述
    在这里插入图片描述

2.4 执行jmeter脚本

  1. 方式1:gui运行
    在这里插入图片描述
  2. 命令行方式运行
    jmeter.sh -n -t /home/centos7/Desktop/jmeter_scripts/HTTP请求.jmx
    在这里插入图片描述

2.5 报告查看

1. 查看结果树
在这里插入图片描述
2. 聚合报告
在这里插入图片描述
2. grafana报告
在这里插入图片描述

03Prometheus + Grafana

3.1 安装java和配置环境变量

参考链接1:https://www.jb51.net/article/184780.htm
参考链接2:https://blog.csdn.net/slw213106/article/details/121854308

3.1.1 查看CentOS自带JDK是否已安装

  • yum list installed |grep java
    在这里插入图片描述

3.1.2 卸载CentOS系统自带Java环境

  • 卸载JDK相关文件输入:yum -y remove java-1.8.0-openjdk*
    在这里插入图片描述
  • 卸载tzdata-java输入:yum -y remove tzdata-java.noarch
    在这里插入图片描述

3.1.3 yum方式安装jdk

  • 查看yum库中的Java安装包:yum -y list java*
    在这里插入图片描述

  • 将java-1.8.0的所有相关Java程序都安装上:yum -y install java-1.8.0-openjdk*
    在这里插入图片描述
    在这里插入图片描述

3.1.4 查看刚安装的Java版本信息

  • java -version
  • javac -version
    在这里插入图片描述

3.1.5 查看java安装路径

[root@centos7 centos7]# which java
/usr/bin/java
[root@centos7 centos7]# ls -lrt /usr/bin/java
lrwxrwxrwx. 1 root root 22 Oct 23 23:26 /usr/bin/java -> /etc/alternatives/java
[root@centos7 centos7]# ls -lrt /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 Oct 23 23:26 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.el7_9.x86_64/jre/bin/java

在这里插入图片描述

3.1.6 配置环境变量(可跳过)

  • ls /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.el7_9.x86_64/
    在这里插入图片描述
  • vi /etc/profile
#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.el7_9.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

在这里插入图片描述
在这里插入图片描述

3.2 安装docker

1. 查看是否已安装docker:yum list installed |grep docker
在这里插入图片描述

2. 设置 stable 镜像仓库

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

在这里插入图片描述

3. 更新 yum 软件包索引

yum makecache fast

在这里插入图片描述

4. 列出docker ce的版本

yum list docker-ce.x86_64  --showduplicates | sort -r

在这里插入图片描述

4. 安装docker ce版本(默认最新版本)

yum install docker-ce

在这里插入图片描述
在这里插入图片描述

5. 启动docker

systemctl start docker
docker info # 查看镜像信息

在这里插入图片描述

3.3 配置node_exporter

3.3.1 下载:

wget -c https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

3.3.2 解压:

tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz
mv node_exporter-0.18.1.linux-amd64 /usr/local/
/usr/local/node_exporter-0.18.1.linux-amd64/node_exporter --help

在这里插入图片描述
在这里插入图片描述

3.3.3 启动

/usr/local/node_exporter-0.18.1.linux-amd64/node_exporter &

在这里插入图片描述

3.3.4 查看启动进程和端口号

  • ps -ef |grep node_exporter
  • netstat -naop |grep 9100 或 netstat -lnp |grep 9100
  • kiss -9 pid # 杀进程(第二列值)
    在这里插入图片描述
    在这里插入图片描述

3.4 安装和配置promethus

3.4.1 下载

wget -c https://github.com/prometheus/prometheus/releases/download/v2.15.1/prometheus-2.15.1.linux-amd64.tar.gz

3.4.2 解压

 tar zxvf prometheus-2.15.1.linux-amd64.tar.gz
mv prometheus-2.15.1.linux-amd64 /usr/local/

在这里插入图片描述

3.4.3 修改prometheus.yml配置

  • vi /usr/local/prometheus-2.15.1.linux-amd64/prometheus.yml
  - job_name: 'centos7'
    static_configs:
    - targets: ['192.168.88.133:9100']

在这里插入图片描述

3.4.4 启动prometheus

  • 进入prometheus目录:
cd /usr/local/prometheus-2.15.1.linux-amd64/
  • 启动:
./prometheus --config.file="prometheus.yml" &

在这里插入图片描述
在这里插入图片描述

3.4.6 prometheus启动常见报错

1. 报错信息:“opening storage failed: lock DB directory: resource temporarily unavailable”

  • 解决方案:直接删除lock目录
    rm -rf /data/lock
    在这里插入图片描述
    在这里插入图片描述

2. 报错信息:“error starting web server: listen tcp 0.0.0.0:9090: bind: address already in use”
在这里插入图片描述

  • 解决方案:
    • 安装lsof:yum install lsof -y
    • 获取9090端口pid:lsof -i:9090
    • 强制杀死进程:kill -9 pid
      在这里插入图片描述

3.5 安装&配置grafana

3.5.1 安装grafana

1. docker 方式安装
  • 拉取镜像并启动容器

    docker run -d --name=grafana -p 3000:3000 grafana/grafana
    

    在这里插入图片描述

  • 访问:http://192.168.88.133:3000/login

    • 初始账号密码:admin/admin
      在这里插入图片描述
2. 本地安装
# yum localinstall grafana-6.5.2-1.x86_64.rpm
# /sbin/chkconfig --add grafana-server        # 配置开机启动
# systemctl daemon-reload						# 重载所有修改过的配置文件
# systemctl start grafana-server				     # 启动grafana-server
# systemctl status grafana-server				# 查看状态
# sudo systemctl enable grafana-server.service	# 设置开机启动
# rpm -e --nodeps # 删除grafana

3.5.2 配置grafana数据源

1. 点击Add data source
在这里插入图片描述

2. 配置数据源
在这里插入图片描述
在这里插入图片描述

3.5.3 导入dashboard

  • ID:11074/8919
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.6 安装redis

3.6.1 docker方式(本文采用此方式)

docker search redis
docker run -d --name redis -p 6379:6379 redis # 拉取镜像并启动容器
docer exec -it redis redis-cli # 进入容器并连接

在这里插入图片描述
在这里插入图片描述

3.6.2 源码包方式

1. 下载

wget -c http://download.redis.io/releases/redis-5.0.7.tar.gz

2. 解压

tar zxvf redis-5.0.7.tar.gz

3. 编译

cd redis-5.0.7
make

3.7 安装nginx

# docker search nginx
# docker pull nginx
# docker run -d -p 80:80 --name d7group-nginx -v /usr/local/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/dockerfile/nginx/logs:/var/log/nginx:rw f7bb5701a33c

安装centos image

docker pull centos:7.2.1511

在这里插入图片描述

3.8 安装mysql

3.8.1 下载镜像

docker pull mysql
在这里插入图片描述

3.8.2 启动镜像

docker run  --name mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf/conf.d:/etc/mysql/conf.d \
-p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

在这里插入图片描述

3.8.3 用户授权

1. 登录已启动的MySQL容器
docker exec -it mysql bash
在这里插入图片描述
2. 使用启动命令中-e MYSQL_ROOT_PASSWORD设置的密码,登录MySQL
mysql -uroot -p
在这里插入图片描述

3. 执行权限命令

  • 方案1:
    create user root@'192.168.88.133' identified by '123456';
    grant all privileges on databas_name.* to root@'192.168.88.133';
    ALTER USER 'root'@'192.168.88.133' IDENTIFIED WITH mysql_native_password BY '123456';
    
  • 方案2:
    alter user 'root'@'%' identified by '123456'; # 修改root用户密码
    alter user 'root'@'%' identified with mysql_native_password by '123456'; # 创建用户
    grant all on *.* to 'root'@'%';  # 并给root用户分配权限
    flush privileges; # 配置生效
    

在这里插入图片描述

3.8.4 连接校验

在这里插入图片描述
在这里插入图片描述

3.9 安装tomcat

1. 解压:tar zxvf tomcat.tar.gz
在这里插入图片描述
在这里插入图片描述
2. 编辑application.yaml文件修改mysql和redis

  • vi vi /usr/local/tomcat/blog/ROOT/WEB-INF/classes/application.yaml
    在这里插入图片描述
    在这里插入图片描述

3. 修改dockerfile文件

  • vi /usr/local/tomcat/tomcat8/Dockerfile
    在这里插入图片描述

4. 构建tomcat imagess
在这里插入图片描述
5. 启动容器

docker run -d -p 9004:8080 -p 9995:9995 --name 7dgroup-tomcat -v /usr/local/tomcat/blog/ROOT/:/apache-tomcat-8.5.9/webapps/ROOT/ -v /usr/local/tomcat/blog/logs:/apache-tomcat-8.5.9/logs:rw -e CATALINA_OPTS="-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9995 
-Djava.rmi.server.hostname=192.168.88.135 -Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.rmi.port=9995" 5bd17a80d903

在这里插入图片描述
5. 进入容器
docker exce -it 58221ba31525 /bin/bash
在这里插入图片描述

3.10 创建influxdb

3.10.1 docker方式

1. 拉取镜像
docker pull influxdb
在这里插入图片描述
2. 启动容器
docker run -d --name=influxdb -p 8086:8086 -v /usr/local/influxdb/:/var/lib/influxdb/ influxdb:1.8.6
在这里插入图片描述
3. 进入容器
docker exec -it influxdb influx
在这里插入图片描述
4.
创建数据库:create database jmeter;
在这里插入图片描述

3.10.2 RPM方式

# yum localinstall influxdb-1.7.9.x86_64.rpm
# systemctl start influxdb				     #启动grafana-server
# systemctl status influxdb				#查看状态

3.11 安装jmeter&配置数据源


版权声明:本文为weixin_45912307原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。