Cài đặt Nagios Core trên Ubuntu: Giám sát hạ tầng “nồi đồng cối đá” với NRPE và Plugin tự viết

Monitoring tutorial - IT technology blog
Monitoring tutorial - IT technology blog

Tại sao vẫn dùng Nagios khi Prometheus và Zabbix đang chiếm sóng?

Trong hạ tầng mình quản lý, Prometheus và Grafana đảm nhận việc soi metrics thời gian thực cho khoảng 20 cụm Docker Swarm. Tuy nhiên, khi cần giám sát những con server vật lý chạy App Legacy hoặc cần một câu trả lời nhị phân “Sống hay Chết” (Up/Down), Nagios Core vẫn là lựa chọn số một. Nó không hào nhoáng nhưng cực kỳ lỳ lợm.

Nhiều anh em mới vào nghề thường chê giao diện Nagios cũ kỹ, cấu hình file text lại dễ sai sót. Thực tế, độ ổn định của nó là thứ mà các công cụ hiện đại đôi khi phải chào thua. Nagios chạy nhẹ hìu, chỉ tốn chưa đầy 20MB RAM và không cần database phức tạp để lưu trữ trạng thái.

Ba cách tiếp cận giám sát phổ biến với Nagios

Để lấy dữ liệu từ server remote, anh em thường có 3 hướng đi chính:

  • Check qua giao thức công cộng (HTTP, PING, SMTP): Phương pháp này chỉ kiểm tra được bề nổi. Bạn biết web còn sống, nhưng không biết CPU server đó có đang quá tải hay không.
  • Check qua SNMP: Đây là tiêu chuẩn cho thiết bị mạng như Switch hay Router. Tuy nhiên, cấu hình SNMP trên Linux khá cồng kềnh và tiềm ẩn rủi ro bảo mật nếu dùng bản v2 cũ.
  • Check qua NRPE (Nagios Remote Plugin Executor): Cách này tối ưu nhất cho Server Linux. Một agent nhỏ sẽ chạy trên server đích, thực thi các script local rồi trả kết quả về cho Nagios Server trung tâm qua cổng 5666.

Cân nhắc ưu và nhược điểm thực tế

Điểm mạnh:
– Tài nguyên tiêu thụ cực thấp, gần như bằng không.
– Kho plugin đồ sộ được cộng đồng đóng góp suốt 20 năm qua, cái gì cũng có script sẵn.
– Khả năng tùy biến vô hạn. Chỉ cần biết viết Bash, Python hay Perl, bạn có thể monitor bất cứ thứ gì từ nhiệt độ phòng máy đến số lượng đơn hàng trong DB.

Điểm yếu:
– Quản trị hoàn toàn bằng file .cfg. Chỉ cần thiếu một dấu ngoặc nhọn }, toàn bộ service sẽ đứng hình.
– Giao diện mặc định trông như từ những năm 90. Nhưng mục tiêu của chúng ta là nhận cảnh báo kịp thời, không phải để ngắm đồ thị đẹp mắt.

Sau đây, mình sẽ hướng dẫn cài Nagios Core từ source code để tối ưu hiệu năng và dùng NRPE để giám sát từ xa.

Bước 1: Cài đặt Nagios Core trên Ubuntu 22.04

Bắt đầu bằng việc cài đặt các gói phụ trợ để biên dịch source code. Mình dùng bản Ubuntu 22.04 LTS cho ổn định.

sudo apt update
sudo apt install -y autoconf gcc libc6 make wget unzip apache2 php libapache2-mod-php libgd-dev
sudo apt install -y libmcrypt-dev libssl-dev bc gawk dc build-essential snmp libnet-snmp-perl gettext

Tiếp theo, hãy tải bản Nagios Core mới nhất về thư mục tạm:

cd /tmp
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.9.tar.gz
tar xzf nagios-4.4.9.tar.gz
cd nagios-4.4.9

Quá trình build và cài đặt diễn ra như sau:

sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all

