Cấu hình Nagios

Một phần của tài liệu tìm hiểu triển khai giải pháp giám sát mạng (Trang 78 - 104)

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_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

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

Một phần của tài liệu tìm hiểu triển khai giải pháp giám sát mạng (Trang 78 - 104)

Tải bản đầy đủ (DOC)

(136 trang)
w