6 tháng cùng Zabbix: Hướng dẫn thực tế về Giám sát mạng Chủ động

Networking tutorial - IT technology blog
Networking tutorial - IT technology blog

Từ “Chữa cháy” đến “Dự báo”: Hành trình 6 tháng cùng Zabbix

Sáu tháng trước, thói quen buổi sáng của chúng tôi rất dễ đoán: đến văn phòng với hơn 20 ticket báo “mạng chậm” và sếp tài chính (CFO) liên tục hỏi tại sao hệ thống ERP lại lag. Chúng tôi như đang đi trong sương mù, chỉ biết dựa vào các lệnh ping cơ bản và một đống script Python lộn xộn.

Sau khi thử nghiệm ba giải pháp doanh nghiệp khác nhau, tôi đã chuyển toàn bộ hệ thống sang Zabbix. Kể từ đó, thời gian trung bình để phát hiện sự cố (MTTD) của chúng tôi đã giảm từ 45 phút xuống dưới 60 giây. Đây không chỉ là một hướng dẫn cài đặt; đây là bản thiết kế cho những gì thực sự hiệu quả trong một môi trường sản xuất (production) đầy áp lực.

Cuộc tranh luận lớn: Zabbix vs. Prometheus vs. Nagios

Việc chọn một công cụ giám sát thường giống như một cuộc chiến quan điểm trong các phòng IT. Tôi đã dành ba tuần thử nghiệm Prometheus và Nagios trước khi quyết định gắn bó với Zabbix. Prometheus rất tuyệt vời cho Kubernetes và microservices, nhưng việc cố gắng giám sát một con switch Catalyst 10 năm tuổi với nó giống như một cực hình. Nagios, dù là một tượng đài, vẫn mang lại cảm giác lỗi thời của năm 2005 với cấu hình dạng văn bản (text-based) rắc rối.

Tính năng Zabbix Prometheus Nagios
Hỗ trợ SNMP Native & Mạnh mẽ Cần SNMP Exporter Phụ thuộc Plugin
Cấu hình Web UI sạch sẽ + API File cấu hình YAML File văn bản thuần
Lưu trữ SQL (Postgres/MySQL) TSDB tùy chỉnh Add-on bên ngoài
Dashboard Tích hợp sẵn rất tốt Yêu cầu Grafana Cơ bản/Lạc hậu

Zabbix chiến thắng vì nó coi SNMP là một tính năng cốt lõi. Nó cung cấp một giao diện quản lý tập trung (single pane of glass), nơi database, frontend và logic cảnh báo tồn tại cùng nhau. Sự gắn kết về mặt kiến trúc này đã giúp chúng tôi tiết kiệm khoảng 10 giờ bảo trì mỗi tuần.

180 ngày sau: Những điểm mạnh và những thách thức

Tính năng ưu việt

  • Template tức thì: Chỉ cần gán template ‘Cisco IOS’ cho một core switch mới, 80+ sensor sẽ được tạo ngay lập tức. Trong vài giây, bạn đã có thể theo dõi nhiệt độ, tốc độ quạt và mức sử dụng backplane mà không cần động tay.
  • Hiệu năng sử dụng: Server của chúng tôi xử lý hơn 500 host và 12.000 item với chỉ số ‘New Values Per Second’ (NVPS) là 250, nhưng CPU hiếm khi vượt quá 15% mức sử dụng.
  • Tự động khám phá (Discovery): Khi chúng tôi thêm một tầng mới với 15 access point, Zabbix đã tự động phát hiện, đặt tên và vẽ sơ đồ cho tất cả thông qua một lần quét subnet trong chưa đầy 8 phút.

Những bài học đắt giá

  • Mật độ giao diện: Hãy chuẩn bị tinh thần cho việc bị “choáng ngợp bởi menu”. Việc tìm nơi thay đổi một loại media cụ thể có thể giống như một trò chơi tìm đồ vật trong tuần đầu tiên sử dụng.
  • Quản lý Database: Ban đầu, chúng tôi lưu dữ liệu với khoảng cách 1 phút trong vòng một năm. Database đã phình to lên 200GB chỉ trong một tháng. Tôi khuyên bạn nên thiết lập PostgreSQL partitioning ngay lập tức nếu dự định giám sát hơn 100 thiết bị.

Cấu hình ổn định (The Stability Stack)

Để có trải nghiệm “cài xong là chạy”, đừng tiết kiệm tài nguyên cho hệ điều hành. Tôi sử dụng một instance Ubuntu 24.04 LTS riêng biệt. Mặc dù Apache là mặc định cho nhiều hệ thống, nhưng Nginx mang lại cảm giác mượt mà hơn khi tải các biểu đồ traffic 24 giờ nặng nề. Hệ thống của chúng tôi chưa từng phải khởi động lại lần nào kể từ khi triển khai.

