jmeter全面总结-7-服务端性能数据收集, prometheus 普罗米修斯,grafana
再次系统的整理一下深入一下性能测试
前言
之前我们有用到top、free、iostat等等命令,去监控服务器的性能,但是这些命令,我们只针对单台服务器进行监控,通常我们线上都是一个集群的项目,难道我们需要每一台服务器都去敲命令监控吗?这样显然不是符合逻辑的,Linux中就提供了一个集群监控工具 – prometheus。
Promethues 是一款开源系统监控和警报工具。使用 Go 语言开发,有各种exporter 用来收集服务器性能数据。
我们通过 Promethues 来监控压测时服务端的性能
prometheus 监控原理
1、prometheus :虽然说是监控平台,但是实际上是一套数据库
2、mysql_exporter: 可以理解成程序或者软件,他是工作在我们要监控的目标服务器上,主要是用于监控mysql的数据。
3、node_exporter: 他的作用主要是收集性能测试的数据,如cpu、内存磁盘网络等信息,然后将数据保存到prometheus,相当于将数据存入到数据库中。
4、prometheus 只能用于做数据存储,不能做展示,因此我们需要用到grafana组件。
5、grafana 主要是用于数据展示,并且可以做到定时读取数据
这个exporter,扩展
如果监控mysql,就可以使用mysql的扩展
如果监控redis,就可以使用redis的扩展
一,部署prometheus
第一步,拉取镜像
下载docker镜像
docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana
第二步:启动监控Linux的exporter
docker run -d -p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter
exporter测试访问地址
http://localhost:9100/metrics
第三步:部署prometheus
部署,还是使用docker部署
首先我们需要创建存放prometheus的文件目录
注意,部署之前,需要我们手动配置一个yaml文件
在github上面
配置文件:
https://github.com/prometheus/prometheus/blob/main/documentation/examples/prometheus.yml
新建一个文件prometheus.yaml ,然后运行的时候挂载这个yaml
这里要特别说明下,这里涉及一个坑点,小编我就猜坑了,特此记录下。
`在scrape_configs配置项下添加Linux监控的job,其中node_expore的IP千万不要使用localhost,因为使用localhost或者127.0.0.1都是去访问普罗米修斯容器的本身;就会报node_exporter 提示错误 Get “http://localhost:9100/metrics 20”: dial tcp 127.0.0.1:9100: connect: connection refused的错误
运行:
启动prometheus(将docker的配置文件映射到部署服务器)
docker run -d \
-p 9090:9090 \
-v /Users/liqian/PycharmProjects/jmeter_files/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
prometheus测试访问地址
http://localhost:9090/graph
运行起来之后一个web网站
1.点击菜单栏“Status-Targets”,看到页面中有如下node节点,代表prometheus和node_exporter链接成功,
2.这里可以看到,/opt/prometheus/prometheus.yml 中的 1 个 job 都已经 UP
第二步,配置监控节点
上面使用docker启动了一个节点监控的方式,
现在使用下载压缩包,然后启动监控的方式,这样没有docker也是可以监控的,
压缩包很小,不到10M
github上面有很多的扩展
我们使用node-exporter,节点监控,这是专门监控主机性能的
我们要监控什么节点,就要在这个节点安装这个扩展,
怎么安装?
先下载,有不同的服务器架构,选择不同的版本,我们使用了Linux版本的
进入文件夹,里面有有一个可执行文件,可以./node-exporter直接执行,
如果你想要改端口号,就使用 --web.listen-address配置别的端口,
如果你想要后台运行,就使用nohub启动的方式,
成功监控,就会显示两个节点
二,配置grafana
1.在浏览器访问:http://localhost:3000/
2.输入用户名/密码:admin/admin登录 ,首次会让你设置密码。如果不设置的话,可以直接点击skip
配置influxdb收集服务器数据
我们之前配置influxdb是收集jmeter的性能数据,
我们现在配置influxdb是收集服务器数据,
3.登录之后,会显示下面的页面,点击添加数据源,选择prometheus
直接添加监控的服务器ip+端口号,我们之前配置的是默认端口9090,添加点击保存即可,其他的都可以不填。
配置prometheus面板,
也是第三方的,开源的
配置prometheus,
https://grafana.com/grafana/dashboards/8919
我们可以导入监控模板
打开 grafana 官网,查找官网提供的 prometheus 监控模板
点击 Linux 服务器监控的中文模板,记录该模板的 id:8919
将数据更新频率设置为 5s,展示最近 5 分钟的数据,就可以看到实时的、最近 5 分钟的各项性能指标。包含了 CPU、Load、内存、网络、磁盘、IO 耗时等指标。监控数据永久保存,可以随时查看任意时间点内的历史统计数据,非常方便。
关注网络指标
实际观察的时候会发现,负载机的网络已经占满了,所以需要多台负载机,可能一个负载机的网络已经暂满了,就不能持续发送请求了,
现象,如果压力已经比较大了,但是cpu的占用上不去,可能就是网络的问题,