【RocketMQ】从零搭建一套RocketMQ监控(rocketmq-exporter + Prometheus + Grafana)-程序员宅基地

技术标签: linux  Prometheus  Grafana  RocketMQ  

前言

研究RocketMQ的同学都知道,RocketMQ的生态目前并不是很完善,包括官方的文档资料也有限,官方的Console存在一些Bug,页面的样式有的也有问题,但是正是由于这些原因,我们针对RocketMQ能做的事有很多,不像Kafka,生态已经很完善,一些企业也对Kafka做了开源的产品,最近开始做基于K8S的RocketMQ管理控制台,需要对每个集群有完善的监控告警,接下来就简单说明一下做RocketMQ的监控有哪些步骤。

部署rocketmq-exporter

以下操作基于Linux系统。

首先需要下载官方rocketmq-exporter的源码,需要修改几个配置

GitHub地址:https://github.com/apache/rocketmq-exporter.git

1、修改application.yml配置文件

需要修改nameserver地址,端口号根据自己的情况修改

2、修改日志路径:

3、修改pom文件中rocketmq的版本:

4、如果maven打包报错,注释这部分内容:

执行完以上的修改之后,打jar包,上传到服务器,启动即可,启动脚本可以参考如下,涉及的路径换成自己的即可:

#!/bin/bash

PID=`ps -ef | grep '/neworiental/rocketmq/rocketmq-exporter' | grep -v grep | awk '{print $2}'`
if [[ "" !=  "$PID" ]]; then
  echo "killing rocketmq-exporter : $PID"
  kill $PID
fi

sleep 1

LOGS_DIR=/neworiental/rocketmq/rocketmq-exporter/logs

MAIN_JAR="-jar /neworiental/rocketmq/rocketmq-exporter/rocketmq-exporter-0.0.2-SNAPSHOT.jar  "
JAVA_ARGS="-server -Xms4096m -Xmx4096m -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintHeapAtGC  -XX:ThreadStackSize=512 -Xloggc:${LOGS_DIR}/gc.log "

if [ ! -d ${LOGS_DIR} ]
then
    mkdir -p ${LOGS_DIR}
fi
echo ${JAVA_ARGS} ${MAIN_JAR} ${CLASSPATH}
nohup java ${JAVA_ARGS} ${MAIN_JAR} >/dev/null 2>&1 &
echo "deploying rocketmq-exporter-0.0.2-SNAPSHOT.jar now ..."

安装Prometheus

1、下载二进制包:https://prometheus.io/download/#prometheus

上传二进制包到服务器,我下载下来是.tar结尾的,直接tar -xvf prometheus-2.29.1.linux-amd64.tar

[root@iZ2ze434lxf5ptmro9mmprZ prometheus-2.29.1]# ll
total 188716
drwxr-xr-x 2 3434 3434        38 Aug 11 22:56 console_libraries
drwxr-xr-x 2 3434 3434       173 Aug 11 22:56 consoles
drwxr-xr-x 9 root root       240 Aug 17 19:00 data
-rw-r--r-- 1 3434 3434     11357 Aug 11 22:56 LICENSE
-rw-r--r-- 1 3434 3434      3646 Aug 11 22:56 NOTICE
-rwxr-xr-x 1 3434 3434 102094829 Aug 11 22:51 prometheus
-rw------- 1 root root       942 Aug 17 15:46 prometheus.yml
-rwxr-xr-x 1 3434 3434  91126074 Aug 11 22:53 promtool

修改prometheus.yml配置文件,添加rocketmq-exporter的监听配置

将targets中的ip端口改成自己的rocketmq-exporter的即可。

[root@iZ2ze434lxf5ptmro9mmprZ prometheus-2.29.1]# cat prometheus.yml 
# 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.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
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"

# A scrape configuration containing exactly one endpoint to scrape:
# 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: ["localhost:9090"]

  - job_name: "RocketMQ"
    static_configs:
      - targets: ["ip:端口"]
[root@iZ2ze434lxf5ptmro9mmprZ prometheus-2.29.1]# 

进入bin目录下,启动Prometheus:

./prometheus --config.file=./prometheus.yml &

检验是否启动成功,使用prometheus所在机器ip加上9090端口号访问:

可以看到Prometheus已经启动成功,并且rocketmq-exporter采集的指标也收集到了。

安装Grafana

1、使用yum安装:yum -y install grafana-8.1.1

安装完之后,配置文件在/etc/grafana下

[root@iZ2ze434lxf5ptmro9mmprZ neworiental]# 
[root@iZ2ze434lxf5ptmro9mmprZ neworiental]# whereis grafana
grafana: /etc/grafana /usr/share/grafana
[root@iZ2ze434lxf5ptmro9mmprZ neworiental]# 
[root@iZ2ze434lxf5ptmro9mmprZ neworiental]# 

2、启动Grafana:systemctl start grafana-server.service,启动后使用3000端口访问:

默认用户名密码都是admin,第一次登陆会提示修改

配置Grafana数据源

进入Grafana之后,需要先配置之前搭建的Prometheus为数据来源:

点击添加按钮,因为我之前添加过,所以列表中有了一个:


修改名称,填写你的prometheus地址即可:

最后别忘了先测试一下:

配置RocketMQ监控页面


进入管理页面之后,选择导入模版,因为已经有现成的模版,可以直接使用,也可以根据自己的需求自己定制

查看已有的grafana模版:https://grafana.com/grafana/dashboards

之前只有第一个,做得很糟,本来想自己设计了,没想到最近刚有大佬上传一个新的,点击进去之后,复制模版ID

回到Grafana导入界面,输入模板ID:

下一步,选择数据源:

导入之后,大功告成:

因为是我之前导入的,所以有历史的数据,这个模版就比原来的要直观很多,后续可以根据Prometheus采集到的指标,自定义Panel,根据自己的需求来做监控。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_14840559/article/details/119782996

智能推荐

Mysql时间范围查询不走索引问题_创建时间小于now()不走索引-程序员宅基地

文章浏览阅读7.2k次,点赞6次,收藏4次。使用Mysql进行数据查询时,如果在SQL语句中出现范围查询,类似如下语句:select * from logs where create_time >= '2020-01-01' ;此时,虽然在create_time字段上添加了索引,但是否会走索引还需要看数据量的情况。如果根据查询条件查询到数据的结果数量小于总数量的五分之一,则会走索引,否则会走全表扫描。因此,在进行范围查询时,比如>、< 、>=、<=等,如果数据量过大的话where语句的条件虽然添加了索引,但也有_创建时间小于now()不走索引

pythonsklearn乳腺癌数据集_Python的Sklearn库中的数据集-程序员宅基地

文章浏览阅读1.2k次。一、Sklearn介绍scikit-learn是Python语言开发的机器学习库,一般简称为sklearn,目前算是通用机器学习算法库中实现得比较完善的库了。其完善之处不仅在于实现的算法多,还包括大量详尽的文档和示例。其文档写得通俗易懂,完全可以当成机器学习的教程来学习。二、Sklearn数据集种类sklearn 的数据集有好多个种自带的小数据集(packaged dataset):sklearn...

下面是一个python函数、哪个说法不正确_2017秋python语言程序设计(北京信息科技大学)答案...-程序员宅基地

文章浏览阅读594次。【单选题】以下可以终结一个循环的执行的语句是【单选题】设计的组件之间的依赖关系图被称为:【单选题】类方法中定义了四个参数,这种情况下实际上有多少参数:【判断题】螺旋式开发可以简化项目管理,能够适应需求经常的变化。【判断题】一个try语句只能配一个except语句。【单选题】递归函数有什么特点?【判断题】单元测试是将程序分离出来独立单元进行测试。【判断题】决策结构问题通常只有一种方案【单选题】以下不..._文件后缀名采用.pyw而不是.py的目的是为了绘制窗口

从预置数据中心迁移至IDC数据中心的七大关键因素-程序员宅基地