# Thông số môi trường Production (Xử lý ~500 Host) 
CPU: 4 Nhân (Intel Xeon hoặc tương đương)
RAM: 8GB (Zabbix rất cần RAM để làm bộ nhớ đệm)
Ổ cứng: 100GB NVMe (Cơ sở dữ liệu cần tốc độ đọc/ghi IOPS cao)
OS: Ubuntu 24.04 LTS

Lộ trình triển khai

1. Cài đặt cốt lõi

Tránh sử dụng các kho lưu trữ mặc định của Ubuntu; chúng thường đi sau vài phiên bản. Hãy sử dụng repo chính thức của Zabbix 7.0 (LTS) để có các bản vá bảo mật và tính năng mới nhất.

# Tải gói cài đặt Zabbix 7.0 chính thức
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest+ubuntu24.04_all.deb
sudo apt update

# Cài đặt server, giao diện web chạy Nginx và agent
sudo apt install zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

2. Tối ưu Cơ sở dữ liệu

PostgreSQL là tiêu chuẩn vàng cho việc lưu trữ Zabbix. Nó xử lý tải ghi dữ liệu lớn của các thông số mạng tốt hơn MySQL khi chịu áp lực cao.

# Thiết lập người dùng và cơ sở dữ liệu Zabbix
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix

# Nhập cấu trúc cơ sở dữ liệu (Mất khoảng 30-45 giây)
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Mở file /etc/zabbix/zabbix_server.conf và đặt DBPassword= thành mật khẩu bạn đã chọn. Đừng để trống phần này.

3. Hoàn thiện giao diện Web

Cấu hình Nginx để trỏ về domain cụ thể của bạn. Chỉnh sửa /etc/zabbix/nginx.conf, sau đó khởi động lại các dịch vụ để bảng điều khiển (dashboard) hoạt động.

# Khởi động các dịch vụ
sudo systemctl restart zabbix-server zabbix-agent nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent nginx php8.3-fpm

Kết nối Switch đầu tiên

Zabbix cực kỳ mạnh về SNMP. Đầu tiên, hãy cấu hình thiết bị mạng để trao đổi với IP của Zabbix. Trên switch Cisco, bạn chỉ cần một dòng lệnh nhanh:

# Kích hoạt quyền đọc qua SNMP (Read-Only)
conf t
snmp-server community MySecretString RO
exit

Trong giao diện Zabbix, đi tới Data collection > Hosts. Khi tạo host, hãy sử dụng template “Cisco IOS by SNMP” và thêm interface SNMP với IP của switch. Đảm bảo bạn vào tab Macros và đặt {$SNMP_COMMUNITY} thành ‘MySecretString’. Trong vòng ba phút, bạn sẽ thấy biểu đồ băng thông thời gian thực cho mọi cổng.

Loại bỏ tình trạng nhiễu cảnh báo (Alert Fatigue)

Nếu core switch của bạn gặp sự cố, bạn chắc chắn không muốn nhận 200 cảnh báo cho 200 server nằm sau nó. Đó là lý do các vấn đề nghiêm trọng thường bị bỏ qua. Hãy sử dụng Trigger Dependencies (Phụ thuộc giữa các Trigger). Bằng cách thiết lập các switch nhánh phụ thuộc vào core switch, bạn sẽ chỉ nhận được đúng một cảnh báo mức ‘High’ thay vì một cơn mưa thông báo gây nhiễu. Chúng tôi cũng tích hợp Zabbix với Slack. Email là nơi các cảnh báo dễ bị lãng quên, nhưng một thông báo Slack kèm link trực tiếp đến biểu đồ sự cố sẽ nhận được phản hồi chỉ trong vài giây.

Dashboard dành cho ‘Lãnh đạo’

Thành công lớn nhất của tôi không nằm ở kỹ thuật, mà là ở khía cạnh truyền thông. Tôi đã xây dựng một dashboard dành cho ban quản lý, thay thế các dữ liệu OID phức tạp bằng các chỉ số kinh doanh rõ ràng. Nó bao gồm một đồng hồ đo tỷ lệ phần trăm SLA 30 ngày và biểu đồ ‘Top 5 đường truyền bận rộn nhất’.

Sự minh bạch này đã biến bộ phận của chúng tôi từ một ‘chiếc hộp đen’ bí ẩn thành một đội ngũ chủ động, có khả năng dự báo các vấn đề về băng thông nhiều tháng trước khi chúng xảy ra. Nếu bạn vẫn đang dựa vào các lệnh ping và hy vọng sự cố không xảy ra, đã đến lúc chuyển sang Zabbix. Việc thiết lập ban đầu có thể mất vài giờ, nhưng sự an tâm sẽ kéo dài trong nhiều năm.

Share: