性能测试

Nginx ,Redis ,mysql ,ES + kibana,RabbitMQ, kafka + zookeeper , rocketmq, MongoDB Memcached wireshark ,HLS等常用媒体流协议,

全链路系统pinPoint、SkyWalking, Nmon、Nagios、prometheus+grafana,visualvm 监控工具

对jvm,能够解析GC日志, 线程分析, 了解JVM内存管理机制、监控和调优

熟悉Android系统框架,对CPU、GPU调度,内存、进程管理,存储性能,手机老化等手机软硬件运行机制、工作原理有深入了解

熟悉高可用,负载均衡的应用的测试

监控平台prometheus+grafana

介绍Prometheus

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。

Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。

Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。

输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。

与其他监控系统相比,Prometheus的主要特点是:

一个多维数据模型(时间序列由指标名称定义和设置键/值尺寸)。
非常高效的存储,平均一个采样数据占~3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
一种灵活的查询语言。
不依赖分布式存储,单个服务器节点。
时间集合通过HTTP上的PULL模型进行。
通过中间网关支持推送时间。
通过服务发现或静态配置发现目标。
多种模式的图形和仪表板支持。

Prometheus架构概览

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vUFmA76E-1647763839396)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106140717759.png)]

它的服务过程是这样的Prometheus daemon负责定时去目标上抓取metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。

Prometheus:支持通过配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目标。支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。

Alertmanager:是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

PushGateway:这个组件是支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。

Prometheus的数据模型

Prometheus从根本上所有的存储都是按时间序列去实现的,相同的metrics(指标名称) 和label(一个或多个标签) 组成一条时间序列,不同的label表示不同的时间序列。为了支持一些查询,有时还会临时产生一些时间序列存储。

metrics name&label指标名称和标签

每条时间序列是由唯一的”指标名称”和一组”标签(key=value)”的形式组成。

指标名称:一般是给监测对像起一名字,例如http_requests_total这样,它有一些命名规则,可以包字母数字之类的的。通常是以应用名称开头监测对像数值类型单位这样。例如:push_total、userlogin_mysql_duration_seconds、app_memory_usage_bytes。

标签:就是对一条时间序列不同维度的识别了,例如一个http请求用的是POST还是GET,它的endpoint是什么,这时候就要用标签去标记了。最终形成的标识便是这样了:http_requests_total{method=”POST”,endpoint=”/api/tracks”}。

Prometheus四种数据类型

Counter

Counter用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。

例如:http_response_total{method=”GET”,endpoint=”/api/tracks”} 100,10秒后抓取http_response_total{method=”GET”,endpoint=”/api/tracks”} 100。

Gauge

Gauge常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置。

例如: memory_usage_bytes{host=”master-01″} 100 < 抓取值、memory_usage_bytes{host=”master-01″} 30、memory_usage_bytes{host=”master-01″} 50、memory_usage_bytes{host=”master-01″} 80 < 抓取值。

Histogram

Histogram(直方图)可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供count和sum全部值的功能。

例如:{小于10=5次,小于20=1次,小于30=2次},count=7次,sum=7次的求和值。

Summary

Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。

例如:count=7次,sum=7次的值求值。

它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。

Exporter

​ Exporter 将监控数据采集的端点通过 HTTP 服务的形式暴露给 Prometheus Server,Prometheus Server 通过访问该 Exporter 提供的 Endpoint 端点,即可获取到需要采集的监控数据。RocketMQ-Exporter 就是这样一个 Exporter,它首先从 RocketMQ 集群采集数据,然后借助 Prometheus 提供的第三方客户端库将采集的数据规范化成符合 Prometheus 系统要求的数据,Prometheus 定时去从 Exporter 拉取数据即可

安装运行Prometheus(二进制版)

介绍如何使用Prometheus和Grafana对MySQL服务器性能进行监控

#用到了以下两个exporter:
node_exporter – 用于机器系统数据收集 (port:9100)
mysqld_exporter – 用于MySQL服务器数据收集 (port:9104)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hPgWyTUV-1647763839400)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106143127748.png)]

安装Prometheus

1:首先安装GO

[root@localhost ~]# yum install go
[root@localhost ~]#  go version
go version go1.15.7 linux/amd64

2:下载安装Prometheus

(https://prometheus.io/download/)

$ wget https://github.com/prometheus/prometheus/releases/download/v2.3.0/prometheus-2.24.1.linux-amd64.tar.gz
$ tar zxvf prometheus-2.24.1.linux-amd64 -C /usr/local/
$ ln -sv prometheus-2.24.1.linux-amd64/ /usr/local/prometheus
$ cd /usr/local/prometheus

**3: 修改配置文件prometheus.yml **

(替换你要监控的IP地址)

# my global config
global:scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'prometheus'static_configs:- targets: ['192.168.0.200:9090']labels:instance: prometheus- job_name: 'linux'static_configs:- targets: ['192.168.0.200:9100']labels:instance: db- job_name: 'mysql'static_configs:#数据库主机的IP,端口则是对应的 mysqld_exporter的监听端口- targets: ['192.168.0.200:9104']labels:instance: 192.168.0.200- job_name: 'java' # (java-jvm)scrape_interval: 30sstatic_configs:- targets: ['192.168.0.200:3010']

192.168.0.200 是我们数据库主机的IP,端口则是对应的exporter的监听端口

4: 启动Prometheus

cd /usr/local/prometheus
nohup ./prometheus --config.file=prometheus.yml &
level=info ts=2021-11-06T06:49:17.279Z caller=main.go:326 msg="No time or size retention was set so using the default time retention" duration=15d
level=info ts=2021-11-06T06:49:17.295Z caller=main.go:364 msg="Starting Prometheus" version="(version=2.24.1, branch=HEAD, revision=e4487274853c587717006eeda8804e597d120340)"
level=info ts=2021-11-06T06:49:17.295Z caller=main.go:371 fd_limits="(soft=65536, hard=65536)"
level=info ts=2021-11-06T06:49:17.295Z caller=main.go:372 vm_limits="(soft=unlimited, hard=unlimited)"
level=info ts=2021-11-06T06:49:17.304Z caller=web.go:530 component=web msg="Start listening for connections" address=0.0.0.0:9090
level=info ts=2021-11-06T06:49:17.306Z caller=main.go:738 msg="Starting TSDB ..."#重启prometheus
#/etc/init.d/prometheus-server restart

Prometheus内置了一个web界面,我们可通过http://monitor_host:9090进行访问 (http://192.168.0.200:9090)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0k97ZNh8-1647763839401)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106145414664.png)]

在Status->Targets页面下,我们可以看到我们配置的两个Target,它们的State为DOWN

5:下载并安装exporter

node_exporter – 用于机器系统数据收集 (port:9100)
mysqld_exporter – 用于MySQL服务器数据收集 (port:9104)

搜索需要的exporter:

https://github.com/prometheus/?q=exporter&type=&language=&sort=

$ wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/ node_exporter-1.0.1.linux-amd64.tar.gz
$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz

安装运行node_exporter

https://grafana.com/api/dashboards/8919/revisions/24/download (导入 linux node 仪表盘)

$ tar xvf node_exporter-1.0.1.linux-amd64.tar.gz -C /usr/local/
$ cd /usr/local/node_exporter
$ nohup ./node_exporter &
level=info ts=2021-11-06T07:06:27.290Z caller=node_exporter.go:191 msg="Listening on" address=:9100
level=info ts=2021-11-06T07:06:27.290Z caller=tls_config.go:170 msg="TLS is disabled and it cannot be enabled on the fly." http2=false

安装运行mysqld_exporter

https://grafana.com/grafana/dashboards/7362 (导入 Mysql仪表盘)

mysqld_exporter需要连接到Mysql,所以需要Mysql的权限,我们先为它创建用户并赋予所需的权限.

mysql> grant all on cactidb.* to dbuser@'localhost' identified by '123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
解决方法:
先刷新一下权限表。
mysql> flush privileges;
CREATE USER 'mysql_monitor'@'192.168.0.200' IDENDIFIED BY 'mysql_monitor';
mysql> GRANT REPLICATION CLIENT,PROCESS ON *.* TO 'mysql_monitor'@'192.168.0.200' identified by 'mysql_monitor';
mysql> GRANT SELECT ON *.* TO 'mysql_monitor'@'192.168.0.200';

创建.my.cnf文件并运行mysqld_exporter

$ cat /usr/local/mysqld_exporter/.my.cnf
[client]
user=mysql_monitor
password=mysql_monitor
ip=192.168.0.200
port=3306$ tar xvf mysqld_exporter-0.10.0.linux-amd64.tar.gz -C /usr/local/
$ cd /usr/local/mysqld_exporter
[root@localhost mysqld_exporter]# nohup ./mysqld_exporter --config.my-cnf="./.my.cnf" &
INFO[0000] Starting mysqld_exporter (version=0.12.1, branch=HEAD, revision=48667bf7c3b438b5e93b259f3d17b70a7c9aff96)  source="mysqld_exporter.go:257"
INFO[0000] Build context (go=go1.12.7, user=root@0b3e56a7bc0a, date=20190729-12:35:58)  source="mysqld_exporter.go:258"
INFO[0000] Enabled scrapers:                             source="mysqld_exporter.go:269"
INFO[0000] Listening on :9104                            source="mysqld_exporter.go:283"

安装运行Grafana

Grafana安装配置

$ wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-7.3.7-1.x86_64.rpm
$ sudo yum localinstall grafana-7.3.7-1.x86_64.rpm

查看配置文件grafana.ini

/etc/grafana/grafana.ini , 修改dashboards.json段落下两个参数的值

[dashboards]
# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1
;versions_to_keep = 20
default_home_dashboard_path = /var/lib/grafana/dashboards

安装仪表盘(Percona提供)

$ git clone https://github.com/percona/grafana-dashboards.git
$ cp -r grafana-dashboards/dashboards /var/lib/grafana

运行以下命令为Grafana打个补丁,不然图表不能正常显示:

$ sed -i 's/expr=\(.\)\.replace(\(.\)\.expr,\(.\)\.scopedVars\(.*\)var \(.\)=\(.\)\.interval/expr=\1.replace(\2.expr,\3.scopedVars\4var \5=\1.replace(\6.interval, \3.scopedVars)/' /usr/share/grafana/public/app/plugins/datasource/prometheus/datasource.js
$ sed -i 's/,range_input/.replace(\/"{\/g,"\\"").replace(\/}"\/g,"\\""),range_input/; s/step_input:""/step_input:this.target.step/' /usr/share/grafana/public/app/plugins/datasource/prometheus/query_ctrl.js

运行Grafana服务

$ systemctl daemon-reload
$ systemctl enable grafana-server
$ systemctl start grafana-server
$ systemctl status grafana-server

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G6bbNW1F-1647763839402)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106161102751.png)]

