Skip to content

KingBaseES Zabbix 监控

Zabbix 监控概述

Zabbix 是一款功能强大的开源监控软件,支持多种监控方式和广泛的监控对象。通过 Zabbix 可以实现对 KingBaseES 数据库的全面监控,包括性能指标、资源使用、连接状态等,并提供灵活的告警机制。

Zabbix 监控架构

  1. Zabbix Server:监控核心,负责接收和处理监控数据,存储历史数据,触发告警
  2. Zabbix Agent:部署在被监控主机上,负责采集系统级指标
  3. KingBaseES 监控插件:负责采集 KingBaseES 数据库特定指标
  4. Zabbix Proxy:可选组件,用于分布式监控环境,减轻 Zabbix Server 压力
  5. Zabbix Web:Web 界面,用于配置监控、查看监控数据和管理告警

Zabbix 监控 KingBaseES 的优势

  1. 全面的监控指标:支持监控 KingBaseES 的各种性能指标和状态
  2. 灵活的告警机制:支持多种告警方式和告警级别
  3. 丰富的可视化图表:提供直观的监控数据展示
  4. 历史数据存储:支持长期存储监控数据,便于趋势分析
  5. 分布式架构:支持大规模监控环境
  6. 开源免费:降低监控成本

Zabbix 安装与配置

系统要求

组件CPU内存磁盘网络
Zabbix Server2核+4GB+100GB+稳定
Zabbix Agent1核+512MB+10GB+稳定
PostgreSQL (Zabbix 数据库)2核+4GB+50GB+稳定

Zabbix Server 安装

CentOS/RHEL 安装

  1. 安装 Zabbix 仓库:

    bash
    rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/7/x86_64/zabbix-release-6.4-1.el7.noarch.rpm
    yum clean all
  2. 安装 Zabbix Server、Web 界面和 Agent:

    bash
    yum install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
  3. 创建 Zabbix 数据库:

    bash
    sudo -u postgres createuser --pwprompt zabbix
    sudo -u postgres createdb -O zabbix zabbix
  4. 导入初始架构和数据:

    bash
    zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
  5. 配置数据库连接:

    bash
    vi /etc/zabbix/zabbix_server.conf
    # 修改以下配置
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=password
  6. 配置 PHP:

    bash
    vi /etc/nginx/conf.d/zabbix.conf
    # 取消注释并设置正确的时区
    # listen 8080;
    # server_name example.com;
    
    vi /etc/php-fpm.d/zabbix.conf
    # 设置正确的时区
    php_value[date.timezone] = Asia/Shanghai
  7. 启动服务:

    bash
    systemctl restart zabbix-server zabbix-agent nginx php-fpm
    systemctl enable zabbix-server zabbix-agent nginx php-fpm
  8. 访问 Zabbix Web 界面:

    http://<Zabbix服务器IP>/zabbix

Ubuntu/Debian 安装

  1. 安装 Zabbix 仓库:

    bash
    wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu20.04_all.deb
    dpkg -i zabbix-release_6.4-1+ubuntu20.04_all.deb
    apt update
  2. 安装 Zabbix Server、Web 界面和 Agent:

    bash
    apt install zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
  3. 创建 Zabbix 数据库并导入初始数据(参考 CentOS/RHEL 步骤)

  4. 配置数据库连接和 PHP(参考 CentOS/RHEL 步骤)

  5. 启动服务:

    bash
    systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
    systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm

Zabbix Agent 安装

在每个需要监控的 KingBaseES 主机上安装 Zabbix Agent:

  1. 安装 Zabbix 仓库(参考 Zabbix Server 安装步骤)

  2. 安装 Zabbix Agent:

    bash
    # CentOS/RHEL
    yum install zabbix-agent
    
    # Ubuntu/Debian
    apt install zabbix-agent
  3. 配置 Zabbix Agent:

    bash
    vi /etc/zabbix/zabbix_agentd.conf
    # 修改以下配置
    Server=<Zabbix Server IP>
    ServerActive=<Zabbix Server IP>
    Hostname=<Hostname of the agent>
  4. 启动 Zabbix Agent:

    bash
    # CentOS/RHEL
    systemctl restart zabbix-agent
    systemctl enable zabbix-agent
    
    # Ubuntu/Debian
    systemctl restart zabbix-agent
    systemctl enable zabbix-agent

KingBaseES 监控配置

安装 KingBaseES 监控插件

  1. 安装 zabbix-extensions-postgresql 插件(KingBaseES 兼容 PostgreSQL 协议):

    bash
    # 下载插件
    git clone https://github.com/cavaliercoder/zabbix-postgresql.git
    cd zabbix-postgresql
    
    # 编译安装
    make
    make install
  2. 配置插件:

    bash
    # 创建配置文件目录
    mkdir -p /etc/zabbix/zabbix_agentd.d
    
    # 复制配置文件
    cp postgresql.conf /etc/zabbix/zabbix_agentd.d/
    
    # 修改配置文件
    vi /etc/zabbix/zabbix_agentd.d/postgresql.conf
    # 设置 KingBaseES 连接信息
    PG_CONN="host=localhost port=54321 dbname=test user=system password=password"
  3. 重启 Zabbix Agent:

    bash
    systemctl restart zabbix-agent

