Home » » Cài đặt Nagios

Cài đặt Nagios

Written By Giai phap ma nguon mo on Thursday, July 14, 2011 | 2:53 AM


Yêu cầu
Để cài đặt phần mềm trước tiên ta phải có quyền truy cập tài khoản root.
Đảm bảo rằng các gói cài đặt sau được cài trên hệ điều hành CentOS trước khi tiếp tục:
·        Apache
·        PHP
·        Phần biên dịch GCC
·        Thư viện GD
Chúng ta có thể sử dụng lệnh yum để cài đặt các gói ứng dụng bằng các lệnh sau:
yum install httpd php
yum install gcc glibc glibc-common
yum install gd gd-devel
Tạo thông tin tài khoản người dùng
Trước tiên ta phải có quyền truy cập như là root
su -l
Tạo tài khoản nagios và mật khẩu
/usr/sbin/useradd -m nagios
passwd nagios
Tạo một nhóm người dùng mới là nagcmd, để cho phép tài khoản nagios có thể truy cập vào giao diện web ta thêm tài khoản nagiosapache vào nhóm nagcmd
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache

Tải phần mềm nagios và các plug-in
Tạo một thư mục lưu trữ phần mềm tải về
mkdir ~/downloads
cd ~/downloads
Tải phần mềm nagios và plug-in tại 2 địa chỉ sau:
  http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz
Biên dịch và cài đặt Nagios
Giải nén mã nguồn của nagios được tải về
cd ~/downloads
tar xzf nagios-3.2.3.tar.gz
cd nagios-3.2.3
Chạy tập tin kịch bản cấu hình của nagios bằng tên nhóm người dùng nagcmd đã được tạo ở phần trên
./configure --with-command-group=nagcmd
Biên dịch mã nguồn của nagios
make all
Cài đặt chương trình, tập lệnh init, tập tin cấu hình mẫu và thiết lập quyền cho các thư mục cần thiết.
make install
make install-init
make install-config
make install-commandmode

Tùy chỉnh cấu hình
Những tập tin cấu hình của nagios nằm tại thư mục /usr/local/Nagios/etc.
Chỉnh sửa tập tin contacts.cfg tại/usr/local/Nagios/etc/objects/contacts.cfg để thay đổi thông tin địa chỉ email cần dùng cho việc nhận các cảnh báo.
vi /usr/local/nagios/etc/objects/contacts.cfg
Cấu hình giao diện Web
Cài đặt tập tin cấu hình web Nagios trong thư mục conf.d của Apache.
make install-webconf
Tạo tài khoản nagiosadmin để đăng nhập vào giao diện web của Nagios.
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Khởi động lại Apache để các cài đặt mới có hiệu lực.
service httpd restart                           
Biên dịch và cài đặt các Plugins của Nagios
Giải nén mã nguồn của Nagios Plugins
cd ~/downloads
tar xzf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
Biên dịch và cài đặt plugins
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
Bắt đầu Nagios
Thêm Nagios vào danh sách các dịch vụ hệ thống tự bắt đầu khi hệ điều hành  được khởi động.
chkconfig --add nagios
chkconfig nagios on
Xác định tập tin cấu hình của Nagios xem có lỗi gì không.
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nếu kết quả trả về là không có lỗi thì ta bắt đầu dịch vụ Nagios.
service nagios start
Sửa đổi SELinux
Hệ điều hành CentOS có ứng dụng SELinux (Security Enhanced Linux) được cài đặt mặc định và ở chế độ Enforcing. Điều này có thể làm chúng ta không truy cập được giao diện của Nagios.
Xem thử chế độ của SELinux có phải là Enforcing không.
getenforce
Đặt lại chế độ cho SELinux là Permissive.
setenforce 0
Để thay đổi này cố định, ta phải thay đổi cấu hình của SELinux tại /etc/selinux/config và khởi động lại.
Thay vì phải vô hiệu hóa SELinux hoặc chuyển nó sang chế độ Permissive, ta có thể dùng các lệnh sau để chạy CGIs của Nagios dưới chế độ Enforcing:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
Đăng nhập vào giao diện Web của Nagios
Bây giờ ta có thể đăng nhập vào giao diện web của Nagios với tài khoản nagiosadmin và mật khẩu đã được thiết lập lúc đầu tại địa chỉ:
Tới đây là đã thành công trong việc cài đặt phần mềm Nagios.

1.1.1. Cấu hình Nagios

1.1.1.1 Cấu hình để giám sát hệ thống chạy hệ điều hành Windows