访问Grafana网页界面

通过http://monitor_host:3000访问Grafana网页界面(默认登陆帐号/密码为admin/admin) http://192.168.0.200:3000 修改为:admin / 123456

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dWn25yEU-1647763839403)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106163013961.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z0kKhtkp-1647763839403)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106162941008.png)]

压测时指标监控

压测执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wNo0vzOK-1647763839404)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106164714634.png)]

系统命令监控

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ItIuIaV0-1647763839405)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106164620522.png)]

应用服务器主机监控

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wOjyjw21-1647763839405)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106164859953.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5MgqpxJp-1647763839406)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106164930563.png)]

mysql服务器指标监控

https://grafana.com/grafana/dashboards/7362 (导入 Mysql仪表盘)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T89aEH3v-1647763839407)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106165043855.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7SSZs3wE-1647763839407)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106165127282.png)]

JVM监控

JMX Exporter下载

https://github.com/prometheus/jmx_exporter /jmx_prometheus_javaagent-0.16.1.jar

它是Prometheus官方组件,作为一个JAVA Agent来提供本地JVM的metrics,并通过http暴露出来。这也是官方推荐的一种方式,可以获取进程的信息,比如CPU和内存使用情况。Jmx_exporter是以代理的形式收集目标应用的jmx指标,这样做的好处在于无需对目标应用做任何的改动。
运行JMX exporter的方式:

java -javaagent:/usr/local/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=3010:/usr/local/jmx_exporter/simple-config.yml  -jar springboot.jar

下载 jmx_prometheus_javaagent-0.16.1.jar 目前最新版是0.16.1,下载链接为:

https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar

JMX Exporter配置

新建配置文件simple-config.yml

[root@localhost jmx_exporter]# cd /usr/local/jmx_exporter/
[root@localhost jmx_exporter]# vi simple-config.yml
lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
blacklistObjectNames: []
rules:- pattern: 'java.lang<type=OperatingSystem><>(committed_virtual_memory|free_physical_memory|free_swap_space|total_physical_memory|total_swap_space)_size:'name: os_$1_bytestype: GAUGEattrNameSnakeCase: true- pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'name: os_$1type: GAUGEattrNameSnakeCase: true

使用JMX Exporter插件收集数据,需要改成这样:

修改prometheus.yml

修改配置文件,增加一个job_name

最后一行增加

#cd /usr/local/prometheus- job_name: 'java'scrape_interval: 30sstatic_configs:- targets: ['192.168.0.200:3010']

重启prometheus

