四、prometheus监控体系
官网下载:https://prometheus.io/download/
4.1prometheus安装部署
proetheus是部署在独立的服务器上,可以跟grafana部署在同一台服务器上
这里将文件放在192.168.1.3服务器上
创建目录:mkdir proetheus,用MobaXterm工具将安装包放到这个目录里面
解压文件:tar -zxvf prometheus-2.41.0.linux-amd64.tar.gz
解压后的目录结果:
启动文件为:prometheus
配置文件为:prometheus.yml
前台启动./prometheus
后台启动:
nohup /prometheus/prometheus-2.41.0.linux-amd64/prometheus --config.file=
prometheus.yml >prometheus.log 2>&1&
其中:prometheus/prometheus-2.41.0.linux-amd64/prometheus 为你自己的prometheus解压后prometheus启动文件所在路径
prometheus.log:我自己命名的日志文件名称
查看日志文件tail - f prometheus.log
发现这个:msg="Server is ready to receive web requests.",表示后台启动成功
访问方式:默认端口:9090
iptables -I INPUT -p tcp --dport 9090 -j ACCEPT #启动9090端口
firewall-cmd --add-port=9090/tcp --permanent #配置防火墙
firewall-cmd --reload #更新防火墙规则
在浏览器中输入装prometheus的服务器地址加9090端口
表示安装成功
4.2被监控服务器装proetheus的exporter
这里监控java应用服务器:192.168.1.5,创建对应的目录,解压
前台启动:./node_exporter
后台运行:nohup ./node_exporter >node_exporer.log 2>&1 &
查看日志:tail -f node_exporer.log
输出:msg="Listening on"表示成功
为例避免因为防火墙和端口,这里对配置9100端口进行配置
iptables -I INPUT -p tcp --dport 9100 -j ACCEPT #启动9100端口
firewall-cmd --add-port=9100/tcp --permanent #配置防火墙
firewall-cmd --reload #更新防火墙规则
4.3prometheus配置文件配置
增加内容:
#以下为新增内容,有多个服务器,配置多个
-job_name="192.168.1.5_liunx服务器"
static_configs:
- targets: ["192.168.1.5:9100"]
配置完毕,重启
找到进程,杀死,然后重启
ps -ef |grep prometheus
kill -9 进程ID
4.4 grafana配置
新增数据源,选择prometheus,这个比较简单,输入ip加端口号,保存
然后导入liunx的json监控,最后得到
修改配置文件,启动报错问题
出现这个错误,一定是.yml文件配置出错了,一定要注意缩进,敲不好,就这个文件复制一份到windows上,修改在传过来
4.5 jmeter分布式压测
4.5.1整体架构
4.5.2jmeter执行机 配置
执行机和控制机的统一配置
运行相同版本的jmeter
所有系统上都是用相同版本的java
Jmeter的bin目录下:jmeter.properties文件配置下修改:server.rmi.ssl.disable=flase 改为:
server.rmi.ssl.disable=true
jmeter.properties配置修改(如非必要,不建议调整)
server_port=-1099 RMI注册中心端口,控制通过这个端口才知道怎么发指令给执行机
默认为1099,这个也是控制机需要
server.rmi.port=12347 建议server_port,配置同一个端口
server.rmi.localport=123456 默认没有这个配置,则jmeter会动态占用一个端口,这样你就不方便去配置,所所以使用过程中尽量配置固定段偶,建议也是1099
执行机的启动:windows下,启动 jmeter-server.bat
其它系统jmeter-server
多网卡注意:需要指定一个ip地址:
-Djava.rmi.server.honstname=192.168.1.3(网卡对应的ip地址)
多网卡下,jmeter-server启动后绑定的网卡ip可能是控制机不能访问的,所以需要指定ip
/apacher-jmeter-5.5/bin/jmeter-server -Djava.rmi.server.honstname=192.168.1.3
可能出现的报错:端口被占用:Address already in use:JVM_bind
Problem creating registry:java.rmi.server.ExportException:Por already in use:1099;nested exception is:java.net.BindException:Address already in use:JVM_Bind
解决办法,修改上面的端口为其它数字,例如:123456,12333
注意:尽量不要在一个电脑上运行多个jmeter
不能运行jmeter-server:jmeter-server:Permission denied ,这是因为你解压的jmeter,Liunx不认识这个jmeter-server,需要赋予它执行的权限
chmod +x /apacher-jmeter-5.5/bin/jmeter-server,通过该命令服务jmeter执行权限
4.5.3jmeter控制机配置
控制机就相当于集群压测的大脑,它发送指令给代理机执行脚本任务,代理吧测试结果回传给控制及
jmeter.properties中添加远程执行机的信息
修改remote_hosts的值,添加多个 执行机服务器,以逗号分隔,例如:
Client.rmi.localport=12347这个端口时client控制机用来接收server执行结果反馈的,默认没有这个配置,jmeter会动态占用一个端口,这样不方便去配置,所以使用过程尽量配置固定端口。
启动jmeter界面程序进行检查
通过CLI命令模式集群压测:
如果配置文件中已指定远程执行机,可以通过-r让所有机器执行压测
Jmeter -n -t 脚本.jmx -r
动态指定机器压测(建议这种)jmeter -n -t 脚本.jtl -R IP:端口
注意事项:1.测试依赖的数据文件控制机不发送的 ,请确保这些文件在每个jmeter-server执行机上已存在这些文件
2.为例避免不必要的麻烦,建议关闭防火墙
3.每太机器都会执行脚本,所以,实际运行的线程数=jmeter指定线程数量*执行机器数量
4.6性能测试思路梳理
4.61性能概念
性能测试针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,在场景条件之下执行性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满足既定值
4.6.2性能需求场景
新系统:测试系统的最大容量,主要目的是上线前的容量规划,采购系统验收场景
新功能:测试出系统的最大容量,主要目的是上线前的容量规划,性能相比较以往不下降
性能优化:测试出最大容量,调优到最后
线程数量的预估:
比如1万个用户,有1%的人,在同一秒间使用它,并发用户100/s,大概需要做多少个并发?为什么是5,通过基准测试,1个线程 ,1次请求,得到响应时间50ms,1000MS/50ms=20,1/s能发起 20此请求,需要的线程数:5,针对服务器这里说的是相对并,如果有明确的性能要求,绝对并发为100,则线程数量设为100
明确性能目标的情况
吞吐量/响应时间/并发量三者管理