Giới thiệu
Chúng ta sẽ tiến hành cấu hình Nagios để giám sát các thông tin cơ bản của hệ thống Windows là một máy Client mẫu (Sample Client):
·        Memory sử dụng
·        Tải CPU
·        Dung lượng ổ đĩa sử dụng
·        Trạng thái các dịnh vụ
·        Các tiến trình đang chạy
Khái quát cách hoạt động của Nagios với Windows
Monitoring a Windows Machine
Hình 52 Giao tiếp giữa Nagios và Windows
Giám sát các dịch vụ hay các thuộc tính của một hệ thống Windows yêu cầu ta phải cài một Agent trên đó. Agent này giống như là một trung gian giữa các Plugin của Nagios được dùng để giám sát các dịch vụ và thuộc tính của Windows. Nếu Agent không được cài đặt trên hệ thống Windows thì ta không thể giám sát được.
Ở đây ta sử dụng phần mềm NSClient++ để giám sát máy Windows và sử dụng plugin check_nt để giao tiếp với NSClient++ (check_nt được cài đặt trên máy chủ Nagios như ở phần trên).
Ngoài NSClient++ ta có thể sử dụng NC_Net có chức năng tương tự NSClient++.
Các bước tiến hành
Có một vài quá trình cần thực hiện để tiến hành giám sát một máy Windows đó là:
·        Kiểm tra các yêu cầu.
·        Cài đặt agent trên máy Windows.
·        Tạo một host và một định nghĩa service để giám sát máy Windows.
·        Khởi động lại tiến trình nagios để cập nhật thay đổi.
Yêu cầu
Để cấu hình Nagios giám sát một máy tính Windows ta cần cấu hình các thông tin sau:
Chỉnh sửa tập tin cấu hình Nagios:
vi /usr/local/nagios/etc/nagios.cfg
Bỏ ký tự # ở dòng sau:
#cfg_file=/usr/local/nagios/etc/objects/windows.cfg 
Lưu tập tin và thoát.
Công việc vừa làm đã cấu hình cho Nagios biết để đọc các thông tin trong tập tin /usr/local/nagios/etc/objects – là nơi thêm các thông tin về máy windows và các dịch vụ cần giám sát.
Cài đặt Agent trên Windows
Trước khi tiến hành giám sát ta cần cài đặt agent trên Windows. Ở đây ta sử dụng NSClient++ có thể tìm thấy tại: http://nsclient.org/nscp/downloads
·        Tải phiên bản NSClient++ mới nhất tại: http://nsclient.org/nscp/downloads
·        Giải nén tập tin tải về ở thư mục C:\NSClient++
·        Mở cửa sổ Command Prompt
·        Gõ lệnh sau để cài đặt NSClient++:
o       nsclient++ /install
·        Bật biểu tượng NSClient++ trên thanh menu hệ thống
o       nsclient++ SysTray
·        Bật trình quản lý dịch vụ của NSClient++ để đảm bảo cho phép truyền thông giữa Nagios Server và máy Windows.
NSClientpp
Hình 53: Phần mềm NSClient++
Chỉnh sửa tập tin NSC.INI (trong thư mục C:\NSClient++):
·        Bỏ dấu “ ; ” ở tất cả các modules được liệt kê trong [modules] trừ CheckWMI.dll và RemoteConfiguration.dll
·        Tùy chọn mật khẩu có thể thay đổi tại phần [Settings]
·        Bỏ dấu “ ; ” của allowed_hosts trong phần [Settings]. Thêm địa chỉ IP của Nagios Server hoặc để trống để cho phép bất kỳ host nào kết nối đến
·        Đảm bảo cổng trong phần [NSClient] là 12489
Gõ lệnh sau để bắt đầu dịch vụ NSClient++ trên windows
   nsclient++ /start
Nếu cài đặt đúng thì một biểu tượng mới sẽ xuất hiện trong khay hệ thống.
Đến đây ta có thể thêm máy Windows vào tập tin cấu hình của Nagios để bắt đầu giám sát.
Cấu hình Nagios
Mở tập tin windows.cfg
vi /usr/local/nagios/etc/objects/windows.cfg
Thêm một định nghĩa mới cho máy Windows để tiến hành giám sát. Thay đổi các thông tin như host_name, alias, address thích hợp:
define host{
   use                                        windows-server  
   host_name                           Sample Client
   alias                                     My Windows Server
   address                                10.0.4.11
   }
Bây giờ ta sẽ định nghĩa các dịch vụ cần giám sát trên máy Windows
Theo dõi phiên bản của NSClient++. Điều này rất hữu ích cho việc cần để kiểm tra nâng cấp phiên bản NSClient++ khi cần thiết:
define service{
   use                                        generic-service
   host_name                           Sample Client
   service_description           NSClient++ Version
   check_command                check_nt!CLIENTVERSION
   }
Giám sát thời gian hoạt động của máy Windows
define service{
   use                                        generic-service
   host_name                           Sample Client
   service_description           Uptime
   check_command                check_nt!UPTIME
   }
Giám sát tải của CPU và cấu hình để Nagios bật cảnh báo là WARNING nếu tải lớn hơn 80% trong 5 phút và CRITICAL nếu tải lớn hơn 90% trong 5 phút.
define service{
   use                                        generic-service
   host_name                           Sample Client
   service_description           CPU Load
   check_command                check_nt!CPULOAD!-l 5,80,90
   }
