三明市文章资讯

手把手教你zabbix5.0监控redis7的过程

2026-03-31 15:27:02 浏览次数:0
详细信息

一、准备工作

1. 环境要求

2. 安装Redis(如未安装)

# Ubuntu/Debian
sudo apt update
sudo apt install redis-server

# CentOS/RHEL
sudo yum install epel-release
sudo yum install redis

# 启动Redis
sudo systemctl start redis
sudo systemctl enable redis

二、方法一:使用Zabbix官方模板

1. 导入模板

下载官方Redis模板:

Zabbix Web界面导入:

配置 → 模板 → 导入 → 选择XML文件 → 导入

2. 配置Redis允许监控

编辑Redis配置文件:

sudo vim /etc/redis/redis.conf

修改以下配置:

# 允许远程连接(如果是本地监控可跳过)
bind 0.0.0.0

# 设置密码(可选但推荐)
requirepass yourpassword

# 取消保护模式
protected-mode no

重启Redis:

sudo systemctl restart redis

3. 配置Zabbix Agent

创建Redis监控脚本目录:

sudo mkdir -p /etc/zabbix/scripts
sudo mkdir -p /etc/zabbix/zabbix_agentd.d

创建监控脚本:

sudo vim /etc/zabbix/scripts/redis_monitor.sh

内容如下:

#!/bin/bash
# Zabbix Redis监控脚本

REDIS_CMD="/usr/bin/redis-cli"
REDIS_HOST="127.0.0.1"
REDIS_PORT="6379"
REDIS_PASS="yourpassword"  # 如果没有密码,删除这一行

# 获取Redis信息函数
get_redis_info() {
    if [ -n "$REDIS_PASS" ]; then
        $REDIS_CMD -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASS info | grep "^$1:" | cut -d: -f2
    else
        $REDIS_CMD -h $REDIS_HOST -p $REDIS_PORT info | grep "^$1:" | cut -d: -f2
    fi
}

case $1 in
    ping)
        if [ -n "$REDIS_PASS" ]; then
            $REDIS_CMD -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASS ping | grep -c PONG
        else
            $REDIS_CMD -h $REDIS_HOST -p $REDIS_PORT ping | grep -c PONG
        fi
        ;;
    connected_clients)
        get_redis_info connected_clients
        ;;
    used_memory)
        get_redis_info used_memory
        ;;
    used_memory_rss)
        get_redis_info used_memory_rss
        ;;
    total_connections_received)
        get_redis_info total_connections_received
        ;;
    total_commands_processed)
        get_redis_info total_commands_processed
        ;;
    keyspace_hits)
        get_redis_info keyspace_hits
        ;;
    keyspace_misses)
        get_redis_info keyspace_misses
        ;;
    uptime_in_seconds)
        get_redis_info uptime_in_seconds
        ;;
    *)
        echo "Unknown parameter: $1"
        exit 1
        ;;
esac

设置权限:

sudo chmod +x /etc/zabbix/scripts/redis_monitor.sh
sudo chown zabbix:zabbix /etc/zabbix/scripts/redis_monitor.sh

4. 创建Zabbix Agent配置文件

sudo vim /etc/zabbix/zabbix_agentd.d/redis.conf

内容如下:

# Redis监控配置
UserParameter=redis.status[*],/etc/zabbix/scripts/redis_monitor.sh $1
UserParameter=redis.ping,/etc/zabbix/scripts/redis_monitor.sh ping
UserParameter=redis.connected_clients,/etc/zabbix/scripts/redis_monitor.sh connected_clients
UserParameter=redis.used_memory,/etc/zabbix/scripts/redis_monitor.sh used_memory
UserParameter=redis.used_memory_rss,/etc/zabbix/scripts/redis_monitor.sh used_memory_rss

重启Zabbix Agent:

sudo systemctl restart zabbix-agent

5. 测试Agent配置

# 测试连通性
sudo su - zabbix -s /bin/bash
zabbix_get -s 127.0.0.1 -k "redis.ping"

# 测试获取指标
zabbix_get -s 127.0.0.1 -k "redis.used_memory"

三、方法二:使用自定义监控项(推荐)

1. 创建更完善的监控脚本

sudo vim /etc/zabbix/scripts/redis_stats.sh
#!/bin/bash
# Redis详细监控脚本

HOST="127.0.0.1"
PORT="6379"
PASSWORD="yourpassword"  # 如果没有则留空
REDIS_CLI=$(which redis-cli)

if [ -z "$REDIS_CLI" ]; then
    echo "redis-cli not found"
    exit 1
fi

