技术标签: linux Prometheus Grafana RocketMQ
研究RocketMQ的同学都知道,RocketMQ的生态目前并不是很完善,包括官方的文档资料也有限,官方的Console存在一些Bug,页面的样式有的也有问题,但是正是由于这些原因,我们针对RocketMQ能做的事有很多,不像Kafka,生态已经很完善,一些企业也对Kafka做了开源的产品,最近开始做基于K8S的RocketMQ管理控制台,需要对每个集群有完善的监控告警,接下来就简单说明一下做RocketMQ的监控有哪些步骤。
以下操作基于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 ..."
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采集的指标也收集到了。
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之后,需要先配置之前搭建的Prometheus为数据来源:
点击添加按钮,因为我之前添加过,所以列表中有了一个:
修改名称,填写你的prometheus地址即可:
最后别忘了先测试一下:
进入管理页面之后,选择导入模版,因为已经有现成的模版,可以直接使用,也可以根据自己的需求自己定制
查看已有的grafana模版:https://grafana.com/grafana/dashboards
之前只有第一个,做得很糟,本来想自己设计了,没想到最近刚有大佬上传一个新的,点击进去之后,复制模版ID
回到Grafana导入界面,输入模板ID:
下一步,选择数据源:
导入之后,大功告成:
因为是我之前导入的,所以有历史的数据,这个模版就比原来的要直观很多,后续可以根据Prometheus采集到的指标,自定义Panel,根据自己的需求来做监控。
文章浏览阅读7.2k次,点赞6次,收藏4次。使用Mysql进行数据查询时,如果在SQL语句中出现范围查询,类似如下语句:select * from logs where create_time >= '2020-01-01' ;此时,虽然在create_time字段上添加了索引,但是否会走索引还需要看数据量的情况。如果根据查询条件查询到数据的结果数量小于总数量的五分之一,则会走索引,否则会走全表扫描。因此,在进行范围查询时,比如>、< 、>=、<=等,如果数据量过大的话where语句的条件虽然添加了索引,但也有_创建时间小于now()不走索引
文章浏览阅读1.2k次。一、Sklearn介绍scikit-learn是Python语言开发的机器学习库,一般简称为sklearn,目前算是通用机器学习算法库中实现得比较完善的库了。其完善之处不仅在于实现的算法多,还包括大量详尽的文档和示例。其文档写得通俗易懂,完全可以当成机器学习的教程来学习。二、Sklearn数据集种类sklearn 的数据集有好多个种自带的小数据集(packaged dataset):sklearn...
文章浏览阅读594次。【单选题】以下可以终结一个循环的执行的语句是【单选题】设计的组件之间的依赖关系图被称为:【单选题】类方法中定义了四个参数,这种情况下实际上有多少参数:【判断题】螺旋式开发可以简化项目管理,能够适应需求经常的变化。【判断题】一个try语句只能配一个except语句。【单选题】递归函数有什么特点?【判断题】单元测试是将程序分离出来独立单元进行测试。【判断题】决策结构问题通常只有一种方案【单选题】以下不..._文件后缀名采用.pyw而不是.py的目的是为了绘制窗口
文章浏览阅读102次。在数据中心多年的发展进程中,发展已经不可避免地来到拐点(转折点),是购买数据中心还是租赁数据中心?该如何选择呢?业界人士不得不审慎思考、分析利弊,考虑是自建数据中心,自己维护,还是将其外包。(备注:拐点(转折点),又称反曲点,在数学上指改变曲线向上或向下方向的点,直观地说拐点是使切线穿越曲线的点(即曲线的凹凸分界点)。若该曲线图形的函数在拐点有二阶导数..._idc选址事项
文章浏览阅读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
文章浏览阅读928次。LOW服务器端核心代码<?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message inpu..._xss存储型攻击代码
文章浏览阅读4.5k次。日常使用计算机的时候,有些情况下可能会遇到需要给bitlocker的加密进行解锁。win10如何使用bitlocker解锁硬盘加密?其实可在系统中直接进行操作。首先找到自己需要解锁的硬盘,右键找到需要进入的选项,初始化之后点击下一步然后再进行一系列的操作即可,具体步骤见下面详细介绍~win10如何使用bitlocker解锁硬盘加密1、选择需要加密的磁盘,然后右击,点击“启用bitlocker”;2..._csdn 硬盘带密码怎么解除
文章浏览阅读103次。tips:接下去会在github写博客,简书不再更新和修改文章,欢迎大家逛逛我的新博客点击查看 ,我会尽量用更容易理解的方式写好每一篇博客,大家一起学习交流????。vue-chat airchat介绍这是我的毕设项目,产品功能和页面参照qq,微信,TIM,不完全一样,有些是自己的想法。前后端都自己写。感觉是一个挺不错的全栈入门项目,各种交互各种业务逻辑,不花哨,但实用。对node(koa)和vue学习..._koa+mysql聊天功能实现
文章浏览阅读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
文章浏览阅读2.6k次,点赞3次,收藏25次。linux系统编程-网络编程_linux网络编程
文章浏览阅读1.7k次。我们都知道的是cascade强调的是操作关联对象,inverse强调的是外键的维护权。在我们设置了级联操作后,在保存的时候就会级联保存另外的级联对象,而设置了inverse之后,如果两个对象之间有双向维护关系,就会在设置的一方放弃外键维护权,那它们两个共同使用的时候会产生什么结果呢? 我们可以通过一个简单的案例测试一下,就能得到结果,案例中customer与linkman为一对多关_java面试 cascade和inverse
文章浏览阅读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