导入 KingBaseES 监控模板

  1. 登录 Zabbix Web 界面
  2. 点击"Configuration" → "Templates"
  3. 点击"Import"
  4. 上传 KingBaseES 监控模板(可使用 PostgreSQL 模板,KingBaseES 兼容)
  5. 选择导入选项,点击"Import"

关联模板到主机

  1. 点击"Configuration" → "Hosts"
  2. 点击需要监控的主机
  3. 在"Templates"标签页中,点击"Select"
  4. 选择导入的 KingBaseES 模板,点击"Add"
  5. 点击"Update",保存配置

监控指标与模板

核心监控指标

Zabbix 可以监控 KingBaseES 的以下核心指标:

  1. 数据库状态

    • 数据库是否在线
    • 数据库版本
    • 运行时间
  2. 连接状态

    • 当前连接数
    • 最大连接数
    • 连接使用率
    • 连接来源分布
  3. 性能指标

    • TPS(每秒事务数)
    • QPS(每秒查询数)
    • 缓冲区命中率
    • 索引命中率
    • 锁等待时间
    • 慢查询数量
  4. 资源使用

    • CPU 使用率
    • 内存使用率
    • 磁盘空间使用率
    • 磁盘 I/O 使用率
  5. 复制状态

    • 主备状态
    • 复制延迟
    • WAL 应用情况

自定义监控项