# Tạo user và group hệ thống
sudo make install-groups-users
sudo usermod -a -G nagios www-data

# Cài đặt binaries, daemon và file cấu hình mẫu
sudo make install
sudo make install-daemoninit
sudo make install-commandmode
sudo make install-config
sudo make install-webconf

Cuối cùng, hãy tạo tài khoản nagiosadmin để đăng nhập vào Dashboard. Đừng quên lưu lại mật khẩu này.

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Bước 2: Cài đặt Nagios Plugins

Nagios Core giống như bộ não, còn Plugin chính là tay chân. Không có plugin, Nagios sẽ không biết cách kiểm tra dung lượng ổ cứng hay trạng thái RAM.

cd /tmp
wget https://nagios-plugins.org/download/nagios-plugins-2.3.3.tar.gz
tar xzf nagios-plugins-2.3.3.tar.gz
cd nagios-plugins-2.3.3

sudo ./configure
sudo make
sudo make install

Bước 3: Cấu hình NRPE trên Client (Server cần giám sát)

Trên các server đích (Client), chúng ta không cần cài cả bộ Nagios. Chỉ cần cài NRPE agent là đủ. Để tiết kiệm thời gian, mình thường dùng apt thay vì build từ source.

sudo apt update
sudo apt install nagios-nrpe-server nagios-plugins

Mở file /etc/nagios/nrpe.cfg. Tìm dòng allowed_hosts và thêm IP của Nagios Server vào để cho phép kết nối:

allowed_hosts=127.0.0.1,10.0.0.50  # 10.0.0.50 là IP Nagios Server của mình

Khởi động lại service để áp dụng thay đổi: sudo systemctl restart nagios-nrpe-server.

Bước 4: Tự viết Custom Plugin bằng Bash Script

Đây là phần thú vị nhất. Giả sử bạn muốn cảnh báo nếu folder log của ứng dụng vượt quá 1GB. Hãy tạo file /usr/lib/nagios/plugins/check_log_size.sh trên Client:

#!/bin/bash
path="/var/log/myapp"
size=$(du -s $path | cut -f1)

if [ $size -gt 1048576 ]; then
    echo "CRITICAL - Thư mục $path chiếm $(($size/1024)) MB"
    exit 2
elif [ $size -gt 524288 ]; then
    echo "WARNING - Thư mục $path chiếm $(($size/1024)) MB"
    exit 1
else
    echo "OK - Dung lượng log ổn định"
    exit 0
fi

Cấp quyền thực thi bằng lệnh chmod +x. Sau đó, bạn chỉ việc khai báo command này vào file nrpe.cfg để Nagios Server có thể gọi lệnh từ xa.

Bước 5: Thiết lập cảnh báo Email tự động

Để nhận mail ngay khi có sự cố, Nagios cần một trình chuyển phát (MTA). Postfix là lựa chọn phổ biến nhất vì nó dễ tích hợp với Relay của Gmail hoặc SendGrid.

sudo apt install postfix mailutils

Sửa file /usr/local/nagios/etc/objects/contacts.cfg và cập nhật email nhận thông báo:

define contact {
    contact_name            nagiosadmin
    use                     generic-contact
    alias                   Nagios Admin
    email                   [email protected]
}

Một mẹo nhỏ: Hãy dùng các dịch vụ SMTP như Amazon SES. Việc này giúp email cảnh báo không bị nhảy vào hòm thư Spam khi hệ thống gửi đi hàng chục mail mỗi ngày.

Lời kết: Khi nào bạn nên chọn Nagios?

Nagios giống như một “người gác đền” tận tụy cho những hệ thống hỗn hợp. Nếu bạn quản lý server vật lý, database quan trọng hoặc cần các check logic nghiệp vụ phức tạp, Nagios vẫn cực kỳ đáng tin. Nó không hào nhoáng, nhưng nó sẽ hú hét ầm ĩ qua Telegram hay Email ngay khi có biến. Hy vọng bài hướng dẫn này giúp bạn làm chủ được công cụ giám sát kinh điển này.

Share: