前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式 | 如何为 DBLE 搭建 JVM 指标监控系统

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

作者头像
爱可生开源社区
发布2023-08-18 20:45:41
1940
发布2023-08-18 20:45:41
举报

作者:文韵涵

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

本文来源:原创投稿

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


1前言

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

准备

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

2搭建环境

1. 部署 DBLE

该部分参考自 Docker 快速开始[1]

准备 MySQL 容器

代码语言:javascript
复制
# 创建一个 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 服务。
代码语言:javascript
复制
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 采集。

代码语言:javascript
复制
# 创建目录
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 文件配置,其内容为:

代码语言:javascript
复制
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false

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

代码语言:javascript
复制
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 是否启动并退出容器。

代码语言:javascript
复制
/opt/dble/bin/dble restart

vi /opt/dble/logs/wrraper.log

查看 DBLE JVM metric

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

2. 部署 Prometheus

利用 Docker 部署 Prometheus 服务。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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 服务。

代码语言:javascript
复制
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 登录。

3监控指标

导入 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 等相关指标。

4版本注意

  • DBLE 版本<=2.20.04.0,在 bin 目录中的 wrapper.cnf 配置 JMX-Exporter。
代码语言:javascript
复制
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,按照上文配置。

参考资料

[1]

Docker 快速开始: https://actiontech.github.io/dble-docs-cn/0.overview/0.3_quick_start/0.3.1_dble_quick_start_docker.html

本文关键字:#MySQL# #DBLE# #监控#

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1前言
    • 准备
    • 2搭建环境
      • 1. 部署 DBLE
        • 准备 MySQL 容器
        • 部署 DBLE
        • 查看 DBLE JVM metric
      • 2. 部署 Prometheus
        • 3. 部署 Grafana
        • 3监控指标
          • 导入 JVM 监控模版
            • 参考资料
        • 4版本注意
        相关产品与服务
        Prometheus 监控服务
        Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档