Cách sử dụng Raspberry Pi để giám sát mạng với Nagios

Cách tốt nhất để giám sát mạng với Raspberry Pi là sử dụng một phần mềm có tên là Nagios. Nagios giống như một công cụ phát hiện lỗi, nó sẽ kiểm tra một thứ thường xuyên (chẳng hạn như 5 phút một lần) và cảnh báo cho bạn khi việc kiểm tra này không hoạt động như mong đợi.

Cách cài đặt Nagios trên Raspberry Pi

Cài đặt Raspbian

Điều đầu tiên bạn cần, là một hệ điều hành.

Bắt đầu với Raspbian. Raspbian Lite là hoàn hảo cho mục tiêu này, nhưng hãy tùy chọn phiên bản desktop bạn thích

Dưới đây là các bước đầu tiên bạn cần hoàn thành trước khi tiếp tục:

  • Cài đặt Raspbian trên Raspberry Pi
  • Thay đổi mật khẩu mặc định và đặt các tùy chọn như bạn muốn (ngôn ngữ, bàn phím, IP,…)
  • Bật SSH và định cấu hình nó để tự động khởi động
  • Xác minh rằng bạn có thể kết nối từ máy tính của mình qua SSH
  • Cập nhật Pi
sudo apt update
 sudo apt upgrade
 sudo reboot

Vậy là xong, bạn đã sẵn sàng bắt đầu.

Các bản tải xuống và điều kiện tiên quyết

Nagios là một giao diện web, vì vậy bạn cần cài đặt Apache và PHP

sudo apt install apache2 libapache2-mod-php

Sau đó, có hai thứ cần tải xuống và cài đặt:

  • Nagios Core: Đây là phần chính của hệ thống Nagios
  • Nagios Plugins: Điều này sẽ thêm các lệnh kiểm tra cơ bản vào Nagios, vì vậy bạn sẽ không phải tự tạo tất cả các script.

Tải Nagios Core | Tải Nagios Plugins:

http://nagios-plugins.org/download/

Cuối cùng, tải xuống kho lưu trữ với wget:

mkdir /home/pi/Downloads
 cd /home/pi/Downloads
 wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.2.tar.gz
 wget http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

Bây giờ, bạn đã sẵn sàng chuyển sang quá trình cài đặt.

Cài đặt Nagios

Tạo nhóm và người dùng Nagios

Bạn cần tạo một người dùng cụ thể cho Nagios, cộng với một nhóm cho người dùng nagios và apache (nagcmd)

sudo useradd -m -s /bin/bash nagios
 sudo groupadd nagcmd
 sudo usermod -a -G nagcmd nagios
 sudo usermod -a -G nagcmd www-data

Biên dịch và cài đặt Nagios

Bây giờ, bạn phải giải nén các file từ kho lưu trữ, biên dịch các nguồn và cài đặt Nagios trên Raspberry Pi.

Di chuyển đến thư mục Downloads:

cd /home/pi/Downloads

Giải nén các file từ kho lưu trữ đã tải xuống trước đó.

tar zxvf nagios-4.4.2.tar.gz

Đừng quên thay đổi số phiên bản nếu bạn tải xuống một phiên bản khác

  • Biên dịch:
cd nagios-4.4.2/
 ./configure --with-command-group=nagcmd
 make all

Quá trình này có thể mất vài phút.

  • Cài đặt:
sudo make install
 sudo make install-init
 sudo make install-config
 sudo make install-commandmode

Đây là phần cuối của quá trình cài đặt Nagios Core.

Bây giờ, bạn cần cấu hình phần Apache để cho phép truy cập vào trang Nagios.

Cấu hình Apache cho Nagios

Kích hoạt mô-đun CGI cho Apache:

sudo a2enmod cgi

Sao chép cấu hình Apache vào thư mục Apache:

sudo cp sample-config/httpd.conf /etc/apache2/sites-enabled/nagios.conf

Tạo người dùng đầu tiên cho giao diện web:

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

Khởi động lại Apache:

sudo service apache2 restart

Kiểm tra xem bạn có quyền truy cập vào Nagios không:

Truy cập http://<RASPBERRY IP>/nagios. Bạn sẽ nhận được một thứ giống như thế này:

Cách sử dụng Raspberry Pi để giám sát mạng với Nagios
Thông báo khi truy cập http:///nagios

Đó là điều bình thường. Bạn sẽ khắc phục điều đó ngay bây giờ! Việc cài đặt Nagios gần như đã hoàn tất, chỉ cần chạy Nagios service nữa là xong.

Bắt đầu Nagios service

Nagios có một service chạy nền để khởi chạy kiểm tra với tần suất được xác định trước (ví dụ: 5 phút một lần). Bạn cần khởi động nó để hoàn tất quá trình cài đặt:

sudo service nagios start

Và để khởi động Nagios tự động khi boot:

sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Nếu bạn refresh giao diện web, bây giờ, bạn sẽ thấy “Daemon running with PID XXX”.

Mọi thứ đều ổn với Nagios. Bạn chỉ cần thêm plugin ngay bây giờ

Cài đặt các plugin Nagios

Làm theo quy trình sau để cài đặt các plugin Nagios:

  • Giải nén file từ kho lưu trữ:
tar zxvf nagios-plugins-2.2.1.tar.gz
  • Biên dịch và cài đặt:
cd nagios-plugins-2.2.1/
 ./configure --with-nagios-user=nagios --with-nagios-group=nagios
 make
 sudo make install

Tất cả các plugin hiện có sẵn trong thư mục /usr/local/nagios/libexec/ và sẵn sàng sử dụng trong Nagios.

Bạn có thể cần khởi động lại Nagios để áp dụng các thay đổi:

sudo service nagios restart

Cấu hình Nagios cho phù hợp với nhu cầu

Nagios vocabulary

Nagios sử dụng một vocabulary (nhóm từ vựng) cụ thể để xác định từng đối tượng trong cấu hình

Vì vậy, trước tiên, cần phải chắc chắn rằng bạn biết điều đó:

– Command: Một lệnh về cơ bản là một script từ thư mục Nagios Plugins. Bạn xác định nó trong Nagios để sử dụng nó sau này với các tham số (ví dụ: check_load là một lệnh).

– Service: Service là việc kiểm tra áp dụng cho một hoặc nhiều máy tính và sử dụng lệnh để chạy xác minh cụ thể (ví dụ: kiểm tra xem tải có lớn hơn 10 trên Raspberry Pi không là một service).

– Host: Host là máy tính, máy chủ, bất kỳ thứ gì có địa chỉ IP.

– Hostgroup: Bạn có thể xác định một nhóm host, như “Raspberry Pi” và áp dụng các service giống nhau cho tất cả mọi host bên trong nhóm này.

Bây giờ, hãy xem cách cấu hình từng cái trong file cấu hình Nagios.

Ví dụ, bài viết sẽ theo dõi Raspberry Pi Zero từ Raspberry Pi 3B+ nơi cài đặt Nagios.

Chuẩn bị host

Nagios chủ yếu sử dụng SNMP để kết nối với các host khác và nhận tất cả thông tin cần thiết. Vì vậy, bạn cần cài đặt SNMP trên mọi host mới trước khi thêm nó vào file cấu hình.

Điều này không bắt buộc, mà phụ thuộc vào service bạn sẽ tạo cho host này. Trong trường hợp ví dụ, hãy làm theo các bước sau trên Raspberry Pi Zero:

Kết nối với host qua SSH

  • Cài đặt snmpd:
sudo apt install snmpd
  • Di chuyển đến thư mục cấu hình:
cd /etc/snmp
  • Xóa (hoặc sao lưu) file snmpd.conf:
sudo rm snmpd.conf
  • Tạo một file snmpd.conf mới:
sudo nano snmpd.conf
  • Dán những dòng này vào:
com2sec readonly default RASPBERRYTIPS
 group MyROGroup v1 readonly
 group MyROGroup v2c readonly
 view all included .1 80
 access MyROGroup "" any noauth exact all none none
 sysName Pi Zero

Thay thế RASPBERRYTIPS bằng cộng đồng bạn muốn sử dụng, sysName bằng tên host hoặc mô tả. Có rất nhiều tùy chọn có sẵn trong snmpd.conf, nhưng đối với thử nghiệm này, bạn không cần gì nhiều hơn thế.

  • Lưu và thoát (CTRL + O, CTRL + X)
  • Khởi động lại snmpd:
sudo service snmpd restart

Bây giờ, bạn có thể thêm host này trong Nagios.

Thêm host

  • Quay lại Raspberry Pi host Nagios.
  • Di chuyển đến thư mục cấu hình đối tượng của Nagios:
cd /usr/local/nagios/etc/objects
  • Tạo một file mới cho host, chẳng hạn như pizero.cfg:
sudo nano pizero.cfg
  • Dán những dòng này vào:
define host {
 
     use                     linux-server            ; Host group to use
     host_name               Pi Zero                 ; Name of this host
     alias                   pizero                  ; Alias
     address                 192.168.1.18            ; IP Address
 }