Định nghĩa dịch vụ giám sát dung lượng sử dụng của bộ nhớ. WARNING nếu sử dụng trên 80% và CRITICAL nếu sử dụng trên 90%
define service{
   use                                        generic-service
   host_name                           Sample Client
   service_description           Memory Usage
   check_command                check_nt!MEMUSE!-w 80 -c 90
   }
Giám sát dung lượng ổ đĩa C. Bật cảnh báo WARNING khi sử dụng trên 80% dung lượng đĩa cứng và CRITICAL khi dùng trên 90%.
define service{
   use                                        generic-service
   host_name                           Sample Client
   service_description           C:\ Drive Space
   check_command                check_nt!USEDDISKSPACE!-l c -w 80 -c 90
   }
Định nghĩa dịch vụ giám sát tiến trình Explorer.exe và bật CRITICAL nếu tiến trình này không chạy.
define service{
   use                                        generic-service
   host_name                           Sample Client
   service_description           Explorer
   check_command                check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
   }
Hiển thị tất cả các tiến trình đang chạy
define service{
   use                                        generic-service
   hostgroup_name                windows-servers
   service_description           Process
   check_command                check_nt!INSTANCES!-d SHOWALL -l Process
   }
Đó là một vài dịch vụ giám sát máy Windows cơ bản. Ta lưu lại tập tin cấu hình
Mật khẩu
Nếu có cấu hình mật khẩu trong NSClient++ ở Windows, cần sửa đổi lệnh check_nt để cho phép mật khẩu. Mở tập tin commands.cfg để chỉnh sửa.
vi /usr/local/nagios/etc/objects/commands.cfg
Thay đổi định nghĩa của lệnh check_nt để cho phép mật khẩu với tùy chọn –s <mật khẩu>
define command{
   command_name  check_nt
   command_line     $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
   }
Lưu lại tập tin commands.cfg
Khởi động lại dịch vụ Nagios
Kiểm tra xem các thông tin cấu hình có lỗi gì không với lệnh
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nếu quá trình kiểm tra thông báo có lỗi, tiến hành sửa lỗi tại tập tin được thông báo rồi khởi động lại dịch vụ nagios để cập nhật thay đổi
service nagios restart
Kết quả giám sát trên Sample Client:
Thông tin các dịch vụ đã cấu hình để kiểm tra trên Sample Client: dung lượng ổ C, tải CPU, Explore, dung lượng memory sử dụng, phiên bản của NSClient++, các tiến trình đang chạy trên máy, thời gian bật máy.
Hình 54: Thông tin các dịch vụ trên Sample Client
Theo hình 5-5 ta có thể thấy thông tin về Sample Client: IP Address, trạng thái host, trạng thái thông tin, host có chập chờn hay không, thời gian cập nhật cuối cùng…
Hình 55: Thông tin về Sample Client

1.1.1.2 Giám sát Router và Switch

Giới thiệu
Phần mô tả triển khai dưới đây trình bày cách giám sát trạng thái của router hoặc switch. Chúng ta không thể giám sát nếu các thiết bị này không có địa chỉ IP. Mặc khác nếu các thiết bị trên hỗ trợ giao thức SNMP sẽ rất thuận tiện cho việc giám sát.
Các thông tin giám sát trên router hoặc switch
·        Lượng dữ liệu bị mất và thời gian truyền trung bình của lệnh ping
·        Thông tin trạng thái thiết bị

Khái quát
Giám sát các thiết bị router và swich có thể được đơn giản hóa tùy thuộc vào loại thiết bị và thông tin cần giám sát.
Switch và router có thể được theo dõi dễ dàng bởi lệnh ping để xác định độ ổn định của đường truyền. Nếu thiết bị hỗ trợ SNMP ta có thể giám sát nhiều thông tin hơn.
Lệnh check_snmp chỉ hoạt động khi hệ thống được cài đặt các gói ứng dụng net_snmpnet_snmp_utils. Nếu các ứng dụng này chưa được cài đặt thì hãy cài chúng trước và cài lại các plugin của nagios.
Các bước tiến hành
Cần tiến hành các bước sau để giám sát thiết bị:
·        Kiểm tra các yêu cầu.
·        Tạo một host và một định nghĩa service để giám sát máy Router và Switch
·        Khởi động lại tiến trình nagios để cập nhật thay đổi.
Yêu cầu
Để cấu hình Nagios giám sát một router hay switch ta cần cấu hình các thông tin sau:
Chỉnh sửa tập tin cấu hình Nagios:
vi /usr/local/nagios/etc/nagios.cfg
Bỏ ký tự # ở dòng sau:
#cfg_file=/usr/local/nagios/etc/objects/switch.cfg     
Lưu tập tin và thoát.
Công việc vừa làm đã cấu hình cho Nagios biết để đọc các thông tin trong tập tin /usr/local/nagios/etc/objects – là nơi thêm các thông tin về router hoặc switch cùng các dịch vụ cần giám sát.

