外观
Redis 第三方监控
Prometheus + Grafana 监控
环境准备
安装 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安装 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安装 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 仪表盘
- 登录 Grafana(默认地址:http://localhost:3000,用户名/密码:admin/admin)
- 添加 Prometheus 数据源
- 导入 Redis 仪表盘(推荐仪表盘 ID:763)
- 调整仪表盘参数,适配实际环境
关键监控指标
内存使用情况
redis_memory_used_bytes:已使用内存redis_memory_max_bytes:最大内存限制redis_memory_fragmentation_ratio:内存碎片率
命中率
redis_keyspace_hits_total:键空间命中次数redis_keyspace_misses_total:键空间未命中次数- 命中率 = hits / (hits + misses)
连接数
redis_connected_clients:当前连接客户端数redis_maxclients:最大允许连接数
命令执行情况
redis_commands_total:命令执行总数redis_commands_duration_seconds_total:命令执行总耗时
复制状态
redis_replication_master_link_status:主从复制状态redis_replication_offset_master_bytes:主节点复制偏移量redis_replication_offset_slave_bytes:从节点复制偏移量
Zabbix 监控
环境准备
安装 Zabbix Server 参考 Zabbix 官方文档安装 Zabbix Server
安装 Redis 监控模板
- Zabbix 5.0+ 自带 Redis 监控模板
- 可以从 Zabbix 共享库下载更丰富的模板
配置 Zabbix Agent
- 在 Redis 服务器上安装 Zabbix Agent
- 配置 Zabbix Agent 连接到 Zabbix Server
- 确保 Zabbix Agent 有足够权限执行 Redis 相关命令
配置 Redis 监控项
添加主机
- 在 Zabbix 控制台添加 Redis 服务器作为主机
- 关联 Redis 监控模板
配置监控项
- 内存使用情况
- 连接数
- 命中率
- 命令执行情况
- 复制状态
- 持久化状态
配置告警触发器
内存告警
- 内存使用率超过 80%
- 内存碎片率超过 1.5
连接数告警
- 连接数超过最大允许连接数的 80%
命中率告警
- 命中率低于 90%
复制告警
- 主从复制断开
- 从节点复制偏移量落后主节点过多
持久化告警
- RDB 持久化失败
- AOF 重写失败
Datadog 监控
环境准备
注册 Datadog 账号 访问 Datadog 官网注册账号
安装 Datadog Agent
bashDD_API_KEY=your_api_key DD_SITE="datadoghq.com" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)"
配置 Redis 监控
启用 Redis 集成
- 在 Datadog 控制台启用 Redis 集成
- 配置 Redis 连接信息
配置自定义监控项
- 根据业务需求添加自定义监控项
- 配置自定义指标采集
配置 Datadog 仪表盘
- 使用 Datadog 自带的 Redis 仪表盘
- 根据业务需求自定义仪表盘
- 配置仪表盘自动刷新时间
配置告警
创建告警监视器
- 选择监控指标
- 设置告警阈值
- 配置告警通知方式(邮件、Slack、短信等)
配置告警级别
- 警告(Warning):需要关注但不紧急
- 错误(Error):需要立即处理
- 严重(Critical):影响业务运行
New Relic 监控
环境准备
注册 New Relic 账号 访问 New Relic 官网注册账号
安装 New Relic Infrastructure Agent
bashcurl -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 监控
启用 Redis 集成
- 在 New Relic 控制台启用 Redis 集成
- 配置 Redis 连接信息
配置自定义属性
- 添加自定义属性,便于监控和分析
- 配置属性采集规则
配置 New Relic 仪表盘
- 使用 New Relic 自带的 Redis 仪表盘
- 根据业务需求自定义仪表盘
- 配置仪表盘访问权限
配置告警
创建告警策略
- 选择监控指标
- 设置告警条件
- 配置通知渠道
配置告警通知
- 邮件通知
- Slack 集成
- PagerDuty 集成
- Webhook 通知
监控最佳实践
监控指标选择
核心指标优先
- 内存使用情况
- 命中率
- 连接数
- 复制状态
业务相关指标
- 根据业务特点选择相关指标
- 例如:电商系统关注订单相关键的命中率
趋势分析
- 关注指标变化趋势
- 设置基于趋势的告警
告警设置原则
分级告警
- 根据影响范围和紧急程度设置不同级别告警
- 避免告警风暴
合理阈值
- 根据历史数据设置合理阈值
- 定期调整阈值,适应业务变化
告警抑制
- 配置告警抑制规则,避免重复告警
- 例如:主节点故障时,抑制从节点相关告警
监控数据保留
短期数据
- 保留 7-30 天,用于日常监控和故障排查
长期数据
- 保留 1-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: 确保监控系统可靠性可以:
- 部署高可用的监控组件
- 监控监控系统本身的状态
- 配置监控系统的告警,确保监控系统故障时能及时发现
- 定期测试监控系统的告警功能
- 建立监控系统的备份和恢复机制
