[Zabbix-5] Thiết lập Giám sát Redis sử dụng Zabbix Agent2
Nằm trong Series tìm hiểu và sử dụng Zabbix. Hôm nay mình sẽ viết một bài giám sát Redis sử dụng Zabbix Agent2
Redis là một trong những thành phần quan trọng trong các hệ thống backend sử dùng từ cache, session store, message queue cho đến dữ liệu real-time. Khi Redis gặp sự cố (hết bộ nhớ, mất kết nối, replication lag,hay đơn giản làm chậm bất thường), hậu quả ảnh hưởng trực tiếp đến các nghiệp vụ xử lý tầng backend.
Từ Zabbix Agent2 (viết bằng Go), Zabbix đã tích hợp sẵn plugin Redis native, cho phép giám sát Redis mà không cần viết thêm các scripts như Zabbix Agent1. Tuy nhiên, trên thực tế triển khai đặc biệt trong môi trường có nhiều host với nhiều phiên bản Zabbix Agent2 khác nhau. Quá trình cấu hình lại phát sinh khá nhiều lỗi mà tài liệu chính thức không nói đến. Bài viết này mình sẽ hướng dẫn thực hiện, kè theo các lỗi thực tế thường gặp và cách xử lý.
1. Kiến trúc tổng quan
Việc giám sát Redis qua Zabbix Agent2 sẽ gồm 3 lớp:
- Redis server
- Zabbix Agent2
- Zabbix Server
2. Cài đặt Zabbix Agent2
Trên OS Debian/Ubuntu
sudo apt install zabbix-agent2
Trên OS RHEL/Centos/Rocky
sudo yum install zabbix-agent2
Kiểm tra plugin Redis đã có sẵn trong bản build hay chưa
zabbix_agent2 -p | grep -i redis
Kiểm tra phiên bản zabbix agent2 vừa cài xong
zabbix_agent2 -V
3. Cấu hình plugin Redis
Đảm bảo file chính /etc/zabbix/zabbix_agent2.conf có dòng include:
Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf
Tiếp theo cấu hình file redis.conf trong /etc/zabbix/zabbix_agent2.d/plugins.d/redis.conf
sudo nano /etc/zabbix/zabbix_agent2.d/plugins.d/redis.con
**3.1 Zabbix Agent2 phiên bản <= 6.2.x **
Trên các bản 6.2.x, plugin Redis chưa có khái niệm Default - chỉ hỗ trợ khai báo theo tên session (Plugins.Redis.Sessions.<TênSession>.). Nếu bạn dùng cú pháp Plugins.Redis.Default. trên bản này, Agent2 sẽ báo lỗi và không khởi động được.
Cấu hình:
Plugins.Redis.Sessions.RedisServer.Uri=tcp://localhost:6379
Plugins.Redis.Sessions.RedisServer.Password=your_redis_password
Test bằng key có kèm tên session:
zabbix_agent2 -t "redis.ping[RedisServer]"
zabbix_agent2 -t "redis.info[RedisServer]"
3.2 Zabbix Agent2 phiên bản mới hơn 6.4.x trở lên
Trên các bản 6.4.x, plugin Redis đã hỗ trợ khái niệm Default Cấu hình:
Plugins.Redis.Default.Uri=tcp://localhost:6379
Plugins.Redis.Default.Password=your_redis_password
Test bằng key trần, không cần chỉ định session:
zabbix_agent2 -t redis.ping
zabbix_agent2 -t redis.info
3.3 Bảng tóm tắt tương thích
| Zabbix Agent2 version | Plugins.Redis.Default.* | Plugins.Redis.Sessions.* |
|---|---|---|
| ≤ 6.2.x | ❌ Không hỗ trợ | ✅ Có |
| 6.4.x | ✅ Có (Uri, Password) | ✅ Có |
| 7.0+ | ✅ Có | ✅ Có |
Vì vậy, bạn luôn chạy zabbix_agent2 -V trước khi cấu hình, đừng copy nguyên cấu hình từ tài liệu chính thức (thường viết cho bản mới nhất) sang host đang chạy bản cũ.
4. Cấu hình phía Frontend Zabbix
Bước 1: Import và gán template
Zabbix cung cấp sẵn template "Redis by Zabbix agent 2". Vào Data collection -> Hosts -> chọn host -> tab Template -> Add -> chọn template này -> Update.

Bước 2: Cấu hình Macro theo đúng kiểu cấu hình plugin trên từng host
Đây là phần dễ nhầm nhất khi hạ tầng có nhiều version Agent2 khác nhau. Item mặc định trong template gọi theo dạng:
redis.ping[{$REDIS.CONN.URI},{$REDIS.PASSWORD},{$REDIS.USERNAME}]
Trường hợp A - Host dùng Plugins.Redis.Default.* (Agent2 6.4+):
| Macro | Giá trị |
|---|---|
| {$REDIS.CONN.URI} | tcp://localhost:6379 |
| {$REDIS.PASSWORD} | để trống hoặc điền password tường minh |
| {$REDIS.USERNAME} | để trống nếu không dùng ACL |

Trường hợp B - Host dùng Plugins.Redis.Sessions.* (Agent2 ≤ 6.2.x):
| Macro | Giá trị |
|---|---|
| {$REDIS.CONN.URI} | tên session đã khai báo (ví dụ RedisServer), không phải URI thật |
| {$REDIS.PASSWORD} | để trống — agent tự lấy từ session đã cấu hình |
| {$REDIS.USERNAME} | để trống nếu không dùng ACL |

Macro nên được set ở cấp Host (không sửa ở Template) khi các host có cấu hình khác nhau, để tránh ảnh hưởng dây chuyền sang các host khác dùng chung template.
Bước 3: Kiểm tra dữ liệu trên Frontend
Vào Monitoring -> Hosts -> chọn host -> chọn Dashboard -> chọn Redis overivew or Redis performance

5. Các lỗi thực tế thường gặp và cách xử lý
Lỗi 1: invalid parameter Plugins.Redis.Default.User: unknown parameter
Nguyên nhân: Bản Agent2 đang chạy chưa hỗ trợ tham số User cho Redis plugin (phổ biến ở nhiều bản 6.x, kể cả một số bản 6.4).
Cách xử lý: Xóa dòng Plugins.Redis.Default.User khỏi file cấu hình. Nếu cần xác thực ACL username, truyền trực tiếp qua item key:
zabbix_agent2 -t "redis.ping[tcp://localhost:6379,acl_username,acl_password]"
Lỗi 2: Connection failed: NOAUTH Authentication required
Nguyên nhân: Agent2 kết nối tới Redis không kèm password - do file cấu hình plugin thiếu dòng Password, dùng sai tên session, hoặc test bằng key trần (redis.info) trong khi cấu hình lại đặt theo tên session (Sessions.RedisServer.) thay vì Default.
Cách xử lý:
Xác nhận đúng password bằng redis-cli
redis-cli -h 127.0.0.1 -p 6379 -a 'your_password' ping
Nếu dùng session, nhớ truyền tên session vào key khi test:
zabbix_agent2 -t "redis.info[RedisServer]"
Vậy là mình đã hoàn thành bài viết hướng dẫn giám sát Redis với Zabbix Agent2. Chúc các bạn thực hiện thành công 
All Rights Reserved