监控与告警 #
说明:
- 监控功能只能通过 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 默认提供了对 SkyWalking,Zipkin,Jaeger 和 OpenTelemetry 的支持,也支持用户通过插件化的方式开发自定义的 Tracing 组件。
- 使用 Zipkin 和 Jaeger
通过在 agent 配置文件中开启对应的插件,并配置好 Zipkin 或者 Jaeger 服务器信息即可。
- 使用 OpenTelemetry
OpenTelemetry 在2019年由 OpenTracing 和 OpenCencus 合并而来。 使用这种方式,只需要在agent配置文件中,根据 OpenTelemetry SDK自动配置说明 ,填写合适的配置即可。
- 使用 SkyWalking
需要在 agent 配置中配置启用对应插件,并且需要同时配置使用 SkyWalking 的 apm-toolkit 工具。
- 使用 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 目录。
mkdir agent
tar -zxvf apache-shardingsphere-${latest.release.version}-shardingsphere-agent-bin.tar.gz -C agent
cd agent
tree
.
├── conf
│ └── agent.yaml
├── lib
│ ├── ...
├── plugins
│ ├── ...
├── template
│ └── dbplusengine-grafana-template.json
└── tool
└── ...
- 配置说明
agent.yaml 是配置文件,插件有 Jaeger、OpenTracing、Zipkin、OpenTelemetry、Logging、Prometheus。 如果需要开启插件时,只需要注释掉 ignoredPluginNames 中对应的插件即可。
plugins:
logging:
BaseLogging:
props:
slow-query-log: true
long-query-time: 5000
general-query-log: false
# metrics:
# Prometheus:
# host: "0.0.0.0"
# port: 9090
# props:
# jvm-information-collector-enabled: "true"
# tracing:
# Jaeger:
# host: "localhost"
# port: 5775
# props:
# service-name: "dbplusengine"
# jaeger-sampler-type: "const"
# jaeger-sampler-param: "1"
# Zipkin:
# host: "localhost"
# port: 9411
# props:
# service-name: "dbplusengine"
# url-version: "/api/v2/spans"
# sampler-type: "const"
# sampler-param: "1"
# SkyWalking:
# props:
# opentracing-tracer-class-name: "org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
# OpenTelemetry:
# props:
# otel-resource-attributes: "service.name=dbplusengine"
# otel-traces-exporter: "zipkin"
- 参数说明
名称 | 说明 | 取值范围 | 默认值 |
---|---|---|---|
jvm-information-collector-enabled | 是否开启 JVM 采集器 | true、false | true |
service-name | 链路跟踪的服务名称 | 自定义 | dbplusengine |
jaeger-sampler-type | Jaeger 采样率类型 | const、probabilistic、ratelimiting、remote | const |
jaeger-sampler-param | Jaeger 采样率参数 | const:0、1,probabilistic:0.0 - 1.0,ratelimiting:> 0,自定义每秒采集数量,remote:需要自定义配置远程采样率管理服务地址,JAEGER_SAMPLER_MANAGER_HOST_PORT | 1(const 类型) |
url-version | Zipkin url 地址 | 自定义 | /api/v2/spans |
sampler-type | Zipkin 采样率类型 | const、counting、ratelimiting、boundary | const |
sampler-param | Zipkin 采样率参数 | const: 0、1,counting:0.01 - 1.0,ratelimiting:> 0,自定义每秒采集数量,boundary: 0.0001 - 1.0 | 1(const 类型) |
otel-resource-attributes | opentelemetry 资源属性 | 字符串键值对(,分割) | service.name=dbplusengine-agent |
otel-traces-exporter | Tracing expoter | zipkin、jaeger | zipkin |
otel-traces-sampler | opentelemetry 采样率类型 | always_on、always_off、traceidratio | always_on |
otel-traces-sampler-arg | opentelemetry 采样率参数 | traceidratio:0.0 - 1.0 | 1.0 |
Agent Metrics
指标 | 描述 | 指标类型 |
---|---|---|
proxy_request_total | 请求总数 | COUNTER |
proxy_connection_total | 连接总数 | GAUGE |
proxy_execute_latency_millis | 请求持续时长(毫秒) | HISTOGRAM |
proxy_execute_error_total | 执行异常数 | COUNTER |
proxy_info | Proxy 信息, name 标签值不同时代表不同的信息内容。 state : Proxy 运行状态值, 1 代表运行、 2 代表熔断。uptime: 运行时长毫秒。init-metadata-duration: 元数据加载耗时毫秒。init-socket-duration: 网络启动耗时毫秒。Init-backend-duration: 后端启动耗时毫秒。boot-duration: 启动时长耗时毫秒。boot-time: 启动时间毫秒值时间戳 | GAUGE |
arse_dist_sql_rql_total | 解析 RQL 类型 DistSQL 总数 | COUNTER |
parse_dist_sql_rdl_total | 解析 RDL 类型 DistSQL 总数 | COUNTER |
parse_dist_sql_ral_total | 解析 RAL 类型 DistSQL 总数 | COUNTER |
route_sql_select_total | 路由执行 select SQL 语句总数 | COUNTER |
route_sql_insert_total | 路由执行 insert SQL 语句总数 | COUNTER |
route_sql_update_total | 路由执行 update SQL 语句总数 | COUNTER |
route_sql_delete_total | 路由执行 delete SQL 语句总数 | COUNTER |
route_datasource_total | 数据源路由数,name 标签代表添加的数据源名 | COUNTER |
route_table_total | 表路由数,name 标签代表表名 | COUNTER |
parse_sql_dml_insert_total | 解析 insert SQL 语句总数 | COUNTER |
parse_sql_dml_delete_total | 解析 delete SQL 语句总数 | COUNTER |
parse_sql_dml_update_total | 解析 update SQL 语句总数 | COUNTER |
parse_sql_dml_select_total | 解析 select SQL 语句总数 | COUNTER |
parse_sql_ddl_total | 解析 DDL SQL 语句总数 | COUNTER |
parse_sql_dcl_total | 解析 DCL SQL 语句总数 | COUNTER |
parse_sql_dal_total | 解析 DAL SQL 语句总数 | COUNTER |
parse_sql_tcl_total | 解析 TCL SQL 语句总数 | COUNTER |
proxy_transaction_autocommit_total | 自动提交事务总数 | COUNTER |
proxy_connection_usage_sec | 连接持续时长 | HISTOGRAM |
proxy_request_bytes | 请求字节数量 | HISTOGRAM |
proxy_response_bytes | 响应字节数量 | HISTOGRAM |
route_sql_latency_millis | 路由 SQL 耗时 | HISTOGRAM |
parse_sql_latency_millis | 解析时长 | HISTOGRAM |
parse_sql_in_commit | commit 中解析 SQL 数 | HISTOGRAM |
parse_sql_in_rollback | rollback 中解析 SQL 数 | HISTOGRAM |
proxy_execute_error_typed_total | 执行错误总数,name 标签代表异常类名 | COUNTER |
parse_sql_total | 解析 SQL 总数 | COUNTER |
proxy_execute_total | 执行任务总数 | COUNTER |
proxy_backend_executor_thread_info | 后端执行线程池信息,不同 name 的标签代表不同状态的线程信息。(仅对执行任务会影响多个实际数据库表时具有参考意义,比如分片数据查询)task_pending: 待执行任务数;task_running: 正在执行任务数;task_completed: 累计完成任务数;kernel_executor_size: server.yaml 文件中 kernel_executor_size 参数配置值。 | GAUGE |
DBPlusEngine-Proxy 中使用 Agent #
在 sphereex-dbplusengine-proxy/bin/
目录下,为用户提供了两个启动脚本:
start.sh
start-with-agent.sh
当用户需要 Agent 功能时,请通过start-with-agent.sh
启动 DBPlusEngine-Proxy。
bin/start-with-agent.sh
启动成功后,可在 DBPlusEngine-Proxy 日志中找到 plugin 的加载信息。
若开启了 metrics
或 tracing
配置,则在访问 Proxy 后,可以通过配置的监控地址查看到相关数据。
正常启动可以在对应的 DBPlusEngine-Proxy 日志查看到 plugin 的启动日志,访问 Proxy 后,可以通过配置的地址查看到 Metric 和 Tracing 的数据。