写点什么

RocketMQ 系列二:RocketMQ 监控 / 告警一站式搭建应用

  • 2022 年 7 月 22 日
  • 本文字数:2817 字

    阅读完需:约 9 分钟

实验简介



研究 RocketMQ 的同学都知道,RocketMQ 的生态目前并不是很完善,包括官方的文档资料也有限,官方的 Console 存在一些 Bug,页面


的样式有的也有问题,但是正是由于这些原因,我们针对 RocketMQ 能做的事有很多,不像 Kafka,生态已经很完善,一些企业也对 Kafka


做了开源的产品,最近开始做基于 K8S 的 RocketMQ 管理控制台,需要对每个集群有完善的监控告警,接下来就简单说明一下做


RocketMQ 的监控有哪些步骤。


实验地址:https://developer.aliyun.com/adc/scenario/78eb946f67644f0db4450889dcdf43bf

实验详情


一、实验环境说明

  1. 启动 namesrv。观察到启动成功的日志后, ctrl + c,终止日志输出。


cd /usr/local/services/5-rocketmq/namesrv-01
restart.sh
复制代码


  1. 启动 broker


修改 broker 配置项 brokerIP1 为实验公网 IP,启动 broker。观察到启动成功的日志后, ctrl + c,终止日志输出。



操作命令如下:


cd /usr/local/services/5-rocketmq/broker-01
vim ./conf/broker.conf
restart.sh
复制代码

二、如何编译和部署 RocketMQ

(本教程会以如何利用 RocketMQ Exporter 源码编译并打包,部署一个 Exporter 实例。)


1. 安装 git,jdk, maven 等工具**(当前实验环境已经安装好。参考或者 baidu/google)**



**2.**下载代码


在自己电脑上, 进入命令行, 选择一个保存源码的目录, 这里我把源码保存到 /tiger/tmp 为例


2.1 创建代码保存目录(已创建则不操作)并进入代码保存目录:


mkdir -p /tiger/tmpcd /tiger/tmp
复制代码


2.2 克隆 master 代码


git clone https://github.com/apache/rocketmq-exporter.gitor git clone https://gitee.com/mirrors_apache/rocketmq-exporter
复制代码


2.3 进入源码根目录:


cd rocketmq-exporter
复制代码


3. 编译和打包


  • 修改配置文件中的 namesrv 地址


vim src/main/resources/application.yml
复制代码


  • 执行打包命令


mvn clean package -Dmaven.test.skip=true
复制代码


  • 编译打包成功后, 我们执行:


cd targetls -l
复制代码


  • 运行 exporter


java -Xms200m -Xmx200m -Xmn200m  -jar rocketmq-exporter-0.0.2-SNAPSHOT.jar
复制代码


  • 查看 exporter 采集结果


通过访问 http://实验公网 IP:30903/metrics, 可以看到采集结果.


三、配置 Prometheus 采集 RocketMQ

(本节将介绍如何在 Prometheus 上配置 RocketMQ Exporter。Prometheus 的部署在这里暂时不做更多介绍, 实验环境已经部署好一个 Prometheus,这里我们直接使用)


1.启动 RocketMQ Exporter(已经启动则不用操作)


2. 启动实验环境 Prometheus 实例


  • 进入 Prometheus 根目录,启动 Prometheus


cd /usr/local/services/3-prometheus
./restart.sh
复制代码


也可以通过访问 http://实验公网 IP:30902 的形式访问 prometheus



3. 配置 Prometheus 采集 RocketMQ Exporter


  • 进入 prometheus 根目录,修改配置文件


cd /usr/local/services/3-prometheus
vim prometheus.yml
复制代码


  • 执行热加载配置命令


./reload.sh
复制代码


  • 验证配置是否生效


登录 promethues 页面,通过观察 Targets,我们看到配置已经生效了



4. 在 Prometheus 上查看 RocketMQ Exporter 采集的指标