除了使用默认模板,还可以根据需要添加自定义监控项:

  1. 添加监控项

    • 点击"Configuration" → "Hosts"
    • 选择目标主机,点击"Items"
    • 点击"Create item"
    • 配置监控项参数:
      • Name:监控项名称
      • Type:监控类型(通常为 Zabbix agent)
      • Key:监控键值(如 pg.stat[connections]
      • Type of information:信息类型
      • Units:单位
      • Update interval:更新间隔
    • 点击"Add",保存配置
  2. 创建触发器

    • 点击"Configuration" → "Hosts"
    • 选择目标主机,点击"Triggers"
    • 点击"Create trigger"
    • 配置触发器参数:
      • Name:触发器名称
      • Expression:触发表达式(如 {host:pg.stat[connections].last()} > 100
      • Severity:告警级别
    • 点击"Add",保存配置
  3. 创建图形

    • 点击"Configuration" → "Hosts"
    • 选择目标主机,点击"Graphs"
    • 点击"Create graph"
    • 配置图形参数:
      • Name:图形名称
      • Width/Height:图形尺寸
      • Items:添加需要展示的监控项
    • 点击"Add",保存配置

告警配置

告警级别

Zabbix 支持以下告警级别:

  • Disaster(灾难)
  • High(高)
  • Average(中)
  • Warning(警告)
  • Information(信息)
  • Not classified(未分类)

告警媒介

Zabbix 支持多种告警媒介:

  1. Email(邮件)
  2. SMS(短信)
  3. Jabber(即时通讯)
  4. Slack(团队协作工具)
  5. Webhook(Web 钩子)
  6. 自定义脚本

告警配置步骤

  1. 配置告警媒介

    • 点击"Administration" → "Media types"
    • 点击"Create media type"
    • 选择告警媒介类型,配置相关参数
    • 点击"Add",保存配置
  2. 关联告警媒介到用户

    • 点击"Administration" → "Users"
    • 选择目标用户,点击"Media"
    • 点击"Add"
    • 选择告警媒介,配置收件人信息
    • 点击"Add",保存配置
  3. 创建告警动作

    • 点击"Configuration" → "Actions"
    • 点击"Create action"
    • 配置动作名称和条件
    • 配置操作(发送告警通知)
    • 配置恢复操作(发送恢复通知)
    • 点击"Add",保存配置

版本差异(V8 R6 vs V8 R7)

监控指标差异

  1. V8 R7 新增监控指标

    • 逻辑复制相关指标
    • 分区表相关指标
    • 复制槽相关指标
    • SSL 连接相关指标
    • 等待事件相关指标
  2. 指标采集方式差异

    • V8 R7 优化了某些指标的采集性能
    • 部分指标的计算公式发生了变化
    • 新增了一些动态性能视图,可用于采集更详细的指标

监控模板调整

  1. V8 R7 监控模板

    • 需要更新监控模板,添加新的监控指标
    • 调整部分指标的采集频率和阈值
    • 优化告警规则,适应 V8 R7 的特性
  2. 插件兼容性

    • V8 R7 推荐使用最新版本的监控插件
    • 部分旧版本插件可能无法正确采集 V8 R7 的新指标

最佳实践

监控配置最佳实践

  1. 合理设置监控频率

    • 核心指标:30秒-1分钟
    • 非核心指标:5-15分钟
    • 资源密集型指标:15-30分钟
  2. 优化告警规则

    • 避免设置过于敏感的阈值,减少误告警
    • 针对不同级别告警设置不同的通知方式
    • 配置告警抑制,避免告警风暴
    • 定期审查和调整告警规则
  3. 设计合理的监控视图

    • 按功能模块组织监控视图
    • 突出显示关键指标
    • 使用合适的图表类型展示不同类型的指标
    • 配置合理的时间范围

性能优化建议

  1. 优化 Zabbix Server 性能

    • 调整 Zabbix Server 配置参数,如 StartPollers、StartTrappers 等
    • 优化 Zabbix 数据库性能
    • 考虑使用 Zabbix Proxy 分布式部署
  2. 优化 Zabbix Agent 性能

    • 合理配置监控项数量
    • 调整监控项的更新间隔
    • 避免在 Agent 上执行过于复杂的监控脚本
  3. 优化监控数据存储

    • 配置合理的历史数据保留时间
    • 配置合理的趋势数据保留时间
    • 考虑使用外部存储,如 TimescaleDB

安全管理建议

  1. 访问控制

    • 严格控制 Zabbix Web 界面的访问权限
    • 为不同用户分配不同的角色和权限
    • 配置 IP 白名单,限制访问来源
  2. 传输安全

    • 配置 Zabbix Server 和 Agent 之间的加密通信
    • 配置 Zabbix Web 界面使用 HTTPS
  3. 数据安全

    • 定期备份 Zabbix 数据库
    • 加密存储敏感的监控数据
    • 限制监控插件的权限,避免安全风险

常见问题(FAQ)

Q1:Zabbix 无法采集 KingBaseES 指标怎么办?

A:可能的原因和解决方法:

  1. 插件未正确安装:重新安装插件
  2. 连接信息配置错误:检查插件配置文件中的连接信息
  3. Zabbix Agent 未重启:重启 Zabbix Agent
  4. 权限问题:确保监控用户具有足够的权限
  5. 防火墙设置:确保 Zabbix Agent 端口(默认 10050)开放

Q2:Zabbix 告警频繁误触发怎么办?

A:可能的原因和解决方法:

  1. 阈值设置过于敏感:调整告警阈值
  2. 监控频率过高:降低监控频率
  3. 缺乏告警抑制:配置告警抑制规则
  4. 基线设置不合理:调整基线,适应业务波动
  5. 告警规则设计不当:优化告警规则,使用更合理的触发条件

Q3:如何监控多个 KingBaseES 实例?

A:可以通过以下方式监控多个实例:

  1. 在每个 KingBaseES 主机上部署 Zabbix Agent
  2. 为每个实例创建独立的监控模板
  3. 在 Zabbix 中创建多个主机,分别关联不同的模板
  4. 使用 Zabbix Proxy 分布式监控,减轻 Zabbix Server 压力

Q4:如何自定义 KingBaseES 监控指标?

A:可以通过以下方式自定义监控指标:

  1. 修改监控插件的配置文件,添加新的监控查询
  2. 在 Zabbix 中创建自定义监控项,使用 UserParameter 执行自定义脚本
  3. 开发自定义监控插件,采集特定的指标
  4. 使用 Zabbix 的 Low-level Discovery 功能,自动发现监控对象

Q5:如何优化 Zabbix 监控性能?

A:可以通过以下方式优化监控性能:

  1. 调整 Zabbix Server 配置参数,如 StartPollers、StartTrappers 等
  2. 优化监控项的更新间隔,减少采集频率
  3. 减少监控项数量,只监控必要的指标
  4. 使用 Zabbix Proxy 分布式部署
  5. 优化 Zabbix 数据库性能,如添加索引、调整参数等

Q6:如何备份 Zabbix 监控配置?

A:可以通过以下方式备份 Zabbix 监控配置:

  1. 导出 Zabbix 配置:点击"Configuration" → "Templates" → "Export"
  2. 备份 Zabbix 数据库:使用数据库备份工具备份 Zabbix 数据库
  3. 备份 Zabbix 配置文件:备份 /etc/zabbix 目录下的配置文件
  4. 定期执行备份,确保配置安全

总结

Zabbix 是一款功能强大的开源监控软件,可以实现对 KingBaseES 数据库的全面监控。通过合理的配置和优化,可以实现对 KingBaseES 数据库的实时监控、性能分析和告警管理。

在实际部署过程中,需要根据数据库规模和业务需求,合理规划监控架构,配置监控指标和告警规则,优化监控性能。同时,要关注不同版本间的差异,充分利用新版本提供的增强功能。

通过 Zabbix 监控系统的有效使用,可以帮助 DBA 及时发现和处理数据库问题,提高数据库系统的稳定性和可用性,保障业务的正常运行。