Skip to content

GaussDB 监控指标分类

性能指标

查询性能指标

  • tps:每秒事务数,反映数据库处理事务的能力

    • 监控方法:查询pg_stat_database视图
    • 计算公式:(xact_commit + xact_rollback) / 时间间隔
    • 正常范围:根据业务负载而定
  • qps:每秒查询数,反映数据库处理查询的能力

    • 监控方法:查询pg_stat_database视图
    • 计算公式:(tup_returned + tup_fetched + tup_inserted + tup_updated + tup_deleted) / 时间间隔
    • 正常范围:根据业务负载而定
  • 响应时间:查询的平均响应时间

    • 监控方法:使用pg_stat_statements扩展
    • 指标:mean_time字段
    • 正常范围:通常应小于100ms

执行计划指标

  • 全表扫描率:执行全表扫描的查询比例

    • 监控方法:查询pg_stat_user_tables视图
    • 指标:seq_scan字段
    • 优化建议:对于频繁全表扫描的表,考虑创建索引
  • 索引使用率:索引被使用的频率

    • 监控方法:查询pg_stat_user_indexes视图
    • 指标:idx_scan字段
    • 优化建议:移除不使用的索引

资源使用指标

  • CPU使用率:数据库进程占用的CPU百分比

    • 监控方法:使用操作系统工具(top, sar)或监控系统
    • 正常范围:通常应小于70%
  • 内存使用率:数据库使用的内存比例

    • 监控方法:查询pg_stat_bgwriter视图
    • 指标:buffers_alloc字段
    • 正常范围:根据配置的shared_buffers大小而定

系统指标

实例状态指标

  • 数据库状态:数据库实例的运行状态

    • 监控方法:使用gs_ctl工具或查询pg_stat_database视图
    • 状态值:active, idle, idle in transaction, idle in transaction (aborted), fastpath function call
    • 正常状态:active或idle
  • 连接数:当前数据库连接数

    • 监控方法:查询pg_stat_database视图或pg_stat_activity视图
    • 指标:numbackends字段
    • 正常范围:应小于max_connections参数值的80%

后台进程指标

  • 检查点活动:检查点的执行情况

    • 监控方法:查询pg_stat_bgwriter视图
    • 指标:checkpoints_timed, checkpoints_req, buffers_checkpoint, buffers_clean, maxwritten_clean
    • 正常范围:检查点次数应稳定,不应频繁触发
  • WAL写入:WAL日志的写入情况

    • 监控方法:查询pg_stat_bgwriter视图
    • 指标:buffers_backend_fsync, buffers_alloc
    • 正常范围:WAL写入应稳定,不应出现突发高峰

存储指标

磁盘使用指标

  • 表空间大小:各表空间的使用大小

    • 监控方法:使用pg_tablespace_size函数
    • 示例:SELECT pg_size_pretty(pg_tablespace_size('tbs_user'));
    • 告警阈值:通常设置为总容量的80%
  • 表大小:各表的使用大小

    • 监控方法:使用pg_total_relation_size函数
    • 示例:SELECT pg_size_pretty(pg_total_relation_size('table_name'));
    • 优化建议:对于大表,考虑分区或归档

IO性能指标

  • 磁盘读写速率:磁盘的读写速度

    • 监控方法:使用操作系统工具(iostat, sar)
    • 指标:kB_read/s, kB_wrtn/s
    • 正常范围:根据存储设备性能而定
  • IO等待时间:磁盘IO操作的等待时间

    • 监控方法:使用操作系统工具(iostat, sar)
    • 指标:await字段
    • 正常范围:通常应小于10ms

连接指标

连接状态指标

  • 活跃连接数:当前活跃的数据库连接数

    • 监控方法:查询pg_stat_activity视图
    • 过滤条件:WHERE state = 'active'
    • 正常范围:应小于max_connections参数值的50%
  • 空闲连接数:当前空闲的数据库连接数

    • 监控方法:查询pg_stat_activity视图
    • 过滤条件:WHERE state = 'idle'
    • 优化建议:设置合理的idle_in_transaction_session_timeout参数

