Prometheus + Grafana(七)系统监控之Redis
前言
利用prometheus监控redis.
github地址:https://github.com/oliver006/redis_exporter
技术架构
安装redis_exporter
注:在redis集群下的所有节点上部署。
- 上传解压
从 redis_exporter下载 并上传redis_exporter-v1.3.5.linux-amd64.tar安装包并解压到/usr/local目录
wget https://github.com/oliver006/redis_exporter/releases/download/v1.3.5/redis_exporter-v1.3.5.linux-amd64.tar.gz
tar -xvf redis_exporter-v1.3.5.linux-amd64.tar
cd redis_exporter-v1.3.5.linux-amd64/
- 配置
使用默认配置
redis_exporter 常用的选项:
-redis.addr:指明一个或多个 Redis 节点的地址,多个节点使用逗号分隔,默认为 redis://localhost:6379 -redis.password:验证 Redis 时使用的密码; -redis.file:包含一个或多个redis 节点的文件路径,每行一个节点,此选项与 -redis.addr 互斥。 -web.listen-address:监听的地址和端口,默认为 0.0.0.0:9121
- 启动
进入根目录下,输入以下命令:
cd redis_exporter-v1.3.5.linux-amd64 nohup ./redis_exporter -redis.addr 10.x.xxx.213:7000 10.x.xxx:7001 10.x.xxx.213:7002 10.x.xxx.213:7003 & tail -1000f nohup.out
注:-redis.addr 请修改相应环境redis服务地址,如同一台服务器部署了多个实例,全部都要填写
启动成功后,可以访问 http://10.x.xx.100:9121/metrics/ (IP和端口要改成相应环境的)
看抓取的信息如下:
Prometheus配置
-
配置
修改prometheus组件的prometheus.yml加入redis监控:
vi /usr/local/prometheus-2.15.1/prometheus.yml
-
启动验证
先kill掉Prometheus进程,用以下命令重启它,然后查看targets:
cd /usr/local/prometheus-2.15.1 nohup ./prometheus --config.file=prometheus.yml &
Grafana配置
- 导入仪表盘模板
导入标准 redis仪表盘模板,以下是在标准基础上修改的模板文件(Redis-dashboard.json)
注意:Memory Usage这个图表,一直是N/A。是因为redis_memory_max_bytes 获取的值为0,导致 redis_memory_used_bytes / redis_memory_max_bytes 结果不正常。
解决办法:将redis_memory_max_bytes 改为服务器的真实内存大小。更改计算公式:
redis_memory_used_bytes{instance=~"$instance"} / 8193428
-
预警指标
序号 |
预警名称 |
预警规则 |
描述 |
1 |
节点数预警 |
当集群中的节点数达到阈值【!=12】时进行预警 |
|
2 |
客户端连接数预警 |
当客户端连接数达到阈值【>900】时进行预警 |
|
3 |
内存预警 |
当内存使用达到阈值【>80%】时进行预警 |
|
4 |
拒绝连接预警 |
因最大客户端数量限制而被拒绝的连接请求数量达到阈值【>1】时进行预警 |
|
5 |
未命中预警 |
当根据key找不到数据的次数达到阈值【>10000000】时进行预警 |
|
其它
-
注册为系统服务开机自动启动
## 准备配置文件 cat <<\EOF >/etc/systemd/system/redis_exporter.service [Unit] Description=Prometheus exporter for Redis metrics. Documentation=Supports Redis 2.x, 3.x, 4.x, and 5.x [Service] ExecStart=/usr/local/redis_exporter/redis_exporter -redis.addr=redis://localhost:6379 [Install] WantedBy=multi-user.target EOF ## 启动并设置为开机自动启动 systemctl daemon-reload systemctl enable redis_exporter.service systemctl stop redis_exporter.service systemctl start redis_exporter.service systemctl status redis_exporter.service