监控与告警 #
说明:
- 监控功能只能通过 SphereEx-Console 完成
- 目前无告警功能
集群生态工具的监控 #
目前未对 SphereEx-Console 和 SphereEx-Boot 做监控。
集群组件的监控 #
主机监控 #
- 监控指标
分类 | 子分类 | 指标 |
---|---|---|
资源总览 | 资源总览 | 系统运行时长 |
CPU 核数 | ||
总内存 | ||
总CPU使用率 | ||
总内存使用率 | ||
各空间使用 | ||
性能数据 | 性能数据 | CPU 使用率 |
内存统计 | ||
网络带宽(每秒) | ||
系统负载(1、5、15分钟) | ||
磁盘读写吞吐量(每秒) | ||
磁盘读写速率IOPS | ||
IO操作占比(每秒) | ||
IO读写耗时(每次) |
查看监控
适用场景
查看主机监控
注意事项
- 监控中心正常
- 主机已经配置监控
操作步骤
- 登录 SphereEx-Console。
- 点击 监控->主机 进入监控列表。
- 点击操作列中 监控 按钮查看监控指标。
配置监控
适用场景
配置主机监控
注意事项
- 监控中心正常
- 主机已经被注册,对监控插件安装目录有读写权限
操作步骤
- 登录 SphereEx-Console。
- 点击 资源->主机 进入主机列表。
- 点击操作列中的 配置监控 进入监控配置页面。
- 配置监控信息如下。
字段 数据来源 选填/必填 说明 主机IP 上一页面 监控中心 用户选择,监控中心列表 必填 已经安装的监控中心 监控插件端口 默认填充用户可以编辑 必填 默认填充监控插件对应的默认端口,可编辑 监控插件安装目录 默认填充,用户可以编辑 默认填充监控插件对应的默认安装目录,可编辑 - 点击 安装 完成监控插件的安装和监控中心配置。
数据库监控 #
- 监控指标
分类 | 子分类 | 指标 |
---|---|---|
概览 | 概览 | 实例存活 |
文件打开数 | ||
从库只读 | ||
主从延迟 | ||
从库 SQL 线程 | ||
从库 IO 线程 | ||
是否开启慢查询 | ||
慢查询阈值 | ||
性能指标 | 性能指标 | QPS(指定时间内的 Queries 值/ 时间) |
TPS((com_insert + com_delete + com_update + com_select ) 数量 / 时间) | ||
入口流量 | ||
出口流量 | ||
慢查询数量 | ||
当前连接数 | ||
缓冲池利用率 |
查看监控
适用场景
查看数据库实例监控
注意事项
- 监控中心正常
- 数据库已经配置监控
操作步骤
- 登录 SphereEx-Console。
- 点击 监控->数据库 进入监控列表。
- 点击操作列中 监控 按钮查看监控指标。
配置监控
适用场景
配置数据库监控
注意事项
- 监控中心正常
- 数据库主机已经被注册,对监控插件安装目录有读写权限
操作步骤
- 登录 SphereEx-Console。
- 点击 资源->数据库 进入主机列表。
- 点击操作列中的 配置监控 进入监控配置页面。
- 配置监控信息如下。
字段 数据来源 选填/必填 说明 监控中心 用户选择,监控中心列表 必填 已经安装的监控中心 监控插件端口 默认填充 用户可以编辑 必填 监控插件安装目录 默认填充 用户可以编辑 默认填充监控插件对应的默认安装目录,可编辑 数据库监控用户 用户输入 必填 数据库监控口令 用户输入 必填 密码保护 - 点击 安装 完成监控插件的安装和监控中心配置。
治理中心监控 #
- 监控指标
分类 | 子分类 | 指标 |
---|---|---|
概览 | 概览 | ZK 集群节点状态 |
节点角色 | ||
Follower 数 | ||
性能指标 | 性能指标 | 平均响应延迟 |
最大响应延迟 | ||
最小响应延迟 | ||
收包数 | ||
发包数 | ||
活跃连接数 | ||
堆积请求数 | ||
主从状态 | ||
znode 数 | ||
watch 数 | ||
临时节点数 | ||
近似数据总和大小 | ||
打开文件描述符数 | ||
最大文件描述符数 | ||
阻塞中的 sync 操作 |
查看监控
适用场景
查看治理中心实例监控
注意事项
- 监控中心正常
- 治理中心已经配置监控
操作步骤
- 登录 SphereEx-Console。
- 点击 监控->治理中心 进入治理中心列表。
- 点击操作列中 节点监控 进入监控列表。
- 点击操作列中 监控 按钮查看监控指标。
配置监控
适用场景
配置治理中心监控
注意事项
- 监控中心正常
- 治理中心主机已经被注册,对监控插件安装目录有读写权限
操作步骤
- 登录 SphereEx-Console。
- 点击 资源->治理中心 进入主机列表。
- 点击操作列中的 配置监控 进入监控配置页面。
- 配置监控信息如下。
字段 数据来源 选填/必填 说明 监控中心 用户选择 必填 一个集群只允许有一个监控中心; 治理中心节点IP 自动填充,前一页面信息 必填 不可编辑 治理中心节点端口 自动填充,前一页面信息 必填 不可编辑 监控插件端口 默认填充用户可以编辑 必填 默认填充监控插件对应的默认端口,可编辑 监控插件安装目录 默认填充用户可以编辑 默认填充监控插件对应的默认安装目录,可编辑 - 点击 安装 完成监控插件的安装和监控中心配置。
监控中心监控 #
- 监控指标
分类 | 子分类 | 指标 |
---|---|---|
概览 | 概览 | 版本 |
监控的实例数 | ||
线程数 | ||
上次成功重新加载配置的时间 | ||
上次配置重新加载是否成功 | ||
chunk总数 | ||
创建的 chunks 数量 | ||
移除的 chunks 数量 | ||
samples 总数 |
查看监控
适用场景
查看监控中心自身监控
注意事项
监控中心正常
操作步骤
- 登录 SphereEx-Console。
- 点击 监控->监控中心 进入监控列表。
- 点击操作列中 监控 按钮查看监控指标。
配置监控
安装监控中心时默认打开监控中心的自身监控,无需单独配置。
日志中心监控 #
Todo
此功能在 Console 1.2 版本中实现。
集群监控 #
- 监控指标
分类 | 子分类 | 指标 |
---|---|---|
概览 | 集群概览 | 组件节点数 |
存储节点数量 | ||
计算节点数量 | ||
治理中心节点数量 | ||
元数据 | 元数据 | 逻辑库数量 |
用户数量 | ||
表数量(逻辑表+单表) | ||
分片表数量 | ||
广播表数量 | ||
表组数量 | ||
单表数量 | ||
加密表数量 | ||
所有插件的数量(不含单表插件) | ||
性能数据 | 连接详情 | 路由数量(瞬时值、变化值、变化率) |
执行数量(瞬时值、变化值、变化率) | ||
解析数量(瞬时值、变化值、变化率) | ||
请求数量(瞬时值、变化值、变化率) | ||
连接数(瞬时值) | ||
性能详情 | QPS | |
TPS | ||
请求字节数 | ||
响应字节数 | ||
响应时间 | ||
事务总数 | ||
提交事务数 | ||
回滚事务数 | ||
事务回滚率 | ||
连接持续时长(分析) | ||
请求持续时长(分析) | ||
解析引擎 | DML sql | Insert 总量 |
Delete 总量 | ||
Update 总量 | ||
Select 总量 | ||
sql统计(Insert\Delete\ Update\ Select ) | ||
DDL sql | DDL 总量 | |
DCL 总量 | ||
DAL 总量 | ||
TCL 总量 | ||
sql统计(DDL\ DCL\ DAL\ TCL ) | ||
DistSQL | RQL 总量 | |
RDL 总量 | ||
RAL 总量 | ||
DistSQL统计(RQL\ RDL\ RAL ) | ||
解析时长 | ||
路由引擎 | 路由引擎 | 数据源路由 |
表路由分析TOP10 | ||
线程情况 | 线程情况 | 当前线程数量 |
守护线程数量 | ||
线程峰值数量 | ||
线程启动总数 | ||
线程死锁数 | ||
JVM线程状态数据 | ||
错误统计 | 错误统计 | 错误总数 |
错误数量 |
查看监控
适用场景
查看集群监控
注意事项
- 监控中心正常
- 集群已经配置监控
操作步骤
- 登录 SphereEx-Console。
- 点击 监控->集群 进入监控列表。
- 点击操作列中 监控 按钮查看监控指标。
配置监控
适用场景
配置集群监控,实际上是配置计算节点的监控。
注意事项
- 监控中心正常。
- 集群计算节点主机已经被注册,对监控插件安装目录有读写权限。
操作步骤
- 登录 SphereEx-Console。
- 点击 集群管理->集群 进入主机列表。
- 点击操作列中的 配置监控 进入监控配置页面。
- 配置监控信息如下。
字段 数据来源 选填/必填 说明 计算节点IP 前一页面输入 必填 不可编辑 监控插件端口 用户输入 必填 自建集群,监控插件端口自动填充,不允许修改,注册集群,用户可自己填充 - 点击 添加监控配置 完成监控中心配置。
计算节点监控 #
- 监控指标
分类 | 子分类 | 指标 |
---|---|---|
概览 | 概要 | JDK版本信息 |
启动时间 | ||
计算节点版本 | ||
运行状态 | ||
运行时长 | ||
已使用内存大小 | ||
已使用缓存池大小 | ||
性能数据 | 性能数据 | 请求总量 |
路由总量 | ||
执行总量 | ||
解析总量 | ||
请求数量 | ||
解析数量 | ||
路由数量 | ||
执行数量 | ||
QPS | ||
TPS | ||
事务回滚率 | ||
元数据 | 元数据 | 逻辑库数量 |
用户数量 | ||
表数量(逻辑表+单表) | ||
分片表数量 | ||
解析引擎 | DML sql | Insert 总量 |
Delete 总量 | ||
Update 总量 | ||
Select 总量 | ||
sql统计(Insert\Delete\ Update\ Select ) | ||
DDL sql | DDL 总量 | |
DCL 总量 | ||
DAL 总量 | ||
TCL 总量 | ||
sql统计(DDL\ DCL\ DAL\ TCL ) | ||
DistSQL | RQL 总量 | |
RDL 总量 | ||
RAL 总量 | ||
DistSQL统计(RQL\ RDL\ RAL ) | ||
解析时长 | ||
路由引擎 | 路由引擎 | 数据源路由 |
表路由分析TOP10 | ||
线程情况 | 线程情况 | 当前线程数量 |
守护线程数量 | ||
线程峰值数量 | ||
线程启动总数 | ||
线程死锁数 | ||
JVM线程状态数据 | ||
错误统计 | 错误统计 | 错误总数 |
错误数量 |
查看监控
适用场景
查看集群监控
注意事项
- 监控中心正常
- 集群已经配置监控
操作步骤
- 登录 SphereEx-Console。
- 点击 监控->集群 进入集群列表。
- 点击操作列中 节点监控 进入计算节点列表。
- 点击操作列中 监控 查看监控指标。
配置监控
通过配置集群监控完成。
存储节点监控 #
目前不支持单独监控存储节点。
Agent 管理 #
Agent 介绍 #
背景
如何观测集群的运行状态,使运维人员可以快速掌握当前系统现状,并进行进一步的维护工作,是分布式系统的全新挑战。 登录到具体服务器的点对点运维方式,无法适用于面向大量分布式服务器的场景。 通过对可系统观察性数据的遥测是分布式系统推荐的运维方式。 Tracing(链路跟踪)、 Metrics(指标监控)和 Logging (日志)是系统运行状况的可观察性数据重要的获取手段。 APM(应用性能监控) 是通过对系统可观察性数据进行采集、存储和分析,进行系统的性能监控与诊断,主要功能包括性能指标监控、调用链分析,应用拓扑图等。 DBPlusEngine 并不负责如何采集、存储以及展示应用性能监控的相关数据,而是为应用监控系统提供必要的指标数据。 换句话说,DBPlusEngine 仅负责产生具有价值的数据,并通过标准协议或插件化的方式递交给相关系统。 Tracing 用于获取 SQL 解析与 SQL 执行的链路跟踪信息。DBPlusEngine 默认提供了对 OpenTelemetry 的支持,可以导出 tracing 数据到 Jaeger、Zipkin。也支持用户通过插件化的方式开发自定义的 Tracing 组件。
- 使用 OpenTelemetry
OpenTelemetry 在2019年由 OpenTracing 和 OpenCencus 合并而来。 使用这种方式,只需要在 agent 配置文件中,根据 OpenTelemetry SDK自动配置说明 ,填写合适的配置即可。
- 使用 SkyWalking 的内置自动探针
DBPlusEngine 团队与 Apache SkyWalking团队共同合作,在 SkyWalking 中实现了 DBPlusEngine 自动探针,可以将相关的应用性能数据自动发送到 SkyWalking 中。注意这种方式的自动探针不能与 DBPlusEngine 插件探针同时使用。
Metrics 则用于收集和展示整个集群的统计指标。DBPlusEngine 默认提供了对 Prometheus 的支持。
挑战
Tracing 和 Metrics 需要通过埋点来收集系统信息。 大量的埋点使项目核心代码支离破碎,难于维护,且不易定制化统计指标。
目标
提供尽量多的性能和统计指标,并隔离核心代码和埋点代码,是 DBPlusEngine 可观察性模块的设计目标。
核心概念
- 代理
基于字节码增强和插件化设计,以提供 tracing 和 metrics 埋点,以及日志输出功能。 需要开启代理的插件功能后,才能将监控指标数据输出至第三方 APM 中展示。
- APM
APM 是应用性能监控的缩写。 着眼于分布式系统的性能诊断,其主要功能包括调用链展示,应用拓扑分析等。
- Tracing
链路跟踪,通过探针收集调用链数据,并发送到第三方 APM 系统。
- Metrics
系统统计指标,通过探针收集,并且写入到时序数据库,供第三方应用展示。
Agent 配置 #
Agent 配置
- 目录说明 创建 Agent 目录,解压 Agent 二进制包到 agent 目录。
mkdir agent
tar -zxvf apache-shardingsphere-${latest.release.version}-shardingsphere-agent-bin.tar.gz -C agent
cd agent
tree
.
├── LICENSE
├── NOTICE
├── README.txt
├── conf
│ └── agent.yaml
├── plugins
│ ├── lib
│ │ ├── shardingsphere-agent-metrics-core-${latest.release.version}-SNAPSHOT.jar
│ │ └── shardingsphere-agent-plugin-core-${latest.release.version}-SNAPSHOT.jar
│ ├── logging
│ │ └── shardingsphere-agent-logging-file-${latest.release.version}-SNAPSHOT.jar
│ ├── metrics
│ │ └── shardingsphere-agent-metrics-prometheus-${latest.release.version}-SNAPSHOT.jar
│ └── tracing
│ ├── shardingsphere-agent-tracing-opentelemetry-${latest.release.version}-SNAPSHOT.jar
│ └── shardingsphere-agent-tracing-opentracing-${latest.release.version}-SNAPSHOT.jar
├── shardingsphere-agent-${latest.release.version}-SNAPSHOT.jar
└── template
├── dbplusengine-driver-grafana-template.json
└── dbplusengine-proxy-grafana-template.json
- 配置说明
agent.yaml 是配置文件,插件有 OpenTracing、OpenTelemetry、File、Prometheus。 如果需要开启插件时,只需要开启应的插件即可。如下开启 logging 中的 File 插件配置。
plugins:
logging:
File:
props:
slow-query-log: true
long-query-time: 5000
general-query-log: true
# metrics:
# Prometheus:
# host: "localhost"
# port: 9090
# props:
# jvm-information-collector-enabled: "true"
# tracing:
# OpenTelemetry:
# props:
# otel.service.name: "shardingsphere"
# otel.traces.exporter: "jaeger"
# otel.exporter.otlp.traces.endpoint: "http://localhost:14250"
# otel.traces.sampler: "always_on"
- 参数说明
名称 | 说明 | 取值范围 | 默认值 |
---|---|---|---|
slow-query-log | 是否开启慢查询日志 true、false | TRUE | |
long-query-time | 慢查询阈值(毫秒) 正整数 | 5000 | |
general-query-log | 全量查询日志 true、false | TRUE | |
jvm-information-collector-enabled | 是否开启 JVM 采集器 true、false | TRUE | |
otel.service.name | 链路跟踪的服务名称 任意字符串 | shardingsphere | |
otel.traces.exporter | 导出器 jaeger、zipkin | jaeger | |
otel.exporter.otlp.traces.endpoint | 数据发送地址 实际接收数据地址 | http://localhost:14250 | |
otel.traces.sampler | 采样器 always_on | always_on |
OpenTelemetry 中的更多配置参数可以参考: OpenTelemetry SDK自动配置说明
DBPlusEngine-Proxy 中使用 Agent #
启动 Proxy 的同时启动Agent
bin/start.sh -g
正常启动可以在对应的 DBPlusEngine-Proxy 日志查看到 plugin 的启动日志,访问 Proxy 后,可以通过配置的地址查看到 Metric 和 Tracing 的数据。
Agent Metrics
指标 | 描述 | 指标类型 |
---|---|---|
build_info | 构建版本信息 | GAUGE |
proxy_info | “运行信息,type 标签区分类型。boot-time 表示启动时间的时间戳,boot-duration 表示启动耗时(毫秒) ,uptime 表示截止已运行时间(毫秒)” | GAUGE |
proxy_meta_data_info | 元数据信息 | GAUGE |
proxy_state | 状态信息,0正常状态,1 熔断状态,2 锁定状态 | GAUGE |
proxy_current_connections | 当前客户端连接数 | GAUGE |
parsed_sql_total | SQL 解析数,按 INSERT、DELETE、UPDATE、SELECT、DDL、DCL、DAL、TCL、RQL、RDL、RAL、RUL 类型区分 | COUNTER |
routed_sql_total | SQL 路由数,按 INSERT、DELETE、UPDATE、SELECT 类型区分 | COUNTER |
routed_result_total | 路由结果数,统计路由到的存储节点和表的次数 | COUNTER |
proxy_transactions_total | 事务总数,按 commit, rollback, autocommit 分类 | COUNTER |
proxy_execute_errors_total | 执行异常数, 按异常类型分类 | COUNTER |
proxy_requests_total | 接收请求数 | COUNTER |
proxy_execute_total | 执行总数(统计路由到存储节点执行的 SQL 数) | COUNTER |
proxy_execute_error_total | 执行异常数 | COUNTER |
proxy_request_bytes_total | 请求字节数 | COUNTER |
proxy_response_bytes_total | 响应字节数 | COUNTER |
parse_sql_latency_millis | 解析 SQL 耗时 | HISTOGRAM |
route_sql_latency_millis | 路由 SQL 耗时 | HISTOGRAM |
proxy_execute_latency_millis | 执行耗时 | HISTOGRAM |
commit_sql_count_histogram | 每次事务中提交 SQL 数量分布HISTOGRAM | |
rollback_sql_count_histogram | 每次回滚事务中 SQL 数量分布 | HISTOGRAM |
proxy_connection_usage_seconds | 连接到 Proxy 的连接持续时长分布 | HISTOGRAM |
DBPlusEngine-Driver 中使用 Agent #
启动Agent
准备集成了 DBPlusEngine-Driver 的项目,比如 SpringBoot 项目
启动时添加 javaagent 配置
java -javaagent:/xxx/shardingsphere-agent-${latest.release.version}.jar -jar spring-boot-dbplusengine-driver-test.jar
Agent Metrics
指标 | 描述 | 指标类型 |
---|---|---|
build_info | 构建版本信息 | GAUGE |
jdbc_state | 状态,0正常状态,1 熔断状态,2 锁定状态 | GAUGE |
jdbc_meta_data_info | 元数据信息 | GAUGE |
parsed_sql_total | SQL 解析数,按 INSERT、DELETE、UPDATE、SELECT、DDL、DCL、DAL、TCL、类型区分 | COUNTER |
routed_sql_total | SQL 路由数,按 INSERT、DELETE、UPDATE、SELECT 类型区分 | COUNTER |
routed_result_total | 路由结果数,统计路由到的存储节点和表的次数 | COUNTER |
jdbc_statement_execute_total | 执行 SQL 语句数 | COUNTER |
jdbc_statement_execute_errors_total | 执行异常数 | COUNTER |
jdbc_transactions_total | 事务数,按 commit, rollback, autocommit 分类 | COUNTER |
jdbc_statement_execute_latency_millis | 执行 SQL 耗时 | HISTOGRAM |
parse_sql_latency_millis | 解析 SQL 耗时 | HISTOGRAM |
route_sql_latency_millis | 路由 SQL 耗时 | HISTOGRAM |