本篇文章采纳 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/plugin… |