登录 promethues 首页, 通过输入 rocketmq 我们可以查询到全部 rocketmq 的指标。目前在实验环境中的 Exporter 总共 82 个指标。想了解每个指标的具体含义可以翻看我写的<<RocketMQ 分布式消息中间件:核心原理与最佳实践>>, 这里面有对 namesrv,broker 全部配置,exporter 全部指标的含义分享。


四、配置 Grafana 展示 RocketMQ 监控

(本节将介绍如何在 Grafana 上配置 RocketMQ 的监控指标。实验环境已经安装好了 RocketMQ 集群, RocketMQ Exporter, Prometheus, 只需要启动即可)


1.  启动 Grafana


cd /usr/local/services/4-grafana
./restart.sh
复制代码


启动完成后, 可以访问 http://实验环境公网 IP:30901, 使用账号 rocketmq/rocketmq666 账号密码登录。


2. 配置 Prometheus 为 Grafana 数据源


  • 找到数据源配置菜单,点击进入





  • 填写 prometheus 信息,保存





  • 创建一个 dashboard, 并创建一个 RocketMQ 指标监控折线图。下面请按照截图操作。



  • 选择刚刚创建的 Prometheus 数据源,填写一个指标名,则可以预览一个指标的监控曲线。



  • 点击位置 4 时,弹窗提示保存



  • tips:Grafana 可以用文件夹的形式保存相同类型的 Dashboard


3. 配置一个 Broker 指标监控。


在 RocketMQ 中一个物理集群可以包含多个逻辑集群, 每个逻辑集群可以有自己的集群名和所包含的 Broker。所以这里我们先配置一个下拉列表选择集群名、Broker 的关系。




  • 填充一些变量基本信息


  1. 变量名,会被曲线图 query sql 中引用

  2. 变量展示的名字, 仅展示

  3. 数据源, 这里选择我们之前配置的 prometheus

  4. 填写查询全部集群名的 query。获取一个指标的全部 label 的值:


label_values(rocketmq_brokeruntime_commitlogdir_capacity_total, cluster)
复制代码


rocketmq_brokeruntime_commitlogdir_capacity_total 是一个指标名, cluster 是这个指标的 label 名字。


  1. 如果步骤 4 正确填写, 可以在这里预览全部的集群名。



点击 update 可以保存一个集群变量。


下面我们配置选择好一个集群后, 自动筛选出这个集群中的 broker, 整个步骤和创建一个变量是一样的,只是 query 中会引用另一个变量:


label_values(rocketmq_brokeruntime_commitlogdir_capacity_total{cluster="$clusterName"}, brokerIP)
复制代码


保存后, 我们查看最后的效果



还有一个问题, 选择了一个集群,一个 broker 后, 曲线数据没有变化呢? 因为曲线没有和变量联动。


这里以上面配置的曲线为例, 修改 query:


rocketmq_brokeruntime_commitlog_disk_ratio{cluster="$clusterName", brokerIP="$broker"}
复制代码


修改结果为:



点击保存后, 曲线的指标和集群、broker 就会联动。

五、RocketMQ 官方推荐大盘配置

通过上一节的学习, 我们知道 RocketMQ 有很多指标, 如果挨个配置曲线比较费劲。 Grafana 社区已经收集了很多常用组件的大盘配置,拿到后直接导入自己的 Grafana。


下面我们找到 RocketMQ 的 dashboard,然后导入实验环境。




  • 选择一个你喜欢的 dashboard,点击进去,下载 dashboard 的 json 字符串。



  • 导入 Grafana, 并保存。



选择刚刚下载的 json 文件,导入即可。



选择已有的 RocketMQ 数据源, 点击导入。



导入完成后我们可以看到结果

·  想了解更多场景细节请前往云起实验室

立即前往:https://developer.aliyun.com/adc/series/activity/rocketmq1

用户头像

还未添加个人签名 2022.07.05 加入

还未添加个人简介

评论

发布
暂无评论
RocketMQ系列二:RocketMQ监控/告警一站式搭建应用_数据库_hum建应用专家_InfoQ写作社区