/etc/init.d/prometheus-server restart
#或者重启prometheus

启动java应用

#注意:3010是代理端口,可以随意指定
nohup java   -javaagent:/usr/local/jmx_exporter/jmx_prometheus_javaagent-0.16.1.jar=3010:/usr/local/jmx_exporter/simple-config.yml  -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:gc.log -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar springboot_demo-0.0.1-SNAPSHOT.jar &

查看应用是否启动:

http://192.168.0.200:9090/classic/targets

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z5NpkJzJ-1647763839408)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106184901787.png)]

导入Dashboard(jvm)

模板下载链接为:

https://grafana.com/grafana/dashboards/8563/revisions

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HqJ8jVDq-1647763839409)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106184501838.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ucVcafFt-1647763839410)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106184539319.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PXODPiQp-1647763839410)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211106184610493.png)]

Micrometer定制收集指标

Micrometer则比较灵活,可以定制自己想要的指标,而不仅仅是JVM,还可以是自己应用的指标

可以到这篇文章了解一下: https://www.cnblogs.com/rolandlee/p/11343848.html

这里使用Grafana模板是4701 : https://grafana.com/grafana/dashboards/4701

添加Maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId><version>1.2.2</version>
</dependency>
<dependency><groupId>io.github.mweirauch</groupId><artifactId>micrometer-jvm-extras</artifactId><version>0.2.0</version>
</dependency>

application.properties配置

(注意,这里没有配置management.endpoints.web.base-path,所以默认的请求路径是/usr/local/prometheus,而Promethus的路径 是/usr/local/prometheusprometheus)

server.port=8699
#spring.application.name=JVM-micrometer
management.metrics.tags.application=JVM-micrometer
#prometheus配置
management.metrics.export.prometheus.enabled=true
management.metrics.export.prometheus.step=1ms
management.metrics.export.prometheus.descriptions=truemanagement.endpoint.prometheus.enabled=true
management.endpoints.web.exposure.include=health,info,env,prometheus,metrics,httptrace,threaddump,heapdump,springmetrics

配置Prometheus的prometheus.yml

- job_name: 'actuator-demo'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
metrics_path: '/usr/local/prometheus'
static_configs:
- targets: ['localhost:8699']

Grafana上Import4701即可

RocketMQ监控

当前 RocketMQ Exporter 已被 Prometheus 官方收录,其地址为 https://github.com/apache/rocketmq-exporter

RocketMQ-Exporter 的具体实现:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IoDKG8ck-1647763839412)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211107142559298.png)]

  • 监控指标
监控指标 含义
rocketmq_broker_tps broker 每秒生产消息数量
rocketmq_broker_qps broker 每秒消费消息数量
rocketmq_producer_tps 某个 topic 每秒生产的消息数量
rocketmq_producer_put_size 某个 topic 每秒生产的消息大小 (字节)
rocketmq_producer_offset 某个 topic 的生产消息的进度
rocketmq_consumer_tps 某个消费组每秒消费的消息数量
rocketmq_consumer_get_size 某个消费组每秒消费的消息大小 (字节)
rocketmq_consumer_offset 某个消费组的消费消息的进度
rocketmq_group_get_latency_by_storetime 某个消费组的消费延时时间
rocketmq_message_accumulation(rocketmq_producer_offset-rocketmq_consumer_offset) 消息堆积量(生产进度 - 消费进度)

rocketmq_message_accumulation 是一个聚合指标,需要根据其它上报指标聚合生成

  • 告警指标
告警指标 含义
sum(rocketmq_producer_tps) by (cluster) >= 10 集群发送 tps 太高
sum(rocketmq_producer_tps) by (cluster) < 1 集群发送 tps 太低
sum(rocketmq_consumer_tps) by (cluster) >= 10 集群消费 tps 太高
sum(rocketmq_consumer_tps) by (cluster) < 1 集群消费 tps 太低
rocketmq_group_get_latency_by_storetime > 1000 集群消费延时告警
rocketmq_message_accumulation > value 消费堆积告警

RocketMQ-Exporter 使用示例

1 启动 NameServer 和 Broker

要验证 RocketMQ 的 Spring-Boot 客户端,首先要确保 RocketMQ 服务正确的下载并启动。可以参考 RocketMQ 主站的快速开始来进行操作。确保启动 NameServer 和 Broker 已经正确启动。

2 编译 RocketMQ-Exporter

用户当前使用,需要自行下载 git 源码编译

