Logo
监控与告警

监控与告警 #

说明:

  1. 监控功能只能通过 SphereEx-Console 完成
  2. 目前无告警功能

集群生态工具的监控 #

目前未对 SphereEx-Console 和 SphereEx-Boot 做监控。

集群组件的监控 #

主机监控 #

  • 监控指标
分类子分类指标
资源总览资源总览系统运行时长
CPU 核数
总内存
总CPU使用率
总内存使用率
各空间使用
性能数据性能数据CPU 使用率
内存统计
网络带宽(每秒)
系统负载(1、5、15分钟)
磁盘读写吞吐量(每秒)
磁盘读写速率IOPS
IO操作占比(每秒)
IO读写耗时(每次)
  • 查看监控

    适用场景

    查看主机监控

    注意事项

    • 监控中心正常
    • 主机已经配置监控

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 监控->主机 进入监控列表。
    3. 点击操作列中 监控 按钮查看监控指标。
  • 配置监控

    适用场景

    配置主机监控

    注意事项

    • 监控中心正常
    • 主机已经被注册,对监控插件安装目录有读写权限

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 资源->主机 进入主机列表。
    3. 点击操作列中的 配置监控 进入监控配置页面。
    4. 配置监控信息如下。
    字段数据来源选填/必填说明
    主机IP上一页面
    监控中心用户选择,监控中心列表必填已经安装的监控中心
    监控插件端口默认填充用户可以编辑必填默认填充监控插件对应的默认端口,可编辑
    监控插件安装目录默认填充,用户可以编辑默认填充监控插件对应的默认安装目录,可编辑
    1. 点击 安装 完成监控插件的安装和监控中心配置。

数据库监控 #

  • 监控指标
分类子分类指标
概览概览实例存活
文件打开数
从库只读
主从延迟
从库 SQL 线程
从库 IO 线程
是否开启慢查询
慢查询阈值
性能指标性能指标QPS(指定时间内的 Queries 值/ 时间)
TPS((com_insert + com_delete + com_update + com_select ) 数量 / 时间)
入口流量
出口流量
慢查询数量
当前连接数
缓冲池利用率
  • 查看监控

    适用场景

    查看数据库实例监控

    注意事项

    • 监控中心正常
    • 数据库已经配置监控

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 监控->数据库 进入监控列表。
    3. 点击操作列中 监控 按钮查看监控指标。
  • 配置监控

    适用场景

    配置数据库监控

    注意事项

    • 监控中心正常
    • 数据库主机已经被注册,对监控插件安装目录有读写权限

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 资源->数据库 进入主机列表。
    3. 点击操作列中的 配置监控 进入监控配置页面。
    4. 配置监控信息如下。
    字段数据来源选填/必填说明
    监控中心用户选择,监控中心列表必填已经安装的监控中心
    监控插件端口默认填充用户可以编辑必填
    监控插件安装目录默认填充用户可以编辑默认填充监控插件对应的默认安装目录,可编辑
    数据库监控用户用户输入必填
    数据库监控口令用户输入必填密码保护
    1. 点击 安装 完成监控插件的安装和监控中心配置。

治理中心监控 #

  • 监控指标
分类子分类指标
概览概览ZK 集群节点状态
节点角色
Follower 数
性能指标性能指标平均响应延迟
最大响应延迟
最小响应延迟
收包数
发包数
活跃连接数
堆积请求数
主从状态
znode 数
watch 数
临时节点数
近似数据总和大小
打开文件描述符数
最大文件描述符数
阻塞中的 sync 操作
  • 查看监控

    适用场景

    查看治理中心实例监控

    注意事项

    • 监控中心正常
    • 治理中心已经配置监控

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 监控->治理中心 进入治理中心列表。
    3. 点击操作列中 节点监控 进入监控列表。
    4. 点击操作列中 监控 按钮查看监控指标。
  • 配置监控

    适用场景

    配置治理中心监控

    注意事项

    • 监控中心正常
    • 治理中心主机已经被注册,对监控插件安装目录有读写权限

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 资源->治理中心 进入主机列表。
    3. 点击操作列中的 配置监控 进入监控配置页面。
    4. 配置监控信息如下。
    字段数据来源选填/必填说明
    监控中心用户选择必填一个集群只允许有一个监控中心;
    治理中心节点IP自动填充,前一页面信息必填不可编辑
    治理中心节点端口自动填充,前一页面信息必填不可编辑
    监控插件端口默认填充用户可以编辑必填默认填充监控插件对应的默认端口,可编辑
    监控插件安装目录默认填充用户可以编辑默认填充监控插件对应的默认安装目录,可编辑
    1. 点击 安装 完成监控插件的安装和监控中心配置。

监控中心监控 #

  • 监控指标
分类子分类指标
概览概览版本
监控的实例数
线程数
上次成功重新加载配置的时间
上次配置重新加载是否成功
chunk总数
创建的 chunks 数量
移除的 chunks 数量
samples 总数
  • 查看监控

    适用场景

    查看监控中心自身监控

    注意事项

    监控中心正常

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 监控->监控中心 进入监控列表。
    3. 点击操作列中 监控 按钮查看监控指标。
  • 配置监控

    安装监控中心时默认打开监控中心的自身监控,无需单独配置。

