Skip to content

Redis 第三方监控

Prometheus + Grafana 监控

环境准备

  1. 安装 Prometheus

    bash
    # 下载 Prometheus
    wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
    
    # 解压安装
    tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
    cd prometheus-2.45.0.linux-amd64
    
    # 启动 Prometheus
    ./prometheus --config.file=prometheus.yml
  2. 安装 Redis Exporter

    bash
    # 下载 Redis Exporter
    wget https://github.com/oliver006/redis_exporter/releases/download/v1.50.0/redis_exporter-v1.50.0.linux-amd64.tar.gz
    
    # 解压安装
    tar -xzf redis_exporter-v1.50.0.linux-amd64.tar.gz
    cd redis_exporter-v1.50.0.linux-amd64
    
    # 启动 Redis Exporter
    ./redis_exporter --redis.addr=redis://localhost:6379 --redis.password=your_password
  3. 安装 Grafana

    bash
    # 添加 Grafana 仓库
    sudo apt-get install -y apt-transport-https
    sudo apt-get install -y software-properties-common wget
    wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
    sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
    
    # 安装 Grafana
    sudo apt-get update
    sudo apt-get install -y grafana
    
    # 启动 Grafana
    sudo systemctl start grafana-server
    sudo systemctl enable grafana-server

配置 Prometheus

编辑 Prometheus 配置文件 prometheus.yml,添加 Redis Exporter 作为目标:

yaml
scrape_configs:
  - job_name: 'redis'
    static_configs:
      - targets: ['localhost:9121']
    scrape_interval: 15s

配置 Grafana 仪表盘

  1. 登录 Grafana(默认地址:http://localhost:3000,用户名/密码:admin/admin)
  2. 添加 Prometheus 数据源
  3. 导入 Redis 仪表盘(推荐仪表盘 ID:763)
  4. 调整仪表盘参数,适配实际环境

关键监控指标

  1. 内存使用情况

    • redis_memory_used_bytes:已使用内存
    • redis_memory_max_bytes:最大内存限制
    • redis_memory_fragmentation_ratio:内存碎片率
  2. 命中率

    • redis_keyspace_hits_total:键空间命中次数
    • redis_keyspace_misses_total:键空间未命中次数
    • 命中率 = hits / (hits + misses)
  3. 连接数

    • redis_connected_clients:当前连接客户端数
    • redis_maxclients:最大允许连接数
  4. 命令执行情况

    • redis_commands_total:命令执行总数
    • redis_commands_duration_seconds_total:命令执行总耗时
  5. 复制状态

    • redis_replication_master_link_status:主从复制状态
    • redis_replication_offset_master_bytes:主节点复制偏移量
    • redis_replication_offset_slave_bytes:从节点复制偏移量

Zabbix 监控

环境准备

  1. 安装 Zabbix Server 参考 Zabbix 官方文档安装 Zabbix Server

  2. 安装 Redis 监控模板

    • Zabbix 5.0+ 自带 Redis 监控模板
    • 可以从 Zabbix 共享库下载更丰富的模板

配置 Zabbix Agent

  1. 在 Redis 服务器上安装 Zabbix Agent
  2. 配置 Zabbix Agent 连接到 Zabbix Server
  3. 确保 Zabbix Agent 有足够权限执行 Redis 相关命令

配置 Redis 监控项

  1. 添加主机

    • 在 Zabbix 控制台添加 Redis 服务器作为主机
    • 关联 Redis 监控模板
  2. 配置监控项

    • 内存使用情况
    • 连接数
    • 命中率
    • 命令执行情况
    • 复制状态
    • 持久化状态

配置告警触发器

  1. 内存告警

    • 内存使用率超过 80%
    • 内存碎片率超过 1.5
  2. 连接数告警

    • 连接数超过最大允许连接数的 80%
  3. 命中率告警

    • 命中率低于 90%
  4. 复制告警

    • 主从复制断开
    • 从节点复制偏移量落后主节点过多
  5. 持久化告警

    • RDB 持久化失败
    • AOF 重写失败

Datadog 监控

环境准备

  1. 注册 Datadog 账号 访问 Datadog 官网注册账号

  2. 安装 Datadog Agent

    bash
    DD_API_KEY=your_api_key DD_SITE="datadoghq.com" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)"

配置 Redis 监控

  1. 启用 Redis 集成

    • 在 Datadog 控制台启用 Redis 集成
    • 配置 Redis 连接信息
  2. 配置自定义监控项

    • 根据业务需求添加自定义监控项
    • 配置自定义指标采集

配置 Datadog 仪表盘

  1. 使用 Datadog 自带的 Redis 仪表盘
  2. 根据业务需求自定义仪表盘
  3. 配置仪表盘自动刷新时间

配置告警

  1. 创建告警监视器

    • 选择监控指标
    • 设置告警阈值
    • 配置告警通知方式(邮件、Slack、短信等)
  2. 配置告警级别

    • 警告(Warning):需要关注但不紧急
    • 错误(Error):需要立即处理
    • 严重(Critical):影响业务运行

New Relic 监控

