Giám sát máy Linux/Unix sử dụng plugin NRPE cho Nagios trên CentOS 6.2


Giới thiệu

NRPE là một addon cho Nagios giúp thực thi các plugin khác để monitor/check các resources (CPU load, memory usage, swap usage, disk usage, logged in users, running processes, v.v..) và services (http, ftp, v.v..) trên các máy Linux/Unix ở xa.

Mô hình và cơ chế làm việc của NRPE được mô tả trong hình dưới đây:

NRPE addon bao gồm 2 thành phần:

  • Plugin check_nrpe: nằm trên máy Nagios (là monitoring server)
  • Daemon NRPE: chạy trên máy Linux/Unix (remote host) cần monitor

Khi máy Nagios cần check các resources/services trên máy Linux/Unix ở xa:

  • Nagios sẽ thực thi plugin check_nrpe và cho biết resource/service nào cần check
  • Plugin check_nrpe sẽ liên lạc với daemon NRPE trên remote host. Kênh liên lạc có thể được bảo vệ bằng SSL
  • Daemon NRPE sẽ chạy các plugin thích hợp (như check_disk, check_load, check_http, v.v..) để check các resource/service được yêu cầu
  • NRPE daemon truyền kết quả cho check_nrpe, sau đó plugin này trả kết quả lại cho Nagios process

Lưu ý là NRPE daemon yêu cầu các Nagios plugins cần được cài đặt trên các remote Linux/Unix host.

Có 2 cách checking khi sử dụng addon NRPE là:

  • Direct Checks

Giúp monitor các “local” / “private” resource trên remote Linux/Unix host  như CPU load, memory usage, swap usage, disk usage, logged in users, running processes, v.v..

  • Indirect Checks

Nếu vì một lý do nào đó mà Nagios host không thể liên lạc được với các public services và resources của các remote server như HTTP, FTP nhưng remote Linux/Unix host (được cài NRPE daemon và các plugin) lại có thể thì có thể sử dụng cách này để NRPE daemon đóng vai trò làm proxy.

Cài đặt

Nhưng chỉ dẫn dưới đây được làm trên CentOS 6.2. Khi thực hiện, bạn cần có root account trên remote Linux/Unix host và nagios account trên monitoring host. Và trong quá trình compile & install cần có các gói make, gcc, perl, openssl, openssl-devel

  • Setup trên remote host

 1.      Chuyển qua root và tạo thêm account mới

$ su – root
# /usr/sbin/useradd nagios
# passwd nagios

2.      Tải về và giải nén gói Nagios plugins rồi tiến hành compile & install

# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
# tar xzf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15
# ./configure –with-nagios-user=nagios –with-nagios-group=nagios
# make
# make install

Sửa lại permission cho các thư mục chứa Nagios plugin

# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec

3.      Cài đặt xinetd

# yum install xinetd

4.      Cài đặt NRPE daemon

Tải về, giải nén và compile gói NRPE

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
# tar xzf nrpe-2.13.tar.gz
# cd nrpe-2.13
# ./configure
#make all

Cài đặt NRPE plugin (để testing), daemon, và sample config file

# make install-plugin
# make install-daemon
# make install-daemon-config

Chạy NRPE daemon như là một service dưới xinetd.

# make install-xinetd

Mở file /etc/xinetd.d/nrpe và thêm vào IP address của monitoring server ở dòng only_from

only_from       = 127.0.0.1 <nagios_ip_address>

Mở file /etc/services và thêm vào NRPE daemon

nrpe            5666/tcp # NRPE

Khởi động lại xinetd

# service xinetd restart

5.      Kiểm tra NRPE daemon trên localhost

Đảm bảo rằng NRPE daemon đang chạy dưới xinetd

# netstat -at | grep nrpe

Output như vầy là okie

tcp       0          0          *:nrpe              *:*                   LISTEN

Đảm bảo rằng NRPE đang vận hành đúng chức năng

# /usr/local/nagios/libexec/check_nrpe -H localhost

Output như vầy là okie

NRPE v2.13

6.      Mở firewall rule

Đảm bảo rằng local firewall trên remote Linux/Unix host cho phép NRPE daemon được truy cập từ các remote server

