Prometheus + Grafana 监控 RabbitMQ 实践指南

文章目录

  • Prometheus + Grafana 监控 RabbitMQ 实践教程
    • 一、前言
    • 二、环境搭建
      • 2.1 环境准备
      • 2.2 安装 Prometheus
      • 2.3 安装 Grafana
    • 三、集成 RabbitMQ Exporter
      • 3.1 下载 RabbitMQ Exporter
      • 3.2 解压文件
      • 3.3 配置环境变量
      • 3.4 启动 RabbitMQ Exporter
      • 3.6 验证 Exporter 状态
    • 四、Prometheus添加 RabbitMQ Exporter 作为监控目标
      • 4.1 编辑 Prometheus 配置文件
      • 4.2 重新加载 Prometheus 配置
    • 五、配置 Grafana
      • 5.1 添加 Prometheus 数据源
      • 5.2 导入 RabbitMQ Dashboard
      • 5.3 查看监控数据
    • 六、总结

Prometheus + Grafana 监控 RabbitMQ 实践教程

一、前言

在微服务架构中,消息队列作为关键组件,其性能和状态直接影响系统稳定性。Prometheus + Grafana 作为流行的开源监控解决方案,能够高效监控 RabbitMQ 的运行状态。本文将详细介绍如何使用 Prometheus 和 Grafana 实现对 RabbitMQ 的可视化监控。

二、环境搭建

2.1 环境准备

  • 操作系统 :CentOS 7
  • RabbitMQ 版本 :3.8.4
  • Erlang 版本 :21.3
  • Prometheus 版本 :2.37.0
  • Grafana 版本 :6.4.3

2.2 安装 Prometheus

2.2.1 关闭防火墙
如果是学习环境,可以直接关闭防火墙,生产环境不建议关闭

systemctl stop firewalld
systemctl disable firewalld

2.2.2 安装go环境
由于Prometheus 是golang开发的,所以需要在服务器上安装好golang环境,本博客采用源码安装的方法,如果能科学上网,可以去国外的网站https://golang.org/dl/下载安装包

解压安装包:

 tar-xvf go1.18.3.linux-amd64.tar.gz

添加/usr/loacl/go/bin 目录到/etc/profile

# vim /etc/profile// 在最后一行添加
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
# wq 保存退出后source 一下
source /etc/profile

运行go version,如果显示版本号,则Go环境安装成功

2.2.3 下载 Prometheus

从 Prometheus 官网 下载适合您系统的 Prometheus 二进制文件。

2.2.4 解压文件

tar -xvf prometheus-2.37.0.linux-amd64.tar.gz
cd prometheus-2.37.0.linux-amd64

2.2.5 启动 Prometheus

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

访问 http://localhost:9090,确认 Prometheus 正在运行。
在这里插入图片描述
2.2.6 设置Prometheus开机启动

添加系统服务,vim /etc/systemd/system/prometheus.service,写入如下内容