环境准备

  1. 注册 New Relic 账号 访问 New Relic 官网注册账号

  2. 安装 New Relic Infrastructure Agent

    bash
    curl -Ls https://download.newrelic.com/install/newrelic-cli/scripts/install.sh | bash && sudo NEW_RELIC_API_KEY=your_api_key NEW_RELIC_ACCOUNT_ID=your_account_id /usr/local/bin/newrelic install

配置 Redis 监控

  1. 启用 Redis 集成

    • 在 New Relic 控制台启用 Redis 集成
    • 配置 Redis 连接信息
  2. 配置自定义属性

    • 添加自定义属性,便于监控和分析
    • 配置属性采集规则

配置 New Relic 仪表盘

  1. 使用 New Relic 自带的 Redis 仪表盘
  2. 根据业务需求自定义仪表盘
  3. 配置仪表盘访问权限

配置告警

  1. 创建告警策略

    • 选择监控指标
    • 设置告警条件
    • 配置通知渠道
  2. 配置告警通知

    • 邮件通知
    • Slack 集成
    • PagerDuty 集成
    • Webhook 通知

监控最佳实践

监控指标选择

  1. 核心指标优先

    • 内存使用情况
    • 命中率
    • 连接数
    • 复制状态
  2. 业务相关指标

    • 根据业务特点选择相关指标
    • 例如:电商系统关注订单相关键的命中率
  3. 趋势分析

    • 关注指标变化趋势
    • 设置基于趋势的告警

告警设置原则

  1. 分级告警

    • 根据影响范围和紧急程度设置不同级别告警
    • 避免告警风暴
  2. 合理阈值

    • 根据历史数据设置合理阈值
    • 定期调整阈值,适应业务变化
  3. 告警抑制

    • 配置告警抑制规则,避免重复告警
    • 例如:主节点故障时,抑制从节点相关告警

监控数据保留

  1. 短期数据

    • 保留 7-30 天,用于日常监控和故障排查
  2. 长期数据

    • 保留 1-3 年,用于趋势分析和容量规划
  3. 数据压缩

    • 对长期数据进行压缩,降低存储成本

常见问题(FAQ)

Q1: 如何选择合适的 Redis 监控工具?

A1: 选择监控工具需要考虑以下因素:

  • 现有监控体系:优先选择与现有监控体系兼容的工具
  • 监控需求:根据监控指标、告警方式等需求选择
  • 团队熟悉度:选择团队熟悉的工具,降低学习成本
  • 成本预算:考虑工具的 licensing 和运维成本

Q2: Prometheus + Grafana 与 Zabbix 相比有什么优势?

A2: Prometheus + Grafana 的优势包括:

  • 更强大的数据查询和可视化能力
  • 更灵活的告警规则配置
  • 更好的扩展性,支持大规模部署
  • 活跃的社区和丰富的插件生态

Q3: 如何监控 Redis Cluster?

A3: 监控 Redis Cluster 可以通过以下方式:

  • 为每个节点配置监控
  • 使用支持 Redis Cluster 的监控工具
  • 关注集群状态指标,如槽位分配、节点状态等

Q4: 如何监控 Redis Sentinel?

A4: 监控 Redis Sentinel 可以关注以下指标:

  • Sentinel 进程状态
  • Sentinel 监控的主节点状态
  • 故障转移次数和时间
  • Sentinel 配置一致性

Q5: 如何避免监控对 Redis 性能的影响?

A5: 可以通过以下方式降低监控对 Redis 性能的影响:

  • 合理设置监控间隔,避免过于频繁的采集
  • 只采集必要的指标,避免采集过多无用指标
  • 使用专门的监控账号,限制监控命令的权限
  • 考虑在从节点上进行监控数据采集

Q6: 如何配置基于趋势的告警?

A6: 配置基于趋势的告警可以:

  • 设置基于增长率的告警,如内存使用率在 1 小时内增长超过 20%
  • 使用移动平均线,如内存使用率连续 5 分钟超过阈值
  • 配置基于基线的告警,如指标偏离基线超过一定比例

Q7: 如何整合多种监控工具?

A7: 整合多种监控工具可以:

  • 使用统一的告警聚合平台,如 PagerDuty
  • 建立监控数据仓库,整合不同工具的监控数据
  • 配置统一的监控仪表盘,展示关键指标

Q8: 如何进行监控数据的分析和利用?

A8: 分析和利用监控数据可以:

  • 定期生成监控报告,分析系统运行趋势
  • 使用监控数据进行容量规划,预测资源需求
  • 结合日志数据进行根因分析
  • 使用监控数据优化系统配置和业务逻辑

Q9: 如何监控 Redis 慢查询?

A9: 监控 Redis 慢查询可以:

  • 使用 Redis 内置的慢查询日志
  • 结合监控工具采集慢查询指标
  • 配置慢查询告警,如每分钟慢查询数量超过阈值
  • 定期分析慢查询日志,优化热点命令

Q10: 如何确保监控系统本身的可靠性?

A10: 确保监控系统可靠性可以:

  • 部署高可用的监控组件
  • 监控监控系统本身的状态
  • 配置监控系统的告警,确保监控系统故障时能及时发现
  • 定期测试监控系统的告警功能
  • 建立监控系统的备份和恢复机制