git clone https://github.com/apache/rocketmq-exporter
cd /usr/local/rocketmq-exporter/rocketmq-exporter-master
mvn clean install  #或者在windows下面编译后提取jar包

3 配置和运行

RocketMQ-Exporter 有如下的运行选项

选项 默认值 含义
rocketmq.config.namesrvAddr 127.0.0.1:9876 MQ 集群的 nameSrv 地址
rocketmq.config.webTelemetryPath /metrics 指标搜集路径
server.port 5557 HTTP 服务暴露端口

以上的运行选项既可以在下载代码后在配置文件中更改,也可以通过命令行来设置。
编译出来的 jar 包就叫 rocketmq-exporter-0.0.1-SNAPSHOT.jar,可以通过如下的方式来运行。

#\rocketmq-exporter-master\src\main\resources\rocketmq-exporter\applicatin.yml文件
server:port: 5557
spring:application:name: rocketmq-exporterhttp:encoding:charset: UTF-8enabled: trueforce: true
logging:config: classpath:logback.xml
rocketmq:config:webTelemetryPath: /metricsrocketmqVersion: 4_8_0namesrvAddr: 127.0.0.1:9876enableCollect: true
# cd  /usr/local/rocketmq-exporter/rocketmq-exporter-master/target
java -jar rocketmq-exporter-0.0.1-SNAPSHOT.jar [--rocketmq.config.namesrvAddr="127.0.0.1:9876" ...]
[root@localhost target]# nohup java -jar rocketmq-exporter-0.0.2-SNAPSHOT.jar &
[2021-11-07 15:06:48.750]  INFO cluster name= DefaultCluster, broker name = [localhost.localdomain]
broker name = localhost.localdomain, master broker address= 192.168.0.200:10911
[2021-11-07 15:06:48.750]  INFO MetricsCollectTask init finished....cost:455
[2021-11-07 15:06:49.878]  INFO Starting ProtocolHandler ["http-nio-5557"]
[2021-11-07 15:06:49.972]  INFO Tomcat started on port(s): 5557 (http) with context path ''
[2021-11-07 15:06:49.982]  INFO Started RocketMQExporterApplication in 7.795 seconds (JVM running for 9.238)
#prometheus.yml
- job_name: 'rocketmq'
scrape_interval: 30s
static_configs:
- targets: ['192.168.0.200:5557']#重启prometheus
#[root@localhost prometheus]# nohup ./prometheus --config.file=prometheus.yml &

http://192.168.0.200:9090/targets

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5lAoW08C-1647763839413)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211107152521736.png)]

Grafana导入 rockemq面板:

地址为 https://grafana.com/dashboards/10477/revisions

测试:rocketmq 生成发送消息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dBTN6X3o-1647763839413)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211107153259953.png)]

测试 rocketmq 消费消息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RE7IdcqG-1647763839414)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211107153512621.png)]

查看 rockemq: dashboard:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eL9zE3ED-1647763839415)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211107153637183.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cKUuzI2c-1647763839416)(C:\Users\d\AppData\Roaming\Typora\typora-user-images\image-20211107153708641.png)]

Redis监控

性能场景问题分析

q’
scrape_interval: 30s
static_configs:

  • targets: [‘192.168.0.200:5557’]

#重启prometheus
#[root@localhost prometheus]# nohup ./prometheus --config.file=prometheus.yml &


http://192.168.0.200:9090/targets[外链图片转存中...(img-5lAoW08C-1647763839413)]Grafana导入 rockemq面板:地址为 https://grafana.com/dashboards/10477/revisions测试:rocketmq 生成发送消息[外链图片转存中...(img-dBTN6X3o-1647763839413)]测试 rocketmq 消费消息[外链图片转存中...(img-RE7IdcqG-1647763839414)]查看 rockemq: dashboard:[外链图片转存中...(img-eL9zE3ED-1647763839415)][外链图片转存中...(img-cKUuzI2c-1647763839416)]## Redis监控# 性能场景问题分析