[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System[Service]
ExecStart=/usr/local/prometheus/prometheus-3.4.1.linux-amd64/prometheus \--config.file=/usr/local/prometheus/prometheus-3.4.1.linux-amd64/prometheus.yml \--web.listen-address=:9091
Restart=on-failure[Install]
WantedBy=multi-user.target

重新加载 systemd 配置并启动 prometheus服务

# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 重置服务的失败计数器
sudo systemctl reset-failed prometheus.service
# 启动服务
sudo systemctl start prometheus.service
# 查看服务状态
sudo systemctl status prometheus.service

服务正常应该会这样显示:
在这里插入图片描述

如果服务启动失败,可以使用以下命令查看详细日志:

journalctl -u prometheus.service -l

2.3 安装 Grafana

2.3.1 下载 Grafana

从 Grafana 官网 下载适合您系统的 Grafana 安装包。

2.3.2 安装 Grafana

  • 对于 CentOS
 # 下载wget https://dl.grafana.com/oss/release/grafana-6.4.3-1.x86_64.rpm# 安装yum localinstall grafana-6.4.3-1.x86_64.rpm

2.3.3 启动 Grafana
设置Grafana开机启动并重启

# 重启systemctl 服务systemctl daemon-reload# 使服务生效systemctl enable grafana-server.service# 启动服务systemctl start grafana-server.service

2.3.4 验证安装

访问 http://localhost:3000,默认用户名和密码均为 admin

在这里插入图片描述

三、集成 RabbitMQ Exporter

3.1 下载 RabbitMQ Exporter

从 GitHub Releases 页面下载适合您系统的 RabbitMQ Exporter 二进制文件。

3.2 解压文件

解压下载的文件:

tar-zxf rabbitmq_exporter_1.0.0-RC17_linux_amd64.tar.gz
cd rabbitmq_exporter_1.0.0-RC17_linux_amd64

3.3 配置环境变量

将解压后的可执行文件 rabbitmq_exporter 移动到系统路径下,例如 /usr/local/bin

mv rabbitmq_exporter /usr/local/bin/

3.4 启动 RabbitMQ Exporter

cd到Rabbitmq Exporter目录,启动

RABBIT_USER=admin RABBIT_PASSWORD=123456 OUTPUT_FORMAT=JSON PUBLISH_PORT=9419 RABBIT_URL=http://localhost:15672 nohup ./rabbitmq_exporter &

3.6 验证 Exporter 状态

访问 http://<服务器IP>:9419/metrics 查看 Exporter 暴露的指标数据。

四、Prometheus添加 RabbitMQ Exporter 作为监控目标

4.1 编辑 Prometheus 配置文件

在 Prometheus 配置文件 prometheus.ymlscrape_configs 部分添加 RabbitMQ Exporter 作为监控目标:

scrape_configs:- job_name: 'rabbitmq'static_configs:- targets: ['localhost:9419']

4.2 重新加载 Prometheus 配置

重新加载 Prometheus 配置文件,使更改生效:

sudo systemctl reload prometheus

浏览器访问http://<服务器IP>:9090/targets查看监控信息
在这里插入图片描述

五、配置 Grafana

5.1 添加 Prometheus 数据源

  1. 登录 Grafana,点击主界面的 “Add data source”。
    在这里插入图片描述

  2. 选择 “Prometheus”。
    在这里插入图片描述

  3. 填写数据源设置项,URL 处填写 Prometheus 服务所在的 IP 地址和端口。 点击 “Save & Test” 按钮,保存设置。
    在这里插入图片描述

  4. Dashboards 页面选择“Prometheus 2.0 Stats”
    在这里插入图片描述

  5. 查看监控

点击Grafana图标,切换到主页面,然后点击Home,选择我们刚才添加的Prometheus2.0Stats,即
可看到监控数据
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.2 导入 RabbitMQ Dashboard

  1. 浏览器访问 Grafana 官方 Dashboard 页面,搜索并选择合适的 RabbitMQ 监控 Dashboard。
    在这里插入图片描述
  2. 复制 Dashboard 的 ID。
  3. 打开 Grafana 监控页面,点击 “Import” 按钮。
    在这里插入图片描述

在这里插入图片描述

  1. 将复制的 Dashboard ID 粘贴到输入框中。
    在这里插入图片描述

  2. 点击 “Change” 按钮,生成一个随机的 UID。

  3. 点击下方输入框,选择之前创建的数据源 Prometheus。
    在这里插入图片描述

  4. 最后点击 “Import” 按钮,完成导入。

5.3 查看监控数据

导入成功后,会自动打开该 Dashboard,即可看到 RabbitMQ 的监控数据。

六、总结

通过 Prometheus + Grafana 实现对 RabbitMQ 的可视化监控,可以帮助我们实时了解 RabbitMQ 的运行状态和性能指标。本文从环境搭建到配置 Grafana,提供了详细的步骤和示例,帮助读者快速上手。

如果你在部署或配置过程中遇到问题,可以参考官方文档或在相关社区寻求帮助。

希望这篇实践指南对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Babylon.js场景加载器(Scene Loader)使用指南

在3D开发中&#xff0c;Babylon.js的场景加载器(Scene Loader)是加载各种3D模型格式的核心工具。本文将详细介绍如何高效使用Scene Loader加载多种格式的3D模型文件。 一、基本概念与支持格式 要加载特定类型的文件&#xff0c;Babylon.js需要先注册对应的文件类型插件。目前…

编程学习网站大全(C++/OpenCV/QT方向)—— 资源导航与深度评测

工欲善其事&#xff0c;必先利其器 本文系统整理了C、OpenCV、QT三大方向的优质学习网站&#xff0c;结合技术特点与平台优势&#xff0c;助你精准选择学习资源&#xff0c;少走弯路&#xff01; 一、C 学习网站精选 &#x1f4da; 1. cppreference.com 权威性最高&#xff1a…

逆向入门(5)程序逆向篇-AD_CM#2

打开程序 常规注册界面&#xff0c;打开OD&#xff0c;随便找找就看到关键字了 没有壳逻辑也挺简单的 获取输入框&#xff0c;用5比较输入内容的长度&#xff0c;小于则跳转提示密码长度不够 否则就进入下一个流程&#xff0c;去获取序列号&#xff0c;其实可以直接将jnz换…

OD 算法题 B卷【路灯照明II】

文章目录 路灯照明II 路灯照明II 在一条笔直的公路上安装了N个路灯&#xff0c;从位置0开始安装&#xff0c;间距固定为100米&#xff1b;每个路灯都有自己的照明半径&#xff0c;计算第一个路灯和最后一个路灯之间&#xff0c;无法照明的区间长度和&#xff1b; 输入描述: 第…

JUC核心解析系列(四)——同步工具类 (Synchronizers)深度解析

在多线程开发中&#xff0c;死锁、资源竞争、线程协调等问题如同暗礁&#xff0c;稍有不慎就会导致程序崩溃。而JUC同步工具类正是解决这些问题的瑞士军刀&#xff01; 一、同步工具类核心价值&#xff1a;线程协作的艺术 在高并发系统中&#xff0c;线程协作是保证数据一致性…

板凳-------Mysql cookbook学习 (十--6)

第7章&#xff1a;排序查询结果 7.0 引言 mysql> use cookbook Database changed mysql> select * from driver_log; ---------------------------------- | rec_id | name | trav_date | miles | ---------------------------------- | 1 | Ben | 2014-07-30 …

从入门到精通:C# 中 AutoMapper 的深度解析与实战应用

在 C# 开发领域&#xff0c;尤其是企业级应用开发过程中&#xff0c;不同层次和模块之间的数据传递与对象转换是常见需求。例如&#xff0c;从数据库读取的实体类&#xff0c;在传递到前端时&#xff0c;往往需要转换为更简洁、安全的数据传输对象&#xff08;DTO&#xff09; …

【热更新知识】学习一 Lua语法学习

1、注释 1.1 单行注释 --注释内容 --单行注释 print打印函数 1.2 多行注释&#xff0c;三种方式 --[[注释内容]] --[[注释内容]]-- --[[注释内容--]] --[[ 多行 注释 ]]--[[ 第二种多行注释 1 2 ]]----[[ 第三种 多行 注释 --]] 2、简单变量 2.1 声明变量&#xff0c…

React 第三方状态管理库的比较与选择

在现代前端开发中,状态管理是一个重要的环节。选择合适的状态管理库可以极大地提高项目的可维护性和开发效率。本文将对几种流行的状态管理库进行比较,包括Valtio、XState、MobX、Recoil和Zustand,帮助开发者在实际项目中做出明智的选择。 1. Valtio 1.1. 设计理念 Valti…

《Kafka 在实时消息系统中的高可用架构设计》

Kafka 在实时消息系统中的高可用架构设计 引言 在当今互联网社交应用中&#xff0c;实时消息系统已成为核心基础设施。以中性互联网公司为例&#xff0c;其每天需要处理数十亿条消息&#xff0c;涵盖一对一聊天、群组互动、直播弹幕等多种场景。特别是在大型直播活动中&#…

SKUA-GOCAD入门教程-第八节 线的创建与编辑3

8.1.4根据面对象创建曲线 (1)从曲面生成曲线 从曲面边界生成曲线您可以从选定的曲面边界创建一条单段曲线。 1、选择 Curve commands > New > Borders > One 打开从曲面的一条边界创建曲线对话框。 图1 在“Name名称”框中,输入要创建的曲线的名称。

Unity编辑器-获取Projectwindow中拖拽内容的路径

参考 Unity Editor 实现给属性面板上拖拽赋值资源路径 API Event DragAndDrop 示例 Mono脚本 using UnityEngine; public class TestScene : MonoBehaviour {[SerializeField] string testName; }Editor脚本 重写InspectorGUI&#xff0c;在该函数中通过Event的Type参数获…

重要的城市(图论 最短路)

分析 a ≠ b的从a到B的最短路&#xff0c;才有重要城市。 求出最短路&#xff0c;才能确定重要城市。 是多源最短路&#xff0c;n ≤ 200&#xff0c;可用Floyd。 若a到b&#xff0c;只有一条最短路&#xff0c;那么 a到b的路径上的点&#xff08;除了a、b&#xff09;都是…

50种3D效果演示(OpenGL)

效果&#xff1a; 一、只需打开命令行&#xff08;Windows 可用 cmd&#xff09;&#xff0c;输入&#xff1a; pip install PyQt5 PyOpenGL numpy二、用命令行进入保存 .py 文件的目录&#xff0c;运行&#xff1a; python openGL_3d_demo.py三、建立python文件命名openGL_3…

Java大模型开发入门 (6/15):对话的灵魂 - 深入理解LangChain4j中的模型、提示和解析器

前言 在上一篇文章中&#xff0c;我们见证了AiService注解的惊人威力。仅仅通过定义一个Java接口&#xff0c;我们就实现了一个功能完备的AI聊天服务。这感觉就像魔法一样&#xff01; 但作为专业的工程师&#xff0c;我们知道“任何足够先进的技术&#xff0c;都与魔法无异”…

用Rust如何构建高性能爬虫

习惯了使用Python来写爬虫&#xff0c;如果使用Rust需要有哪些考量&#xff1f; 根据我了解的Rust 在性能、资源效率和并发处理方面完胜 Python&#xff0c;但是 Python 在开发速度和生态成熟度上占优。所以说&#xff0c;具体用那种模式&#xff0c;结合你项目特点做个详细的…

CentOS7报错:Cannot find a valid baseurl for repo: base/7/x86_64

这个错误通常出现在 CentOS/RHEL 7 系统中&#xff0c;当你尝试运行 yum update 或 yum install 时&#xff0c;系统无法连接到默认的软件仓库&#xff08;repository&#xff09;。 可能的原因 网络连接问题&#xff1a;系统无法访问互联网或仓库服务器。错误的仓库配置&…

云平台|Linux部分指令

目录 云平台 操作系统&#xff08;镜像&#xff09; 管理应用实例 远程连接 远程连接工具 linux相关命令&#xff08;重点&#xff09; 云平台 1、阿里云&#xff08;学生免费&#xff0c;不包流量 流量0.8---1G&#xff09; 2、腾讯云&#xff08;抢&#xff09; 3、华…

AI首次自主发现人工生命

转&#xff1a; 近日&#xff0c;人工智能领域迎来了一项革命性的突破。Transformer 论文作者之一的 Llion Jones 与前谷歌研究人员 David Ha 共同创立的人工智能公司 Sakana AI&#xff0c;联合MIT、OpenAI、瑞士AI实验室IDSIA等机构的研究人员&#xff0c;共同提出了一种名为…

Day.31

变量类型&#xff1a; name: str "Alice" age: int 30 height: float 1.75 is_student: bool False 注解&#xff1a; def add(a: int, b: int) -> int: return a b def greet(name: str) -> None: print(f"Hello, {name}") 定义矩形类&a…