Cấu hình Nagios
Ta cấu hình để Nagios giám sát switch Dalat-CoreSW-1 như sau:
Bây giờ ta sẽ định nghĩa các object definitions trong tập tin cấu hình để giám sát một máy router hoặc switch mới
Mở tập tin switch.cfg
vi /usr/local/nagios/etc/objects/switch.cfg
Thêm một định nghĩa mới cho router hoặc switch để tiến hành giám sát. Thay đổi các thông tin như host_name, alias, address thích hợp:
define host{
   use                         generic-switch    
   host_name           Dalat-CoreSW-1                
   alias                      Dalat Switch Core
   address                 10.0.255.1                           
   hostgroups           Dalat Switch Core                                            
   }
Giám sát các dịch vụ
Để giám sát các dịch vụ ta tiến hành định nghĩa các dịch vụ trong tập tin switch.cfg
Giám sát các gói dữ liệu bị mất và RTA
Thêm định nghĩa dịch vụ sau để theo dõi các gói dữ liệu bị mất và thời gian gửi trung bình giữa Nagios server và host cần giám sát mỗi 5 phút trong điều kiện bình thường.
define service{
   use                                        generic-service   
   host_name                           Dalat-CoreSW-1
   service_description           PING                     
   check_command                check_ping!200.0,20%!600.0,60%               
   normal_check_interval    5             
   retry_check_interval        1             
   }
Ý nghĩa của dịch vụ:
·        OK nếu RTA bé hơn 200ms và dữ liệu bị mất bé hơn 20%
·        Bật cảnh báo WARNING nếu RTA lơn hơn 200 ms hoặc mất hơn 20% dữ liệu.
·        Nagios sẽ thông báo CRITICAL nếu RTA lớn hơn 600 milisecond hoặc mất hơn 60% gói dữ liệu.
Giám sát thông tin trạng thái bằng SNMP
Nếu router hoặc switch hỗ trợ SNMP thì có thể theo dõi nhiều thông tin bằng giao thức này.
Giám sát thời gian hoạt động:
define service{
   use                                        generic-service   
   host_name                           Dalat-CoreSW-1
   service_description           Uptime   
   check_command                check_snmp!-C public -o sysUpTime.0
   }
Trong câu lệnh check_snmp thì tùy chọn –C public là chuỗi community và sysUpTime.0 là chỉ ra OID cần được kiểm tra.
Nếu muốn kiểm tra trạng thái của cổng trên router hoặc switch ta định nghĩa dịch vụ sau:
define service{
   use                                        generic-service
   host_name                           Dalat-CoreSW-1
   service_description           Port 1 Link Status
   check_command                check_snmp!-C public -o ifOperStatus.1 -r 1 -m RFC1213-MIB
   }
