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 默认提供了对 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、falsetrue
service-name链路跟踪的服务名称自定义dbplusengine
jaeger-sampler-typeJaeger 采样率类型const、probabilistic、ratelimiting、remoteconst
jaeger-sampler-paramJaeger 采样率参数const:0、1,probabilistic:0.0 - 1.0,ratelimiting:> 0,自定义每秒采集数量,remote:需要自定义配置远程采样率管理服务地址,JAEGER_SAMPLER_MANAGER_HOST_PORT1(const 类型)
url-versionZipkin url 地址自定义/api/v2/spans
sampler-typeZipkin 采样率类型const、counting、ratelimiting、boundaryconst
sampler-paramZipkin 采样率参数const: 0、1,counting:0.01 - 1.0,ratelimiting:> 0,自定义每秒采集数量,boundary: 0.0001 - 1.01(const 类型)
otel-resource-attributesopentelemetry 资源属性字符串键值对(,分割)service.name=dbplusengine-agent
otel-traces-exporterTracing expoterzipkin、jaegerzipkin
otel-traces-sampleropentelemetry 采样率类型always_on、always_off、traceidratioalways_on
otel-traces-sampler-argopentelemetry 采样率参数traceidratio:0.0 - 1.01.0

Agent Metrics

指标描述指标类型
proxy_request_total请求总数COUNTER
proxy_connection_total连接总数GAUGE
proxy_execute_latency_millis请求持续时长(毫秒)HISTOGRAM
proxy_execute_error_total执行异常数COUNTER
proxy_infoProxy 信息, 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_commitcommit 中解析 SQL 数HISTOGRAM
parse_sql_in_rollbackrollback 中解析 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 的加载信息。

若开启了 metricstracing 配置,则在访问 Proxy 后,可以通过配置的监控地址查看到相关数据。

正常启动可以在对应的 DBPlusEngine-Proxy 日志查看到 plugin 的启动日志,访问 Proxy 后,可以通过配置的地址查看到 Metric 和 Tracing 的数据。