连接来源指标

  • 连接来源分布:不同IP或应用的连接分布

    • 监控方法:查询pg_stat_activity视图
    • 字段:client_addr, application_name
    • 分析方法:按client_addr或application_name分组统计
  • 连接认证失败次数:认证失败的连接尝试次数

    • 监控方法:查看数据库日志
    • 关键字:"authentication failed"
    • 告警阈值:出现大量认证失败时应警惕

复制指标

主从复制指标

  • 复制状态:主从复制的状态

    • 监控方法:查询pg_stat_replication视图
    • 状态值:startup, catchup, streaming
    • 正常状态:streaming
  • 复制延迟:从库与主库的同步延迟

    • 监控方法:查询pg_stat_replication视图
    • 计算公式:pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn)
    • 正常范围:通常应小于1MB

同步状态指标

  • 同步备库状态:同步备库的状态
    • 监控方法:查询pg_stat_replication视图
    • 字段:sync_state
    • 状态值:async, sync, potential
    • 正常状态:sync(对于同步复制)

安全指标

权限相关指标

  • 超级用户数量:数据库中超级用户的数量

    • 监控方法:查询pg_roles视图
    • 过滤条件:WHERE rolsuper = true
    • 安全建议:超级用户数量应尽量少
  • 权限变更次数:权限变更的频率

    • 监控方法:查看数据库日志
    • 关键字:"GRANT", "REVOKE"
    • 安全建议:定期审计权限变更

访问控制指标

  • 连接限制:达到连接限制的次数

    • 监控方法:查看数据库日志
    • 关键字:"sorry, too many clients already"
    • 优化建议:增加max_connections参数或优化应用连接池
  • 失败登录尝试:失败的登录尝试次数

    • 监控方法:查看数据库日志
    • 关键字:"invalid password"
    • 安全建议:设置合理的password_encryption_type参数

监控指标最佳实践

1. 指标选择

  • 关键业务指标:根据业务特点选择关键指标
  • 全面覆盖:监控性能、系统、存储、连接等多个方面
  • 分层监控:从实例级、数据库级、表级、查询级进行分层监控

2. 监控频率

  • 实时监控:对于关键指标,监控频率应小于1分钟
  • 定期监控:对于非关键指标,监控频率可设置为5-15分钟
  • 历史数据:保存至少30天的历史监控数据

3. 告警设置

  • 合理阈值:根据业务特点设置合理的告警阈值
  • 多级告警:设置不同级别的告警(警告、严重、紧急)
  • 告警通知:确保告警能及时通知到相关人员

4. 分析与优化

  • 定期分析:定期分析监控数据,找出性能瓶颈
  • 趋势预测:基于历史数据预测资源使用趋势
  • 持续优化:根据分析结果进行持续优化

常见问题(FAQ)

Q1: 如何选择需要监控的关键指标?

A1: 选择关键指标应考虑:

  1. 业务需求:根据业务特点选择相关指标
  2. 系统资源:监控CPU、内存、磁盘、网络等资源
  3. 数据库状态:监控实例状态、连接状态、复制状态
  4. 性能表现:监控TPS、QPS、响应时间等

Q2: 监控指标的正常范围是多少?

A2: 监控指标的正常范围因业务负载和系统配置而异,建议:

  1. 基于历史数据建立基线
  2. 根据业务需求调整阈值
  3. 参考数据库最佳实践

Q3: 如何设置合理的告警阈值?

A3: 设置告警阈值的方法:

  1. 基于历史数据的95分位数
  2. 考虑业务峰值负载
  3. 设置多级告警阈值
  4. 定期调整告警阈值

Q4: 如何分析监控数据?

A4: 分析监控数据的方法:

  1. 查看趋势变化:识别异常波动
  2. 对比历史数据:找出差异
  3. 关联多个指标:分析指标间的关系
  4. 定位问题根源:从现象到本质

Q5: 有哪些常用的监控工具?

A5: 常用的监控工具包括:

  1. 内置工具:gs_ctl, gs_check, pg_stat_*视图
  2. 开源工具:Prometheus + Grafana, Zabbix, Nagios
  3. 商业工具:DataDog, New Relic, Dynatrace
  4. 华为云监控:Cloud Eye