1.21.2.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
Hình 5-16 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.
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.
Hình 5-17: 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
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 Windows mới
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_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 5-18: 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 5-19: Thông tin về Sample Client
1.21.2.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_snmp và net_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
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
Hình 5-20: 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%
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
Kiểm tra xem các thông tin cấu hình có lỗi gì không với lệnh
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 5-21: 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 5-22: Thông tin các dịch vụ trên Dalat-CoreSW-1
1.21.2.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
}
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