Trong ví dụ trên thì tùy chọn –o ifOperStatus.1 chỉ ra kiểm tra trạng thái cổng 1. Giá trị -r 1 chỉ ra kết quả trả về là OK nếu trạng thái là hoạt động và CRITICAL nếu không tìm thấy giá trị cổng 1. Tùy chọn –m RFC1213-MIB chỉ cho check_snmp biết chỉ tải thông tin của RFC1213-MIB thay vì tất cả các MIB trên hệ thống, điều này giúp tốc độ kiểm tra nhanh hơn.
Giám sát các interface trên router và switch
Dùng plugin check_interface_table để giám sát tất cả các inerface trên router hay switch. Ta khai báo plugin trong commands.cfg như sau
define command{
command_name       check_interface_table
command_line          $USER1$/check_interface_table.pl -H $HOSTADDRESS$  -C $ARG1$ -w $ARG2$ -c $ARG3$ -Exclude $ARG4$ -Include $ARG5$ -host $ARG6$
}
Định nghĩa dịch vụ để tiến hành giám sát
define service{
            use                                          generic-service
            hostgroup_name                  Dalat-CoreSW-1
            service_description             Interface Table
            check_command                   check_interface_table
            max_check_attempts           3
            normal_check_interval       2
            retry_check_interval           2
}
Khai báo trên sẽ trả về giá trị là một bảng tất các các interface trên router hay switch
C:\Users\Lendz\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Word\Capture.jpg
Hình 56: Bảng Interface của plugin check_interface
Giám sát nhiệt độ
Khai báo plugin của check_catalyst_temp trong commands.cfg như sau
define command{
command_name       check_temp
command_line          $USER1$/check_catalyst_temp.pl -s $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$
}
Để giám sát nhiệt độ của router hoặc switch ta định nghĩa dịch vụ sau
define service{
            use                                          generic-service
            hostgroup_name                  Dalat-CoreSW-1
            service_description             Temp
            check_command                   check_temp!70!80
            max_check_attempts           3
            normal_check_interval       2
            retry_check_interval           2
}
Dịch vụ trên sẽ tiến hành kiểm tra nhiệt độ và sinh cảnh báo WARNING nếu nhiệt độ lớn hơn 70 độ và CRITICAL nếu nhiệt độ lớn hơn 80 độ
Giám sát tải
Dùng plugin check_snmp_cisco_loadavg với khai báo trong commands.cfg như sau
define command{
command_name       check_load
command_line          $USER1$/check_snmp_cisco_loadavg -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$
}
Định nghĩa dịch vụ để tiến hành giám sát
define service{
            use                                          generic-service
            hostgroup_name                  Dalat-CoreSW-1
            service_description             CPU Load
            check_command                   check_load!70!80
            max_check_attempts           3
            normal_check_interval       2
            retry_check_interval           2
}
Dịch vụ trên sẽ tiến hành kiểm tra tải CPU và sinh cảnh báo WARNING nếu tải lớn hơn 70% và CRITICAL nếu tải lớn hơn 80%
Giám sát tình trạng bộ nhớ
Sử dụng plugin check_catalyst_mem để giám sát dung lượng bộ nhớ đang được sự dụng với khai báo trong commands.cfg như sau
define command{
command_name       check_mem
command_line          $USER1$/check_catalyst_mem.pl -s $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$
}
Dịch vụ trên sẽ tiến hành kiểm tra dung lượng bộ nhớ và sinh cảnh báo WARNING nếu dung lương bộ nhớ chưa sử dụng còn ít hơn 20% và CRITICAL nếu ít hơn 10%
define service{
            use                                          generic-service
            host_name                             Dalat-CoreSW-1
            service_description             Memory
            check_command                   check_mem!20%!10%
            max_check_attempts           3
            normal_check_interval       2
            retry_check_interval           2
}
Lưu lại tập tin switch.cfg


Khởi động lại dịch vụ Nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nếu quá trình kiểm tra thông báo có lỗi, tiến hành sửa lỗi tại tập tin được thông báo rồi khởi động lại dịch vụ nagios để cập nhật thay đổi
service nagios restart
Thông tin kết quả giám sát trên Dalat-CoreSW-1
Theo hình 5-7 ta có thể thấy thông tin về Dalat-CoreSW-1: IP Address, trạng thái host, trạng thái thông tin, host có chập chờn hay không, thời gian cập nhật cuối cùng…
Hình 57: Thông tin trạng thái Dalat-CoreSW-1



Thông tin các dịch vụ trên Dalat-CoreSW-1: tải CPU, bảng các Interface của host, dung lượng bộ nhớ sử dụng, PING, nhiệt độ, thời gian hoạt động.
Hình 58: Thông tin các dịch vụ trên Dalat-CoreSW-1

1.1.1.3 Giám sát một số dịch vụ phổ biến

Giới thiệu
Các dịch vụ phổ biến được đề cập sau đây là các dịch vụ thường hay được sử dụng và triển khai trên các hệ thống như HTTP, FTP, SSH…
Ngược lại với một số dịch vụ không phổ biến ta phải sử dụng các agent để có thể thu được thông tin cần như là tải CPU, memory, dung lượng đĩa cứng…
Các plugin dùng để giám sát một số dịch vụ cơ bản
Khi chúng ta cần giám sát trạng thái của các ứng dụng, dịch vụ hoặc giao thức ta cần các plugin để thực thi việc đó. Nagios cung cấp chính thức các plugin này để có thể sử dụng với mục đích cá nhân.
Mặc khác nếu không tìm thấy plugin thích hợp, Nagios có thể hỗ trợ các plugin tự phát triển bởi các cá nhân. Do vậy khả năng phát triển của Nagios hầu như không bị giới hạn.
Khai báo một host
Trước khi tiến hành giám sát các dịch vụ ta phải định nghĩa một host – nơi mà các dịch vụ hoặc ứng dụng được cài đặt.
define host{
   use                         generic-host        
   host_name           DNS Server                         
   alias                      Application Server            
   address                 10.0.4.12                             
   hostgroups           allhosts                 
   }
define host{
   use                         generic-host        
   host_name           Web Server                         
   alias                      Application Server            
   address                 10.0.3.11                             
   hostgroups           allhosts                 
   }
 
Khai báo các dịch vụ cần giám sát
Với mỗi dịch vụ cần giám sát, ta phải định nghĩa dịch vụ đó trong Nagios với host được tạo.
Giám sát HTTP
Plugin check_http được dùng để giám sát giao thức HTTP, dùng plugin này ta có thể giám sát được thời gian hồi báo, mã lỗi, chuỗi trả về của HTML, chứng chỉ chứng thực của máy chủ…
Trong tập tin commands.cfg ta có định nghĩa của lệnh check_http như sau:
define command{
   name                                    check_http
   command_name                 check_http
   command_line                    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
   }
