跳到主要内容

第9章 Agent2监控Redis

1.准备Redis环境

自己解决

2.安装Anget2


# 导入zabbix仓库

rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpm


# 替换链接为阿里云

sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#g' /etc/yum.repos.d/zabbix.repo


# 安装Zabbix agent2

yum install zabbix-agent2 -y

3.配置Anget2

cat > /etc/zabbix/zabbix_agent2.conf << 'EOF'
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
Server=10.0.0.61
Include=/etc/zabbix/zabbix_agent2.d/*.conf
EOF

systemctl restart zabbix-agent2.service

4.添加主机

1739174342911-9b93ec65-9d84-4c9d-ac37-779386c5be79.png

1739174315518-f308707d-8fe4-45c7-87ed-84e7ecd4b379.png

1739174681438-b0f565e9-8467-4b10-af9e-189a41f0bbc5.png

5.redis有密码的情况

正确的配置:

[root@db-51 ~]# cat /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
Server=10.0.0.61
Include=/etc/zabbix/zabbix_agent2.d/*.conf
Plugins.Redis.Sessions.redis51.Uri=tcp://localhost:6379
Plugins.Redis.Sessions.redis51.Password=123456

关联模板:

1739176280535-f33e43ab-0d75-4ece-bbb0-f070bacf3593.png

报错信息:

1739175377382-fbcb1874-532a-4974-bcfe-5243dd6bc368.png

报错原因:

Plugins.Redis.Sessions.*.Password=123456 不能有*号也不能有-

6.AI分析监控项

这份Zabbix模板文件用于监控Redis数据库的关键指标,涵盖了Redis的多个方面,包括客户端连接、内存使用、CPU消耗、持久化、复制、慢查询等。以下是一些关键指标及其含义的详细分析:


### 1. **客户端连接相关指标**

+ **Redis: Blocked clients** (`redis.clients.blocked`)
- **含义**: 当前等待阻塞调用的客户端连接数。
- **用途**: 监控是否有客户端因阻塞操作(如`BLPOP`)而等待。
+ **Redis: Connected clients** (`redis.clients.connected`)
- **含义**: 当前连接的客户端数量。
- **用途**: 监控Redis的客户端连接数,防止连接数过多导致性能问题。
+ **Redis: Max clients** (`redis.config.maxclients`)
- **含义**: Redis允许的最大客户端连接数。
- **用途**: 当连接数达到此值时,新的连接将被拒绝。


### 2. **内存使用相关指标**

+ **Redis: Memory used** (`redis.memory.used_memory`)
- **含义**: Redis分配的内存总量(字节)。
- **用途**: 监控Redis的内存使用情况,防止内存不足。
+ **Redis: Memory used RSS** (`redis.memory.used_memory_rss`)
- **含义**: Redis进程占用的物理内存大小(字节)。
- **用途**: 监控Redis的实际内存占用情况。
+ **Redis: Memory fragmentation ratio** (`redis.memory.fragmentation_ratio`)
- **含义**: 内存碎片率(`used_memory_rss / used_memory`)。
- **用途**: 监控内存碎片情况,高碎片率可能导致内存浪费。
+ **Redis: Max memory** (`redis.memory.maxmemory`)
- **含义**: Redis配置的最大内存限制。
- **用途**: 监控Redis的内存使用是否接近配置的上限。


### 3. **CPU消耗相关指标**

+ **Redis: CPU sys** (`redis.cpu.sys`)
- **含义**: Redis服务器消耗的系统CPU时间(秒)。
- **用途**: 监控Redis的系统CPU使用情况。
+ **Redis: CPU user** (`redis.cpu.user`)
- **含义**: Redis服务器消耗的用户CPU时间(秒)。
- **用途**: 监控Redis的用户CPU使用情况。
+ **Redis: CPU sys children** (`redis.cpu.sys_children`)
- **含义**: 后台进程消耗的系统CPU时间(秒)。
- **用途**: 监控Redis后台进程的系统CPU使用情况。
+ **Redis: CPU user children** (`redis.cpu.user_children`)
- **含义**: 后台进程消耗的用户CPU时间(秒)。
- **用途**: 监控Redis后台进程的用户CPU使用情况。


### 4. **持久化相关指标**

+ **Redis: AOF enabled** (`redis.persistence.aof_enabled`)
- **含义**: 是否启用了AOF(Append-Only File)持久化。
- **用途**: 监控AOF持久化是否启用。
+ **Redis: RDB bgsave in progress** (`redis.persistence.rdb_bgsave_in_progress`)
- **含义**: 是否正在进行RDB后台保存。
- **用途**: 监控RDB持久化操作的状态。
+ **Redis: RDB last bgsave status** (`redis.persistence.rdb_last_bgsave_status`)
- **含义**: 最后一次RDB保存操作的状态(成功或失败)。
- **用途**: 监控RDB持久化操作的成功与否。
+ **Redis: AOF last write status** (`redis.persistence.aof_last_write_status`)
- **含义**: 最后一次AOF写入操作的状态(成功或失败)。
- **用途**: 监控AOF持久化操作的成功与否。


### 5. **复制相关指标**

+ **Redis: Connected slaves** (`redis.replication.connected_slaves`)
- **含义**: 当前连接的从节点数量。
- **用途**: 监控Redis主从复制的从节点连接情况。
+ **Redis: Master replication offset** (`redis.replication.master_repl_offset`)
- **含义**: 主节点的复制偏移量。
- **用途**: 监控主从复制的同步进度。
+ **Redis: Replication backlog size** (`redis.replication.repl_backlog_size`)
- **含义**: 复制积压缓冲区的大小。
- **用途**: 监控复制积压缓冲区的大小,防止缓冲区不足导致复制延迟。


### 6. **慢查询相关指标**

+ **Redis: Slowlog entries per second** (`redis.slowlog.count`)
- **含义**: 每秒慢查询日志的条目数。
- **用途**: 监控Redis的慢查询情况,帮助识别性能瓶颈。


### 7. **其他关键指标**

+ **Redis: Uptime** (`redis.server.uptime`)
- **含义**: Redis服务器的运行时间(秒)。
- **用途**: 监控Redis的运行时间,判断是否有重启。
+ **Redis: Total commands processed** (`redis.stats.total_commands_processed`)
- **含义**: Redis服务器处理的总命令数。
- **用途**: 监控Redis的命令处理量,帮助评估负载。
+ **Redis: Keyspace hits** (`redis.stats.keyspace_hits`)
- **含义**: 键空间命中次数。
- **用途**: 监控Redis的缓存命中率。
+ **Redis: Keyspace misses** (`redis.stats.keyspace_misses`)
- **含义**: 键空间未命中次数。
- **用途**: 监控Redis的缓存未命中率。


### 8. **自动发现规则**

+ **Keyspace discovery** (`redis.keyspace.discovery`)
- **含义**: 自动发现Redis的各个数据库(DB)及其相关指标(如键数量、过期键数量等)。
- **用途**: 动态监控每个数据库的键空间使用情况。
+ **Replication metrics discovery** (`redis.replication.master.discovery`)
- **含义**: 自动发现主从复制的从节点及其相关指标(如复制延迟)。
- **用途**: 动态监控主从复制的状态和延迟。


### 9. **触发器**

+ **Redis: Total number of connected clients is too high**
- **含义**: 当连接的客户端数量超过最大客户端数的80%时触发警告。
- **用途**: 防止客户端连接数过多导致Redis性能下降。
+ **Redis: Memory fragmentation ratio is too high**
- **含义**: 当内存碎片率超过1.5时触发警告。
- **用途**: 防止内存碎片过多导致内存浪费。


### 10. **图形展示**

+ **Redis: Clients**
- **含义**: 展示客户端连接数和阻塞客户端数的趋势。
+ **Redis: Memory**
- **含义**: 展示内存使用情况、RSS内存和峰值内存的趋势。
+ **Redis: CPU**
- **含义**: 展示系统CPU和用户CPU的使用情况。
+ **Redis: Replication lag time**
- **含义**: 展示主从复制的延迟时间。


### 总结:

这份Zabbix模板文件全面监控了Redis的关键指标,涵盖了客户端连接、内存使用、CPU消耗、持久化、复制、慢查询等多个方面。通过这些指标,管理员可以及时发现Redis的性能瓶颈、内存问题、复制延迟等,确保Redis的稳定运行。