分布式 | 如何搭建 DBLE 的 JVM 指标监控系统

news2024/11/24 3:52:16

本篇文章采用 Docker 方式搭建 Grafana + Prometheus 实现对 DBLE 的 JVM 相关指标的监控系统。

作者:文韵涵

爱可生 DBLE 团队开发成员,主要负责 DBLE 需求开发,故障排查和社区问题解答。

本文来源:原创投稿

  • 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

前言

本篇文章将采用 Docker 方式搭建 Grafana + Prometheus 实现对 DBLE 的 JVM 相关指标(如:CPU、Memory Pool、GC、Thread)的监控系统。

准备

  • Linux 服务器:10.186.63.8
  • 已经安装 Docker

搭建环境

1. 部署 DBLE

该部分参考参考自 Docker 快速开始

准备 MySQL 容器

# 创建一个 Docker 网段 dble-net:172.18.0.0/16
docker network create -o "com.docker.network.bridge.name"="dble-net" --subnet 172.18.0.0/16 dble-net

# 创建两个 MySQL 容器,分别映射到主机的 33061 和 33062 作为 MySQL 的服务端口
docker run --name backend-mysql1 --ip 172.18.0.2 -e MYSQL_ROOT_PASSWORD=123456 -p 33061:3306 --network=dble-net -d mysql:5.7 --server-id=1
docker run --name backend-mysql2 --ip 172.18.0.3 -e MYSQL_ROOT_PASSWORD=123456 -p 33062:3306 --network=dble-net -d mysql:5.7 --server-id=2

如果执行 docker run... 时出现 408 Request Time-out 报错,请多尝试几次。

部署 DBLE

  • 利用 Docker 部署 DBLE 服务。
docker run -d -i -t --name dble-server --ip 172.18.0.4 -p 8066:8066  -p 9066:9066  -p 8099:8099 \
-v /opt/jmx-exporter:/jmx-exporter \
--network=dble-net \
actiontech/dble:latest

其中,8099 表示作为后续暴露监控指标映射端口。

使用 JMX Exporter 提供的 JVM 进程内启动(in-process)方式暴露 JVM 的监控指标。在 JVM 启动时指定参数,通过 javaagent 的形式运行 JMX-Exporter 的 jar 包,进程内读取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。

# 创建目录
mkdir /opt/jmx-exporter

# 在 jmx-exporter 目录中,下载 jmx_prometheus_javaagent-0.15.0.jar
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.15.0/jmx_prometheus_javaagent-0.15.0.jar

目前 DBLE 支持最高版本为 jmx_prometheus_javaagent-0.15.0.jar,若版本 >0.15.0,DBLE 启动时会失败。

同时,添加 prometheus-jmx-config.yaml 文件配置,其内容为:

ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false

进入 dble-server 容器并添加配置。

docker exec -it dble-server bash

vi /opt/dble/conf/bootstrap.cnf

# 添加配置:
-javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.15.0.jar=8099:/jmx-exporter/prometheus-jmx-config.yaml

重启 dble 服务,查看 DBLE 是否启动并退出容器。

/opt/dble/bin/dble restart

vi /opt/dble/logs/wrraper.log

查看 DBLE JVM metric

查询地址:http://10.186.63.8:8099

2. 部署 Prometheus

利用 Docker 部署 Prometheus 服务。

docker run -itd --name prometheus --ip 172.18.0.5 -p 9090:9090 --network=dble-net prom/prometheus

其中,9090 为访问 Prometheus 服务端口。

进入 Prometheus 容器并修改配置,创建 DBLE_Job ,添加 target:172.18.0.4:8099。

docker exec -it prometheus sh

vi /etc/prometheus/prometheus.yml

# 配置内容(将原配置覆盖)为:
scrape_configs:
  - job_name: 'DBLE_Job'
    scrape_interval: 30s
    static_configs:
    - targets:
      - '172.18.0.4:8099'

注意:这里 172.18.0.4 是对应 dble-server 容器的 IP。

退出并重新启动 Prometheus 容器,访问 Prometheus 页面 http://10.186.63.8:9090/targets 验证配置生效。

3. 部署 Grafana

利用 Docker 部署 Grafana 服务。

docker run -itd --name=grafana --ip 172.18.0.6 -p 3000:3000 --network=dble-net grafana/grafana

访问 Grafana 的页面 http://10.186.63.8:3000,使用默认用户 admin/admin 登录。

监控指标

导入 JVM 监控模版