Một khai báo đơn giản để giám sát dịch vụ HTTP trên Web Server sẽ như sau:
define service{
   use                                        generic-service   
   host_name                           Web Server
   service_description           HTTP
   check_command                check_http
   }
Đây là một định nghĩa đơn giản để giám sát dịch vụ HTTP trên Web Server. Nagios sẽ cảnh báo nếu máy chủ web không hồi báo trong vòng 10s hoặc có thể trả về mã lỗi HTTP như 403, 404,..
Một khai báo khác của check_http cho việc giám sát dịch vụ HTTP như bên dưới. Dịch vụ này được định nghĩa để kiểm tra xem đường dẫn /download/index.php có chứa chuỗi “latest-version.tar.gz” hay không.  Nagios sẽ bật cảnh báo nếu không chứa chuỗi trên hoặc máy chủ không hồi báo trong 5s.
define service{
   use                                        generic-service   
   host_name                           Web Server
   service_description           Product Download Link
   check_command                check_http!-u /download/index.php -t 5 -s "latest-version.tar.gz"
   }
 
 
Giám sát FTP
Khi cần giám sát các máy chủ FTP ta có thể sử dụng dịch vụ check_ftp. Tập tin commands.cfg đã chứa định nghĩa cho lệnh check_ftp như sau:
define command{
   command_name  check_ftp
   command_line     $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
   }
Một định nghĩa đơn giản để theo dõi dịch vụ FTP trên máy remotehost như sau:
define service{
   use                                        generic-service   
   host_name                           Sample Server
   service_description           FTP
   check_command                check_ftp
   }
Định nghĩa dịch vụ này sẽ giám sát dịch vụ FTP và tạo cảnh báo nếu máy chủ FTP không hồi báo trong vòng 10s.
Một khai báo khác cho dịch vụ FTP như bên dưới. Ý nghĩa của khai báo này là Nagios sẽ kiểm tra FTP trên cổng 1023 của máy remotehost. Nagios sẽ tạo cảnh báo nếu máy chủ FTP không hồi báo trong vòng 5s hoặc máy chủ hồi báo không chứa chuỗi “Pure-FTPd [TLS]
define service{
   use                                        generic-service   
   host_name                           Sample Server
   service_description           Special FTP 
   check_command                check_ftp!-p 1023 -t 5 -e "Pure-FTPd [TLS]"
   }
Giám sát SSH
Dùng plugin check_ssh để giám sát dịch vụ này. Lệnh check_ssh được định nghĩa trong commands.cfg như sau:
define command{
   command_name  check_ssh
   command_line     $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
   }
Một khai báo kiểm tra dịch vụ SSH đơn giản:
define service{
   use                                        generic-service   
   host_name                           Sample Server
   service_description           SSH
   check_command                check_ssh
   }
Nagios sẽ sinh cảnh báo nếu không được hồi đáp trong vòng 10s.
Khai báo dưới đây sẽ kiểm tra dịch vụ SSH và sinh cảnh báo nếu máy chủ không hồi báo trong vỏng 5s hoặc trong phiên bản của SSH không chứa chuỗi OpenSSH_4.2
define service{
   use                                        generic-service   
   host_name                           Sample Server
   service_description           SSH Version Check 
   check_command                check_ssh!-t 5 -r "OpenSSH_4.2"
   }
Giám sát SMTP
Dùng plugin check_smtp để giám sát dịch vụ này. Lệnh check_smtp được định nghĩa trong commands.cfg như sau:
define command{
   command_name  check_smtp
   command_line     $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
               }
Một khai báo dịch vụ đơn giản của smtp:
define service{
   use                                        generic-service   
   host_name                           Sample Server
   service_description           SMTP
   check_command                check_smtp
   }
Nagios sẽ sinh cảnh báo nếu máy chủ SMTP không hồi báo trong vòng 10s.
Khai báo sau sẽ làm cho Nagios sinh cảnh báo nếu máy chủ SMTP không hồi báo trong 5s hoặc hồi báo từ máy chủ không chứa chuỗi “mygreatmailserver.com
define service{
   use                                        generic-service   
   host_name                           Sample Server
   service_description           SMTP Response Check 
   check_command                check_smtp!-t 5 -e "mygreatmailserver.com"
   }
 
 
Giám sát dịch vụ DNS
Dùng plugin check_dns có sẵn trong thư viện của Nagios để giám sát dịch vụ này. Do chưa có định nghĩa trong commands.cfg nên ta tiến hành định nghĩa cho plugin này.
define command{
   command_name  check_dns
   command_line     $USER1$/check_dns -s $HOSTADDRESS$ -H $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$
   }
Sau khi định nghĩa ta khai báo một dịch vụ để kiểm tra DNS Server có hoạt động đúng hay không
define service{
   use                                        generic-service
   host_name                           DNS Server
   service_description           DNS
   check_command                check_dns!www.dlu.edu.vn!10.0.3.11!15!25
   }