文章浏览阅读102次。在数据中心多年的发展进程中,发展已经不可避免地来到拐点(转折点),是购买数据中心还是租赁数据中心?该如何选择呢?业界人士不得不审慎思考、分析利弊,考虑是自建数据中心,自己维护,还是将其外包。(备注:拐点(转折点),又称反曲点,在数学上指改变曲线向上或向下方向的点,直观地说拐点是使切线穿越曲线的点(即曲线的凹凸分界点)。若该曲线图形的函数在拐点有二阶导数..._idc选址事项

Linux播放组播视频流,linux下播放组播流出现setsockopt:No such device错误-程序员宅基地

文章浏览阅读662次。在linux下播放组播流出现setsockopt:No such device错误是因为多播IP没有add路由表里面可以采用如下命令完成:root@android:/ # busybox route add -net 239.1.1.0 netmask 239.1.1.0 dev eth0busybox route add -net 239.1.1.0 netmask 239.1.1.0 dev ..._bogus netmask

XSS存储型攻击_xss存储型攻击代码-程序员宅基地

文章浏览阅读928次。LOW服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message inpu..._xss存储型攻击代码

随便推点

win10硬盘锁怎么解除_win10如何使用bitlocker解锁硬盘加密-程序员宅基地

文章浏览阅读4.5k次。日常使用计算机的时候,有些情况下可能会遇到需要给bitlocker的加密进行解锁。win10如何使用bitlocker解锁硬盘加密?其实可在系统中直接进行操作。首先找到自己需要解锁的硬盘,右键找到需要进入的选项,初始化之后点击下一步然后再进行一系列的操作即可,具体步骤见下面详细介绍~win10如何使用bitlocker解锁硬盘加密1、选择需要加密的磁盘,然后右击,点击“启用bitlocker”;2..._csdn 硬盘带密码怎么解除

vue koa mysql_[全栈教程]用vue全家桶+koa2+soket.io +mysql写一个聊天应用-程序员宅基地

文章浏览阅读103次。tips:接下去会在github写博客,简书不再更新和修改文章,欢迎大家逛逛我的新博客点击查看 ,我会尽量用更容易理解的方式写好每一篇博客,大家一起学习交流????。vue-chat airchat介绍这是我的毕设项目,产品功能和页面参照qq,微信,TIM,不完全一样,有些是自己的想法。前后端都自己写。感觉是一个挺不错的全栈入门项目,各种交互各种业务逻辑,不花哨,但实用。对node(koa)和vue学习..._koa+mysql聊天功能实现

DC NXT TOPO flow (1)SPG flow 基础_dcnxt-程序员宅基地

文章浏览阅读6.8k次,点赞9次,收藏81次。什么是物理综合 physical synthesis物理综合就是将RTL综合为coarse-placement的网表;这需要让DC工作在TOPO mode' 并使用compile_ultra 命令;需要一个布局文件,一般是ICC生成的;(icc ii design planning);DC NTX topological mode 是支持物理综合的DC NTX in topological mode 使用virtual routing 去估计net的长度; virtual routing ._dcnxt

linux 网络编程_linux网络编程-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏25次。linux系统编程-网络编程_linux网络编程

Java进阶之hibernate中cascade与inverse_java面试 cascade和inverse-程序员宅基地

文章浏览阅读1.7k次。我们都知道的是cascade强调的是操作关联对象,inverse强调的是外键的维护权。在我们设置了级联操作后,在保存的时候就会级联保存另外的级联对象,而设置了inverse之后,如果两个对象之间有双向维护关系,就会在设置的一方放弃外键维护权,那它们两个共同使用的时候会产生什么结果呢? 我们可以通过一个简单的案例测试一下,就能得到结果,案例中customer与linkman为一对多关_java面试 cascade和inverse

笔记:mysql删除表内某条纪录的auto_increment属性sql语句。_mysql删除auto_increment-程序员宅基地

文章浏览阅读2.9k次。假定s_user_info表内主键uid设置了auto_increment属性,且该主键的type为int,如果想删除auto_increment属性,那么直接修改下type就ok了。sql语句:alter table s_user_info modify uid int(11);执行后再次desc s_user_info;下查看表字段描述会发现uid的auto_increment属性_mysql删除auto_increment

推荐文章

热门文章

相关标签