性能监控平台prometheus+grafana相关推荐

  1. 性能测试从入门到高级进阶之路(二):小白教程influxdb+grafana+jmeter性能监控平台

    先看效果:  一.背景:         公司要办第二阶段的架构师选拔,所以需要搞个性能比赛.本人是公司公司测试工程师,负责现场比赛压测,因为有公司外的评委,所以需要搭建一套influxdb+graf ...

  2. SpringBoot应用监控SpringBoot+Prometheus+Grafana

    SpringBoot应用监控SpringBoot+Prometheus+Grafana 1. SpringBoot应用监控 1.1 SpringBoot应用监控 1.2 SpringBoot应用搭建 ...

  3. 大数据监控平台-Prometheus监控Hadoop3.1.3

    简介 本篇主要是使用jmx配合Prometheus监控大数据平台 前提 链接:https://pan.baidu.com/s/1c6nsjOKw4-a_Wqr82l0QhQ  提取码:yyds  -- ...

  4. 美团性能分析框架和性能监控平台

    2019独角兽企业重金招聘Python工程师标准>>> 美团性能分析框架和性能监控平台 美团的性能小组在过去1年的时间,成功将项目详情页.首页.搜索和筛选页的加载时间从10秒左右降到 ...

  5. 技术实践第四期|解读移动开发者日常-性能监控平台应用

    简介:应用性能监控平台是用来帮助客户提升应用性能质量和稳定性的重要环节,本人作为一名移动端开发者有着丰富的使用和运维经验,希望通过本文分享过往的心得和使用经验,让我参与开发的U-APM这款产品中,作为 ...

  6. 为什么九大头部APP都选择U-APM 应用性能监控平台?

    01 贝乐虎 02 车来了 03 墨迹天气 04 猎豹移动 05 小伴龙 06 虎扑 07 薄荷健康 08 小天才 09 某音视频APP  U-APM核心技术与优势 为什么选择U-APM 应用性能监控 ...

  7. 360重磅开源性能监控平台ArgusAPM

    12月16日,在360移动性能开放日上,360手机卫士技术架构负责人卜云涛向我们介绍了360最新开源的性能监控平台ArgusAPM.ArgusAPM是360手机卫士客户端团队继RePlugin之后开源 ...

  8. 360 重磅开源性能监控平台 ArgusAPM

    12 月 16 日,在 360 移动性能开放日上,360 手机卫士技术架构负责人卜云涛向我们介绍了 360 最新开源的性能监控平台 ArgusAPM.ArgusAPM 是 360 手机卫士客户端团队继 ...

  9. Jmeter+Prometheus+Grafana性能监控平台:将JMeter压测数据输出到Prometheus

    前言 1.小编之前写过一篇文章详细讲解了如何搭建一个HTTP接口性能实时监控测试平台,是用Grafana+Influxdb+Jmeter组合实现的,可以参考我写的这篇博客https://editor. ...

  10. k8s集群资源监控-搭建监控平台(prometheus和grafana)---K8S_Google工作笔记0053

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来,搭建一下监控平台,来监控我们的所有的节点,以及节点中pod的使用清空,网络,cpu等等 ...

最新文章

  1. 2021年大数据Spark(十九):Spark Core的​​​​​​​共享变量
  2. iOS 根据数组中的字典的value值进行排序
  3. using的几种用途
  4. 在Debian中建立Beaglebone black的应用开发环境之四:如何布置应用?
  5. undefined reference to `_imp___Py_NoneStruct'
  6. VTK:单元格内部对象CellsInsideObject用法实战
  7. OpenGL 行星asteroids系统的实例
  8. Matlab第二章选择题填空题,matlab及其在大学物理中的应用第二章习题答案.doc
  9. 查询mysql视图_MySQL数据库简介及常用命令
  10. python以垂直方式输出hello world_python3提问:垂直输出Hello World,全部代码不超过2行....
  11. SQl SGA 整理
  12. nginx之反向代理配置
  13. 33. 深入解析互联网协议的原理
  14. 佳能ts9020墨盒不识别_佳能打印机哪一款性价比高 佳能打印机型号推荐【详解】...
  15. 魔兽单机80mysql创建账号_本站魔兽世界单机版如何注册账号及局域网架设 | 游戏海湾...
  16. Sqli-Lab | Less 21-23
  17. Halcon|通过旋转前后3维坐标点求旋转轴及旋转角度
  18. Selenium用户指南 - 第一章 Selenium 2.0 文档修订注解
  19. session活化与钝化
  20. python编程:总结了一些高效使用 PyCharm 技巧,(三)

热门文章

  1. 拇指玩」制作的「谷歌安装器」app
  2. 高校375个国家级精品课程
  3. PS制作logo图片
  4. B.系数(mod意义下的系数转化+lucas)
  5. ACM------吃在工大(合工大OJ 1359)
  6. 前端性能优化建议,24条
  7. blendshapes
  8. 谷歌chrome浏览器突然不记录登录状态,怎么办
  9. 第三部分 :简单句的补充(复合句/定语从句)
  10. (转)TTime, TDateTime