在日常运维支撑中,大多数客户广泛应用 Redis 作为业务的缓存服务,凸显了 Redis 在应用架构中的关键地位。由此可见,对于 Redis 的监控变得至关重要。监控的双重作用在于一方面能够快速发现和定位异常,另一方面,对于持续运行的生产环境,我们可以利用监控数据及时预警,例如内存使用率超过70%、缓存命中率较低等关键指标。
特别是在 Redis 集群模式下,我们可以通过使用 Redis Exporter 实现多个 Redis 实例数据的采集。借助自动发现机制,我们能够更加便捷地完成 Redis 实例的快速采集和监控配置。这种综合监控方案为运维团队提供了全面了解和及时响应 Redis 服务状态的手段。
1 系统初始化配置
# 配置初始化
setenforce 0 && sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && getenforce # 关闭 selinux
systemctl disable firewalld && systemctl stop firewalld # 关闭 firewalld
swapoff -a # 关闭 swap
vim /etc/fstab # 注释swap开机挂载
useradd -s /sbin/nologin prometheus # 创建 Prometheus用户
2 redis_exporter 安装 与 配置
wget https://github.com/oliver006/redis_exporter/releases/download/v1.51.0/redis_exporter-v1.51.0.linux-amd64.tar.gz # Github 下载代码包
tar xf redis_exporter-v1.51.0.linux-amd64.tar.gz # 解压代码包
mv redis_exporter-v1.51.0.linux-amd64 /usr/local/redis_exporter/ # 移动目录
chown prometheus.prometheus -R /usr/local/redis_exporter/ # 赋予 Prometheus 用户权限
3 redis_exporter 配置开机启动服务 (systemd)
--redis.password-file 指定 Redis 密码信息
--web.listen-address Prometheus采集端口信息
--redis-only-metrics 只采集 redis 相关数据
vim /usr/lib/systemd/system/redis_exporter.service
# vim /usr/lib/systemd/system/redis_exporter.service
[Unit]
Description=redis_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/usr/local/redis_exporter/redis_exporter --redis.password-file=/usr/local/redis_exporter/config/pwd-file.json --web.listen-address=:9121 --redis-only-metrics
Restart=on-failure
[Install]
WantedBy=multi-user.target
4 配置 Prometheus Redis 监控规则
- job_name: 'redis_ds'
file_sd_configs:
- files:
- /usr/local/prometheus/sd/redis-instances.json # 自动发现-文件模式
metrics_path: /scrape
relabel_configs:
- source_labels: [__address__] # 增加 instance 标签
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- source_labels: ['__address__'] # 增加 hostip 标签, 用于与node_exporter采集的指标进行匹配
regex: 'redis://(.+):(\d+)'
replacement: '${1}'
target_label: 'hostip'
- target_label: __address__
replacement: 127.0.0.1:9121
5 配置多 Redis 的文件发现规则
# vim /usr/local/prometheus/sd/redis-instances.json
[
{
"targets": ["redis://127.0.0.2","redis://127.0.0.1:6379"],
"labels": {
"env": "prod",
"app": "redis-cluster"
}
}
]
6 配置多 Redis 权限
{
"redis://127.0.0.1:6379":"123123123",
"redis://127.0.0.2:6379":"321312321"
}
7 启动 & 开机启动
systemctl start redis_exporter.service
systemctl enable redis_exporter.service
8 参考资料
多redis实例配置方式
🚀 炸鸡物料库 🚀
🔍 内容定位: IT技术领域,云计算、云原生、DevOps 和 AI 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。
🎯 目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。
🗓️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。
🤝 互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。
💌 订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。
🌐 合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!