Với định nghĩa dịch vụ trên Nagios sẽ kiểm tra máy chủ DNS Server với Host Name www.dlu.edu.vn có phải ở địa chỉ 10.0.3.11 không. Nếu không sẽ sinh cảnh báo CRITICAL hoặc nếu DNS Server không hồi báo trong 15s sẽ sinh cảnh báo WARNING và CRITICAL nếu không hồi báo trong 25s.
Khởi động lại Nagios
Kiểm tra xem các thông tin cấu hình có lỗi gì không với lệnh
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nếu quá trình kiểm tra thông báo có lỗi, tiến hành sửa lỗi tại tập tin được thông báo rồi khởi động lại dịch vụ nagios để cập nhật thay đổi
service nagios restart
Kết quả giám sát trên DNS Server
Thông tin các dịch vụ trên DNS Server: dung lượng ổ C, tải CPU, Explore, dung lượng memory sử dụng, phiên bản của NSClient++, các tiến trình đang chạy trên máy, thời gian bật máy, dịch vụ DNS của DNS Server.
Hình 59: Thông tin các dịch vụ trên DNS Server
Thông tin trạng thái của DNS Server: Theo hình 5-10 ta có thể thấy thông tin về DNS Server: IP Address, trạng thái host, trạng thái thông tin, host có chập chờn hay không, thời gian cập nhật cuối cùng…
Hình 510: Thông tin trạng thái DNS Server
Thông tin các dịnh vụ trên Web Server : dung lượng ổ C, tải CPU, Explore, dung lượng memory sử dụng, phiên bản của NSClient++, các tiến trình đang chạy trên máy, thời gian bật máy, dịch vụ HTTP của Web Server.
Hình 511: Thông tin các dịch vụ trên Web Server
Thông tin trạng thái trên Web Server: Theo hình 5-11 ta có thể thấy thông tin về Web Server: IP Address, trạng thái host, trạng thái thông tin, host có chập chờn hay không, thời gian cập nhật cuối cùng…
Hình 512: Thông tin trạng thái Web Server

1.1.2. Kết quả giám sát hệ thống của Nagios

Với cách cấu hình để giám sát các thiết bị như máy tính, router, switch, server như trên. Ta triển khai chương trình Nagios trên hệ thống mạng của trường đại học Đà Lạt để giám sát các hoạt động trên hệ thống này và thu được kết quả như sau:
Thông tin tổng quát về tình trạng hệ thống: trạng thái chung của toàn hệ thống, thông tin các host down-up, thông tin các dịch vụ kiểm tra, thông tin các cảnh báo....
D:\C\Desktop\Network Monitoring\Wrote\CS-MARS Pic\Image Nagios\2.2.jpg
Hình 513: Tình trạng hệ thống
Thông tin các thiết bị được giám sát: hiển thị tất cả các thiết bị được cấu hình giám sát trên Nagios Server, trạng thái down-up, lần kiểm tra cuối cùng, thông tin trạng thái chung…
D:\C\Desktop\Network Monitoring\Wrote\CS-MARS Pic\Image Nagios\3.3.jpg
Hình 514: Danh sách các thiết bị giám sát
Thông tin các dịch vụ được giám sát trên các thiết bị: hiển thị tất cả các thiết bị, các dịch vụ cấu hình trên từng thiết bị và trạng thái của chúng, lần kiểm tra cuối cùng, số lần kiểm tra…
D:\C\Desktop\Network Monitoring\Wrote\CS-MARS Pic\Image Nagios\8.8.jpg
Hình 515: Danh sách các dịch vụ giám sát
Báo cáo về tình trạng của một thiết bị: tạo báo cáo theo yêu cầu, hiển thị thông tin về 1 thiết bị riêng biệt (ở đây là Dalat-CoreSW-1) theo thời gian tạo báo cáo.
\\192.168.1.2\idm\CS-MARS Pic\Image Nagios\11.11.jpg
Hình 516: Báo cáo về thiết bị Dalat-CoreSW-1
Phân loại các thiết bị theo nhóm: hiển thị thông tin các thiết bị theo từng nhóm, Linux, Network Switch, Core and Distribution, Windows, hiển thị trạng thái của các thiết bị đó, tổng số các dịch vụ.
D:\C\Desktop\Network Monitoring\Wrote\CS-MARS Pic\Image Nagios\1.1.jpg
Hình 517: Phân loại thiết bị theo nhóm
Các dịch vụ có vấn đề tại thời điểm hiện tại: thông tin các dịch vụ có vấn đề gồm, tên thiết bị, dịch vụ có vấn đề, trạng thái dịch vụ, số lần kiểm tra…
D:\C\Desktop\Network Monitoring\Wrote\CS-MARS Pic\Image Nagios\10.1.jpg
Hình 518: Các vấn đề của thiết bị giám sát