在 Grafana 中配置 「Data source」。

选择添加 Prometheus。

填写暴露 Prometheus metrics 的地址并且保存。

注意:填写 Prometheus 容器 IP: http://172.18.0.5:9090 并且保存。

添加「Dashboards」,选择 Import。

使用模版 ID 为 8878 或者可导入 8878 对应的 JSON 文件(JVM 模版 ID 还有 8563)。

自定义 Dashboard Name。

效果如下,其中有 CPU、Memory Pool、GC、Thread 等相关指标。

版本注意

  • DBLE 版本<=2.20.04.0,在 bin 目录中的 wrapper.cnf 配置 JMX-Exporter:
wrapper.java.additional.序号=-javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.15.0.jar=8099:/jmx-exporter/prometheus-jmx-config.yaml
  • DBLE 版本= 3.20.07.0、3.20.10.0,不支持配置 -javaagent,因此无法配置以上监控。
  • DBLE 版本>=3.21.02.0,按照上文配置。 更多技术文章,请访问:https://opensource.actionsky.com/

关于 SQLE

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。

SQLE 获取

类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse

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

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

相关文章

“开发和运维”只是一个开始,最终目标是构建高质量的软件工程

随着技术的飞速发展&#xff0c;软件行业不断寻求改进和创新的方法来提供更高质量的产品。在这方面&#xff0c;DevOps已经展现出了巨大的潜力。通过打破开发和运维之间的壁垒&#xff0c;DevOps将持续集成、持续交付和自动化流程引入到软件开发中&#xff0c;使团队能够更快地…

PSP - 开源可训练的蛋白质结构预测框架 OpenFold 的环境配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132334671 Paper: OpenFold: Retraining AlphaFold2 yields new insights into its learning mechanisms and capacity for generalization Open…

循环队列的实现(c语言)

前言 循环队列是队列的一种特殊的结构&#xff0c;在生产者——消费者模型中常常使用它&#xff0c; 它在逻辑上是一个环形的连续的结构。在物理可以使用数组来实现。 目录 1.循环队列的逻辑结构 2.空的循环队列和满的循环队列 3.循环队列插入和删除 4.代码实现 …

关于小程序收集用户手机号行为的规范

手机号在日常生活中被广泛使用&#xff0c;是重要的用户个人信息&#xff0c;小程序开发者应在用户明确同意的前提下&#xff0c;依法合规地处理用户的手机号信息。 而部分开发者在处理用户手机号过程中&#xff0c;存在不规范收集行为&#xff0c;影响了用户的正常使用体验&a…

如何使用ChatGPT创建个性化的健身锻炼计划

ChatGPT广泛应用于各个行业&#xff0c;健身也不例外。 ChatGPT 在健身领域的一个常用案例是创建个性化的锻炼计划。 在要求 ChatGPT 创建锻炼计划时&#xff0c;简单地输入自己的目标和当前的健身水平是一个很好的开始。完成此操作后&#xff0c;你还可以使用其他提示和措施来…

视频汇聚集中存储EasyCVR平台调用iframe地址视频无法播放,该如何解决?

安防监控视频汇聚平台EasyCVR基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;可提供视频监控直播、云端录像、视频云存储、视频集中存储、视频存储磁盘阵列、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、AI算法中台智能分析无缝…

Git 删除 GitHub仓库的文件

新建文件夹 git bash here 在新建的文件夹里右键git bash here打开终端&#xff0c;并执行git init初始化仓库 git clone <你的地址> 找到github上要删除的仓库地址&#xff0c;并复制&#xff0c;在终端里输入git clone <你的地址> 要删除文件的库里右键git b…

使用 Apache Kafka 和 Go 将数据引入 OpenSearch

需要编写自定义集成层来满足数据管道中的特定要求&#xff1f;了解如何使用 Go 通过 Kafka 和 OpenSearch 实现此目的。 可扩展的数据摄取是OpenSearch等大规模分布式搜索和分析引擎的一个关键方面。构建实时数据摄取管道的方法之一是使用Apache Kafka。它是一个开源事件流平台…

Ceph如何操作底层对象数据

1.基本原理介绍 1.1 ceph中的对象(object) 在Ceph存储中&#xff0c;一切数据最终都会以对象(Object)的形式存储在硬盘&#xff08;OSD&#xff09;上&#xff0c;每个的Object默认大小为4M。 通过rados命令&#xff0c;可以查看一个存储池中的所有object信息&#xff0c;例如…