日志中心监控 #

Todo

此功能在 Console 1.2 版本中实现。

集群监控 #

  • 监控指标
分类子分类指标
概览集群概览组件节点数
存储节点数量
计算节点数量
治理中心节点数量
元数据元数据逻辑库数量
用户数量
表数量(逻辑表+单表)
分片表数量
广播表数量
表组数量
单表数量
加密表数量
所有插件的数量(不含单表插件)
性能数据连接详情路由数量(瞬时值、变化值、变化率)
执行数量(瞬时值、变化值、变化率)
解析数量(瞬时值、变化值、变化率)
请求数量(瞬时值、变化值、变化率)
连接数(瞬时值)
性能详情QPS
TPS
请求字节数
响应字节数
响应时间
事务总数
提交事务数
回滚事务数
事务回滚率
连接持续时长(分析)
请求持续时长(分析)
解析引擎DML sqlInsert 总量
Delete 总量
Update 总量
Select 总量
sql统计(Insert\Delete\ Update\ Select )
DDL sqlDDL 总量
DCL 总量
DAL 总量
TCL 总量
sql统计(DDL\ DCL\ DAL\ TCL )
DistSQLRQL 总量
RDL 总量
RAL 总量
DistSQL统计(RQL\ RDL\ RAL )
解析时长
路由引擎路由引擎数据源路由
表路由分析TOP10
线程情况线程情况当前线程数量
守护线程数量
线程峰值数量
线程启动总数
线程死锁数
JVM线程状态数据
错误统计错误统计错误总数
错误数量
  • 查看监控

    适用场景

    查看集群监控

    注意事项

    • 监控中心正常
    • 集群已经配置监控

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 监控->集群 进入监控列表。
    3. 点击操作列中 监控 按钮查看监控指标。
  • 配置监控

    适用场景

    配置集群监控,实际上是配置计算节点的监控。

    注意事项

    • 监控中心正常。
    • 集群计算节点主机已经被注册,对监控插件安装目录有读写权限。

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 集群管理->集群 进入主机列表。
    3. 点击操作列中的 配置监控 进入监控配置页面。
    4. 配置监控信息如下。
    字段数据来源选填/必填说明
    计算节点IP前一页面输入必填不可编辑
    监控插件端口用户输入必填自建集群,监控插件端口自动填充,不允许修改,注册集群,用户可自己填充
    1. 点击 添加监控配置 完成监控中心配置。

计算节点监控 #

  • 监控指标
分类子分类指标
概览概要JDK版本信息
启动时间
计算节点版本
运行状态
运行时长
已使用内存大小
已使用缓存池大小
性能数据性能数据请求总量
路由总量
执行总量
解析总量
请求数量
解析数量
路由数量
执行数量
QPS
TPS
事务回滚率
元数据元数据逻辑库数量
用户数量
表数量(逻辑表+单表)
分片表数量
解析引擎DML sqlInsert 总量
Delete 总量
Update 总量
Select 总量
sql统计(Insert\Delete\ Update\ Select )
DDL sqlDDL 总量
DCL 总量
DAL 总量
TCL 总量
sql统计(DDL\ DCL\ DAL\ TCL )
DistSQLRQL 总量
RDL 总量
RAL 总量
DistSQL统计(RQL\ RDL\ RAL )
解析时长
路由引擎路由引擎数据源路由
表路由分析TOP10
线程情况线程情况当前线程数量
守护线程数量
线程峰值数量
线程启动总数
线程死锁数
JVM线程状态数据
错误统计错误统计错误总数
错误数量
  • 查看监控

    适用场景

    查看集群监控

    注意事项

    • 监控中心正常
    • 集群已经配置监控

    操作步骤

    1. 登录 SphereEx-Console。
    2. 点击 监控->集群 进入集群列表。
    3. 点击操作列中 节点监控 进入计算节点列表。
    4. 点击操作列中 监控 查看监控指标。
  • 配置监控

    通过配置集群监控完成。

存储节点监控 #

目前不支持单独监控存储节点。

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、falseTRUE
long-query-time慢查询阈值(毫秒) 正整数5000
general-query-log全量查询日志 true、falseTRUE
jvm-information-collector-enabled是否开启 JVM 采集器 true、falseTRUE
otel.service.name链路跟踪的服务名称 任意字符串shardingsphere
otel.traces.exporter导出器 jaeger、zipkinjaeger
otel.exporter.otlp.traces.endpoint数据发送地址 实际接收数据地址http://localhost:14250
otel.traces.sampler采样器 always_onalways_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_totalSQL 解析数,按 INSERT、DELETE、UPDATE、SELECT、DDL、DCL、DAL、TCL、RQL、RDL、RAL、RUL 类型区分COUNTER
routed_sql_totalSQL 路由数,按 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_totalSQL 解析数,按 INSERT、DELETE、UPDATE、SELECT、DDL、DCL、DAL、TCL、类型区分COUNTER
routed_sql_totalSQL 路由数,按 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