# iptables –I INPUT -p tcp -m tcp –dport 5666 -j ACCEPT
# service iptables save

7.      Tùy chỉnh lại các NRPE command

Sample config file cho NRPE daemon chứa một vài command definition mà ta cần dùng để monitor các local resource và service. Các command definition này sẽ định nghĩa các command để chạy một số plugin cho Nagios được cài đặt ở bước 2. Có thể chỉnh lại các command definition, thêm command mới, v.v.. bằng cách sửa file /usr/local/usr/local/nagios/etc/nrpe.cfg

Dùng một vài command có sẵn sau để check các resource localhost

# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_users
# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_load
# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_hda1
# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_total_procs
# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_zombie_procs

Vậy là xong phần cài đặt và cấu hình NRPE cho remote host

  • Setup trên monitoring

(Xem thêm bài Cài đặt Nagios trên CentOS 6.2)

1.      Cài đặt check_nrpe plugin

$ su – root
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
# tar xzf nrpe-2.13.tar.gz
# cd nrpe-2.13
# ./configure
# make all
# make install-plugin

2.      Kiểm tra việc liên lạc với NRPE daemon

# /usr/local/nagios/libexec/check_nrpe -H 192.168.137.3

(thay 192.168.137.3 thành IP address của remote Linux/Unix host)

Output như sau là okie

NRPE v2.13

Lưu ý có thể firewall trên monitoring host hoặc giữa nó với remote host làm cản trở việc liên lạc.

3.      Tạo một command definition để sử dụng check_nrpe plugin

Mở file commands.cfg

# vi /usr/local/nagios/etc/commands.cfg

Và thêm vào các dòng sau:

define command{
command_name          check_nrpe
command_line             $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Kế tiếp, ta sẽ thêm vào cấu hình của Nagios các service cần được monitor trên remote host.

4.      Tạo host và service definition

Best practice là trước tiên nên tạo mới một template cho các loại host khác nhau sẽ được monitor. Ở đây template được tạo có tên là linux.cfg:

# vi /usr/local/nagios/etc/objects/linux.cfg

Dưới đây là nội dung của file đó, tùy nhu cầu mà thay đổi các mục cho thích hợp:

define host{
name                                               linux-box
use                                                   generic-host
check_period                              24×7
check_interval                           5
retry_interval                            1
max_check_attempts             10
check_command                       check-host-alive
notification_period                  24×7
notification_interval               30
notification_options                d,r
contact_groups                          admins
register                                           0
}

Kế tiếp, tạo mới một object definition cho remote host và các resource, service chạy trên đó. Ở đây lấy tên file là oracle.cfg:

# vi /usr/local/nagios/etc/objects/oracle.cfg

Có nội dung mẫu như sau:

define host{
use                                                     linux-box
host_name                                     oracle-db
alias                                                  Oracle DB 11g
address                                            192.168.137.3
}

define service{
use                                generic-service
host_name                    oracle-db
service_description      CPU Load
check_command          check_nrpe!check_load
}

define service{
use                                generic-service
host_name                    oracle-db
service_description      Current Users
check_command          check_nrpe!check_users
}

define service{
use                                generic-service
host_name                    oracle-db
service_description      Total Processes
check_command          check_nrpe!check_total_procs
}

Ngoài 3 service cơ bản (CPU Load, Current Users, Total Processes) ở trên, ta có thể thêm definition cho nhiều service khác như memory usage, disk usage, SSH, HTTP, v.v..

Cuối cùng, cần phải thêm 2 object definition file ở trên vào trong config file chính là nagios.cfg:

# vi /usr/local/nagios/etc/nagios.cfg

Thêm vào 2 dòng sau và lưu lại:

cfg_file=/usr/local/nagios/etc/objects/linux.cfg
cfg_file=/usr/local/nagios/etc/objects/oracle.cfg

5.      Khởi động lại Nagios

Kiểm tra lại các config file:

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nếu output không có lỗi thì chạy tiếp lệnh:

# /etc/init.d/nagios restart
# /etc/init.d/nagios reload

Truy cập vào web interface của Nagios để xem thành quả!

http://<nagios_IP_address>/nagios/

Tham khảo thêm tài liệu chính thức của NRPE ở đây.

–manthang.

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s