配资平台app(正规股票配资软件)架构是怎么搭建的?

随着股票市场的发展&#xff0c;越来越多的投资者开始尝试使用股票配资平台进行杠杆炒股&#xff0c;因此&#xff0c;搭建一套稳定、可靠的配资平台app架构显得尤为重要。本文将介绍配资平台app架构设计的关键要素&#xff0c;以及建立一个正规的配资平台app所需考虑的问题。 …

独立站站群模式是什么意思?站群模式的定义?自建站站群策略含义是什么?

什么是独立站站群模式&#xff1f; 在当今数字化时代&#xff0c;互联网已经成为了人们生活中不可或缺的一部分。随着互联网的发展&#xff0c;独立站站群模式逐渐引起了人们的关注。那么&#xff0c;究竟什么是独立站站群模式呢&#xff1f;让我们一起深入了解一下。 独立站…

85-基于stm32单片机厨房MQ4天然气泄露浓度DHT11温湿度监测报警系统Proteus仿真+源码...

资料编号&#xff1a;085 一&#xff1a;功能介绍&#xff1a; 1、采用stm32单片机OLED显示屏MQ4可燃气体浓度检测DHT11温湿度电机按键蜂鸣器&#xff0c;制作一个温湿度采集、MQ4可燃气体浓度采集&#xff0c;OLED显示相关数据&#xff0c; 2、通过按键设置温度上限、可燃气体…

高性能本地缓存Ristretto(四)—— NumCounters 与 MaxCost参数的设置

ristretto 参数 我在使用ristretto时&#xff0c;对于参数的设置有些疑问。主要是 NumCounters &#xff0c;MaxCost 分别表示什么含义&#xff0c;以及如何确定其数值的问题。 在此记录并分享一下&#xff0c;欢迎各位批评指正&#xff0c;谢谢 官方的指导 先看一下官方的…

模糊测试面面观 | 模糊测试工具知多少

自1988年威斯康星大学的Barton Miller首次提出模糊测试这一概念以来&#xff0c;模糊测试领域经历了持续长久发展。模糊测试作为一种软件测试方法&#xff0c;旨在通过向程序输入模糊、随机、异常的数据&#xff0c;探测和发现潜在的漏洞和错误。这种方法备受安全研究人员的青睐…

“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价

近年来&#xff0c;国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究&#xff0c;他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合&#xff0c;评价不同类型研究区的生态脆弱特征&#xff0c;其研究内容…

win下qwidget全屏弹窗后其他窗口鼠标样式无法更新的问题

在win平台下&#xff0c;实现截取选桌面执行推理功能&#xff0c;用一个qwidget(j对象名为m_selectWidget)来显示选取范围的边框&#xff0c;但这个qwidget显示后&#xff0c;其他窗口在他下面可以接受鼠标相应的事件&#xff0c;但原来的鼠标形状功能失效&#xff08;mac正常&…

构建去中心化微服务集群,满足高可用性和高并发需求的实践指南!

随着互联网技术的不断发展&#xff0c;微服务架构已经成为了开发和部署应用程序的一种主流方式。然而&#xff0c;当应用程序需要满足高可用性和高并发需求时&#xff0c;单一中心化的微服务架构可能无法满足性能和可靠性的要求。因此&#xff0c;构建一个去中心化的微服务集群…

Fine tune简介

目录 Intro Related work Example .1 重新训练 .2 使用新的数据集进行fine tune .3 修改net结构 References 移学习不是一种算法而是一种机器学习思想,应用到深度学习就是微调(Fine-tune)。通过修改预训练网络模型结构(如修改样本类别输出个数),选择性载入预训练网络…

BOXTRADE-天启量化分析平台 主要功能介绍

BOXTRADE-天启量化分析平台 主要功能介绍 potato 数学 web 缘起 月晕而风&#xff0c;础润而雨 BOXTRADE-天启量化 欢迎来到天启量化&#xff01;这是一个专注于量化分析的网站。我们致力于为用户提供市场行情技术指标和量化策略分析方面的优质内容和资源。 我们的使命是 做…

马斯克为何说大模型中R语言会替代Python

为什么不是Python&#xff1f; 当今的LLM应用程序&#xff0c;包括推理应用程序和代理&#xff0c;大多是用 Python 编写的。但这种情况即将改变。对于新一波的开发人员来说&#xff0c;Python 实在是太慢、太臃肿&#xff0c;而且要命的是太笨拙了。事实上&#xff0c; LLVM、…