Đây thực sự là một định nghĩa host cơ bản, với hostname, alias và địa chỉ IP. Ví dụ cũng thêm nó vào nhóm Linux server host để kế thừa các service được xác định cho nhóm, nếu bạn thêm sau đó.

  • Lưu và thoát (CTRL + O, CTRL + X)
  • Bây giờ, bạn cần nói với Nagios rằng bạn đã thêm một file mới.
  • Thêm dòng này trong /usr/local/nagios/etc/nagios.cfg (ngay dưới localhost.cfg):
cfg_file=/usr/local/nagios/etc/objects/pizero.cfg
  • Khởi động lại Nagios:
sudo service nagios restart
  • Quay lại giao diện web Nagios, trong menu Hosts, bạn sẽ có một dòng mới như thế này:

Cách sử dụng Raspberry Pi để giám sát mạng với Nagios
Dòng mới trong menu Hosts

Nagios đã theo dõi phản hồi ping cho host mới, nhưng bạn muốn có nhiều hơn nữa. Vì vậy, bạn cần thêm một service bên trong, nhưng trước tiên, hãy xác định lệnh để sử dụng.

Thêm lệnh

Trước đó, trong hướng dẫn này, bạn đã tải xuống và cài đặt các plugin Nagios. Các plugin Nagios cung cấp rất nhiều lệnh để kiểm tra host cục bộ, nhưng không có nhiều lệnh đối với host từ xa.

Bạn cũng có thể tải xuống rất nhiều lệnh khác trên trang web này (đặc biệt khi tìm kiếm các plugin SNMP):

https://exchange.nagios.org/directory/Plugins/

Đối với ví dụ, ta sẽ theo dõi việc đồng bộ thời gian giữa hai Raspberry Pi.

Để thêm một lệnh trong Nagios, hãy làm theo các bước sau:

  • Di chuyển đến các thư mục plugin:
cd /usr/local/nagios/libexec
  • Chạy lệnh mà không có tham số:
./check_ntp
  • Lưu ý thông báo trợ giúp và các thông số bạn cần chuyển. Trong trường hợp ví dụ, thông báo lỗi này xuất hiện:
Usage:
 check_ntp -H <host> [-w <warn>] [-c <crit>] [-j <warn>] [-k <crit>] [-4|-6] [-v verbose]

Vì vậy, phải chỉ định IP host trong đối số -H, có thể là ngưỡng mang tính cảnh báo và quan trọng với -w và -c. Các tùy chọn khác dường như không phù hợp.

  • Mở file cấu hình lệnh:
sudo nano /usr/local/nagios/etc/objects/commands.cf
  • Kiểm tra xem lệnh đã ở bên trong chưa và nếu chưa, bạn phải thêm nó như sau:
define command {
 
     command_name    check_ntp
     command_line    $USER1$/check_ntp -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$
 }
  • Lưu, thoát và khởi động lại Nagios.
sudo service nagios restart
  • Kiểm tra xem lệnh hiện đã có trong Nagios chưa:
    • Chuyển đến giao diện web.
    • Nhấp vào Configuration ở menu bên trái.
    • Chọn Commands và nhấp vào Continue.
    • Bây giờ, bạn sẽ thấy check-ntp trong danh sách (hoặc bất kỳ lệnh nào bạn thêm vào).

Lệnh hiện đã sẵn sàng để sử dụng cho host, nhưng cần tạo một service mới để áp dụng nó.

Thêm một service

Để tạo một service mới, hãy làm theo các bước sau:

  • Mở file cấu hình host:
sudo nano /usr/local/nagios/etc/objects/pizero.cfg
  • Điều chỉnh tên file theo đúng những gì bạn đã tạo trước đó.
  • Dán những dòng này:
define service {
 
     use                     local-service           ; Name of service template to use
     host_name               Pi Zero
     service_description     Time synchronization
     check_command           check-ntp!1!5
 }

Đừng quên điều chỉnh những dòng này cho phù hợp với cấu hình trước đó của bạn.

Trên dòng check_command, hãy xác định tất cả các đối số, được phân tách bằng dấu chấm than.

  • Lưu và thoát.
  • Kiểm tra cấu hình:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Điều này có thể hữu ích để xác định xem bạn có lỗi cấu hình không trước khi khởi động lại Nagios.

  • Khởi động lại Nagios:
sudo service nagios restart

Bây giờ, trong phần chi tiết trạng thái từ host, bạn sẽ thấy service mới:

Cách sử dụng Raspberry Pi để giám sát mạng với Nagios
Service mới

Nếu bạn đã hiểu cách tạo một host, lệnh và service, thì bây giờ, bạn đã sẵn sàng làm mọi thứ trong Nagios. Hãy thoải mái tải xuống các plugin mới trên Internet hoặc thậm chí viết code cho các plugin của riêng bạn (nó không khác gì một script cơ bản để kiểm tra thứ gì đó).

Leave a Reply