1. Prometheus收集监控信息
案例:开车要看仪表表看监控信息,生病要量体温
网站上线了,必须清楚用户量,请求执行的平均时间
清楚每台服务器的cpu,内存,磁盘,带宽的使用率
1.2. Prometheus介绍
1.2.1. Prometheus 监控架构模式
如图-1所示。
图-1
1.2.2. 分析
添加依赖
添加配置
测试
1.2.3. 创建被监控mall项目
如图-1所示。
图-1
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
修改application.properties,增加
management.endpoints.web.exposure.include=*
management.metrics.tags.application=mall
创建controller
@RestController
public class UserController {
@RequestMapping("/user/selectAll")
public String selectAll(){
return "selectAll";
}
}
查看度量指标是否集成成功
http://127.0.0.1:8080/user/selectAll http://localhost:8080/actuator/prometheus
查找项目名如图-1所示。
图-1
http_server_requests_seconds_count{application=“typeService”,exception=“None”,method=“GET”,outcome=“SUCCESS”,status=“200”,uri=“/type/selectAll”,} 6.0
1.3. 安装Prometheus
画图分析9090和8080的关系如图-1所示。
图-1
1.3.1. 上传镜像
\课前资料\software\monitor\dockerImage\prometheus.tar上传到/usr/local
1.3.2. 加载镜像
docker images
cd /usr/local
docker load -i prometheus.tar
docker images
1.3.3. 创建容器
mkdir -p /opt/prometheus
cd /opt/prometheus/
touch prometheus.yml
docker run -itd --name prometheus -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /etc/localtime:/etc/localtime:ro prom/prometheus
http://192.168.64.140:9090/ status–>Targets, 如图-1所示。
图-1
1.3.4. 测试如何在虚拟机中访问windows
测试wget作用,打开index.html文件查看内容如图-1所示。
图-1
进入 dos执行ipconfig查看windwos的ip
在windwos浏览器中通过ip地址访问/user/selectAll,如图-1所示。
图-1
1.3.5. 添加配置
拷贝下面内容到/opt/prometheus/prometheus.yml,必须修改最后一行targets中ip地址
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_timeout: 10s
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# SpringBoot
- job_name: 'mall'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['192.168.64.1:8080']
1.3.6. 重启prometheus容器
docker restart prometheus
1.3.7. 查看统计数据
点status查看被监控项目状态,如图-1所示。
图-1
2. Grafana监控tomcat
如图-1所示。
图-1
2.1. 安装grafana
2.1.1. 上传镜像
\课前资料\software\monitor\dockerImage\grafana.tar上传到/usr/local
2.1.2. 加载镜像
docker images
cd /usr/local
docker load -i grafana.tar
docker images
2.1.3. 创建容器
docker run -d --name grafana -p 3000:3000 grafana/grafana:latest
2.2. 访问
http://192.168.64.140:3000/ 默认用户和密码均为admin,如图-1所示。
图-1
在下图中点skip跳过修改密码步骤,如图-1所示。
图-1
2.3. 官网查看仪表盘模板id
模板地址:https://grafana.com/grafana/dashboards
在搜索框中搜索java会检索出相关的模板,选择一个自己喜欢,如图-1所示。
图-1
红框标注的部分就是grafana中需要配置代码,如图-1所示。
图-1
2.4. Grafana中添加数据源
在Data Sources选项中添加数据源如图-1所示。
图-1
图-1
图-1
图-1
图-1
2.5. 导入监控界面
访问http://192.168.64.140:3000/如图-1所示。
图-1
输入dashboard id如图-1所示。
图-1
输入name,选择数据源如图-1所示。
图-1
一开始没有监控信息,显示如下图如图-1所示。
图-1
在下图中选择监控的时间为Last 5 minutes,查看监控结果如图-1所示。
图-1
2.6. 查看以前导入的面板
如图-1所示。
图-1
3. Jmeter压测tomcat
3.1. Jmeter使用
3.1.1. 解压安装
\课前资料\software\测试
如图-1所示。
图-1
3.1.2. 配置中文,外观
如图-1所示。
图-1
图-1
3.1.3. 使用
创建线程组如图-1所示。
图-1
创建http请求如图-1所示。
图-1
添加查看结果如图-1所示。
图-1
添加汇总报告如图-1所示。
图-1
3.1.4. 配置
如图-1所示。
图-1
图-1
第一次250个请求,tomcat要创建线程
第二次250个请求,tomcat不用创建线程
3.2. 压测
先250/s,再500/s,如图-1所示。
图-1
图-1
3.3. QPS计算方式
3.3.1. 概念
qps:每秒请求数
responstTime:处理时间
并发量:同时能处理的请求
3.3.2. 入门案例
大学:每年招5000学生,一个学生在学校学习4年,在校生?50004
每年进来多少人(qps):5000
rt:4
并发量=qpsrt
每年招5000学生,一个学生在学校学习1年,在校生?5000
3.3.3. 画图分析
Qps=1000 rt=1000Ms 并发量=?1000
Qps=1000 rt=2000Ms 并发量=2000
并发量=1000*2
Qps=1000 rt=1Ms 并发量=1
并发量=1000*0.001
3.3.4. Tomcat 并发
一台tomcat 并发是?
1,tomcat 7 ,bio 一个线程只能处理1个用户的访问,线程池中线程是150,并发量是150
2,tomcat8 nio 一个线程能处理多个用户的访问,线程池中线程是150,并发量是150-1000
3.3.5. 算qps
学校能容纳20000学生,学生在校学习4年,每年能招?5000
学校能容纳20000学生,学生在校学习1年,每年能招?20000
Qps=并发量/rt,rt越少,qps越大
并发量是1000 rt是1000Ms,qps=1000
并发量是1000 rt=100ms ,qps=10000
编程的目标是为了提高qps,解决方法是让程序运行快
并发量是1000 rt=1ms ,qps=1000/(1/1000)=100W
3.3.6. 面试题:你的服务器并发量?
单台服务器最高是1000,整个系统取决于服务器数量,有10台服务,整个系统的并发是1000*10=1万,
qps取决于程序执行的时间,rt=2秒。单台服务器qps=500
3.4. 海量用户负载均衡
https://tomcat.apache.org/tomcat-8.5-doc/config/http.html
Tomcat:1万
Nginx:10万
Lvs:50万
F5:1千万
图-1
图-1
3.5. 线程数设置
如图-1所示。
server.tomcat.threads.max=500
最大线程数为200,并发量8000/s
最大线程数为500,并发量8000/s,有异常
图-1