# 构建认证参数
AUTH_PARAM=""
if [ -n "$PASSWORD" ]; then
    AUTH_PARAM="-a $PASSWORD"
fi

# 获取指标
case $1 in
    "discovery")
        # 自动发现Redis键空间(数据库)
        databases=$($REDIS_CLI $AUTH_PARAM -h $HOST -p $PORT info keyspace | grep "^db")
        echo '{"data":['
        first=1
        echo "$databases" | while read line; do
            db=$(echo $line | cut -d: -f1)
            if [ $first -eq 1 ]; then
                first=0
            else
                echo ","
            fi
            echo -n '{"{#DBNAME}":"'$db'"}'
        done
        echo ']}'
        ;;
    "info")
        # 获取特定指标
        metric=$2
        result=$($REDIS_CLI $AUTH_PARAM -h $HOST -p $PORT info | grep "^$metric:" | cut -d: -f2)
        echo $result
        ;;
    "slowlog")
        # 获取慢查询数量
        count=$($REDIS_CLI $AUTH_PARAM -h $HOST -p $PORT slowlog len)
        echo $count
        ;;
    "db_stats")
        # 获取数据库统计
        db=$2
        stats=$($REDIS_CLI $AUTH_PARAM -h $HOST -p $PORT info keyspace | grep "^$db:")
        echo $stats
        ;;
    *)
        echo "Usage: $0 {discovery|info metric|slowlog|db_stats db}"
        exit 1
        ;;
esac

2. 配置Zabbix Agent

sudo vim /etc/zabbix/zabbix_agentd.d/userparameter_redis.conf
# Redis自动发现
UserParameter=redis.discovery,/etc/zabbix/scripts/redis_stats.sh discovery

# Redis基本信息监控
UserParameter=redis.info[*],/etc/zabbix/scripts/redis_stats.sh info $1
UserParameter=redis.ping,/etc/zabbix/scripts/redis_stats.sh info ping 2>/dev/null || echo 0
UserParameter=redis.slowlog.count,/etc/zabbix/scripts/redis_stats.sh slowlog

# 数据库特定监控
UserParameter=redis.db.keys[*],/etc/zabbix/scripts/redis_stats.sh info $1 | grep -o "keys=[0-9]*" | cut -d= -f2
UserParameter=redis.db.expires[*],/etc/zabbix/scripts/redis_stats.sh info $1 | grep -o "expires=[0-9]*" | cut -d= -f2

3. 在Zabbix Web界面配置

步骤1:创建主机 进入 配置 → 主机 → 创建主机 填写: 步骤2:链接模板 在主机配置中找到 模板 标签 链接模板:选择 Template DB Redis(如果已导入) 或手动创建监控项 步骤3:创建监控项(如果没有模板)

创建基础监控项示例:

名称 键值 信息类型 单位
Redis Ping redis.ping 数字(无符号)
Redis连接数 redis.info[connected_clients] 数字(无符号)
Redis内存使用 redis.info[used_memory] 数字(无符号) B
Redis命中率 redis.info[keyspace_hits] 数字(无符号)
Redis QPS redis.info[total_commands_processed] 数字(无符号) ops
步骤4:创建触发器

创建重要告警触发器:

Redis服务宕机

名称:Redis服务不可用
表达式:{Redis-Server:redis.ping.max(#3)}=0
严重性:灾难

内存使用过高

名称:Redis内存使用超过阈值
表达式:{Redis-Server:redis.info[used_memory].last()}>1000000000  # 1GB
严重性:严重

连接数过多

名称:Redis连接数过多
表达式:{Redis-Server:redis.info[connected_clients].last()}>1000
严重性:警告
步骤5:创建图形

内存使用图

性能图

连接图

四、监控指标说明

关键性能指标:

内存相关

连接相关

性能相关

持久化相关

副本相关(如果有集群)

五、故障排查

常见问题及解决:

权限问题

# 确保zabbix用户有权限执行脚本
sudo chmod 755 /etc/zabbix/scripts/*
sudo chown zabbix:zabbix /etc/zabbix/scripts/*

连接测试

# 测试Redis连接
redis-cli -h 127.0.0.1 -p 6379 ping

# 测试Agent获取数据
zabbix_get -s 127.0.0.1 -k "redis.info[used_memory]"

查看日志

# Zabbix Agent日志
tail -f /var/log/zabbix/zabbix_agentd.log

# Redis日志
tail -f /var/log/redis/redis-server.log

六、优化建议

调整监控频率

设置历史数据保留

配置告警升级

使用LLD自动发现

这样你就完成了Zabbix 5.0监控Redis 7的全过程。系统会持续监控Redis的健康状态,并在出现问题时及时告警。

相关推荐