Cảnh báo của tất cả các thiết bị và dịch vụ trên hệ thống: thông tin các cảnh báo được liệt kê theo mỗi giờ của từng ngày. Thông tin cảnh báo bao gồm ngày giờ phát sinh cảnh báo, tên thiết bị, dịch vụ cảnh báo…
D:\C\Desktop\Network Monitoring\Wrote\CS-MARS Pic\Image Nagios\5.5.jpg
Hình 519: Các cảnh báo của thiết bị








Các thông tin tổng quát về tình trạng hoạt động của Nagios: hiển thị thông tin chung của Nagios Server, các dịch vụ kiểm tra chủ động, các dịch vụ kiểm tra bị động, các thiết bị kiểm tra chủ động, các thiết bị kiểm tra bị động…
D:\C\Desktop\Network Monitoring\Wrote\CS-MARS Pic\Image Nagios\7.7.jpg
Hình 520: Tình trạng của Nagios Server






Các cảnh báo được sinh ra tại thời điểm hệ tại: hiển thị thông tin các dịch vụ bị cảnh báo (chuyển từ up à down hay ngược lại, critical hay warning).
D:\C\Desktop\Network Monitoring\Wrote\CS-MARS Pic\Image Nagios\4.4.jpg
Hình 521: Các cảnh báo được sinh ra
Share this article :

8 comments:

  1. I want to monitor my DNS server with Nagios. I understand there's a check_dns plugin but I'm a total Nagios noob and I have no idea how I would go about using the plugin. All I want to do is the equivalent of making sure an nslookup command succeeds. Can someone point me in the right direction?

    ReplyDelete
  2. You probably already have the command defined in your stock nagios config like so:

    define command{
    command_name check_dns
    command_line /usr/lib/nagios/plugins/check_dns -H google.ca -s $HOSTADDRESS$
    }

    Mine is in /etc/nagios/objects/commands.cfg

    The most simple case is to define a service that checks the DNS server on the host:

    define service{
    use generic-service
    host_name ns1
    service_description DNS
    check_command check_dns
    }

    Note that this assumes:

    that you have ns1 set up as a host already
    that you have a template generic service already set up with useful defaults
    that any other objects that either the host or the template depend on, like time periods and contacts, are already defined

    Nagios is a pretty complicated tool, there's no really easy 'quick start'.

    ReplyDelete
  3. Chào bạn,

    mình đã cài đặt nagios 4.0.6 thành công, tuy nhiên khi nagios gửi email đề bị các hệ thống mail reject
    ví dụ: Diagnostic-Code: smtp; 550-5.7.1 [IP***] Our system has
    detected that this message is 550-5.7.1 likely unsolicited mail. To reduce
    the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked

    có cách nào cấu hình lại email gửi đi bằng cách sử dụng 1 tài khoản gmail nào đó để tránh tình trạng này không?

    cảm ơn bạn nhiều.

    ReplyDelete
  4. Chào bạn.
    Bạn có hình ảnh phần này ko bạn.
    Chỉnh sửa tập tin NSC.INI (trong thư mục C:\NSClient++):
    · Bỏ dấu “ ; ” ở tất cả các modules được liệt kê trong [modules] trừ CheckWMI.dll và RemoteConfiguration.dll
    · Tùy chọn mật khẩu có thể thay đổi tại phần [Settings]
    · Bỏ dấu “ ; ” của allowed_hosts trong phần [Settings]. Thêm địa chỉ IP của Nagios Server hoặc để trống để cho phép bất kỳ host nào kết nối đến
    · Đảm bảo cổng trong phần [NSClient] là 12489
    Gõ lệnh sau để bắt đầu dịch vụ NSClient++ trên windows
    nsclient++ /start
    Nếu cài đặt đúng thì một biểu tượng mới sẽ xuất hiện trong khay hệ thống.
    Đến đây ta có thể thêm máy Windows vào tập tin cấu hình của Nagios để bắt đầu giám sát.
    mình làm ma ko thấy xuất hiện biểu tượng trên khay hệ thống.

    ReplyDelete
  5. Chỉ e cấu hình Cấu Hình Mail Server ?
    Làm Cách nào để cài đặt theo dạng cây , vd : trong router gồm 2 swich
    trong mỗi switch gồm các máy giám sát

    ReplyDelete
  6. sao hình ảnh không thấy được vậy >
    có thể post hình lại cho e nhìn với được không ?

    ReplyDelete
  7. Có thể up lại ảnh được không bạn ơi

    ReplyDelete
  8. Chào bạn!!!
    Mình muốn giám sát cùng lúc nhiều máy tính, mình đã thử copy đoạn mã để giám sát máy tính và thay tên, địa chỉ cho máy mình muốn giám sát tiếp theo, nhưng khi khởi động lại dịch vụ thì báo lỗi không khởi động được.

    ReplyDelete