Professional Documents
Culture Documents
TRien Khai Nagios Monitoring Tool PDF
TRien Khai Nagios Monitoring Tool PDF
Chuyên đề IT Monitoring
MỤC LỤC
Ngày nay, hệ thống giám sát đóng một vai trò quan trọng giúp theo dõi, kiểm tra sức khỏe, cung
cấp thông tin và đưa ra cảnh báo khi có vấn đề xảy ra với các thành phần trong hạ tầng, ứng dụng
công nghệ thông tin của tổ chức. Một hệ thống giám sát tốt cần có khả năng phát hiện nhanh
chóng và chính xác những sự cố xảy ra và kịp thời gửi thông báo qua nhiều phương tiện như màn
hình, email, tin nhắn tới người quản trị hệ thống.
Nhằm đáp ứng nhu cầu thực tế của nhiều tổ chức và doanh nghiệp trong việc giám sát và cảnh
báo kịp thời tình trạng của hệ thống, tài liệu này sẽ đi vào tìm hiểu và cấu hình tính năng gửi
thông báo của Nagios qua email và qua SMS sử dụng thiết bị USB 3G làm modem. Ngoài ra, tài
liệu còn cung cấp thêm hướng dẫn giúp kiểm tra trạng thái up/down của Oracle Database và máy
Unix/Linux sử dụng các plugin của Nagios. Riêng việc thực hiện cảnh báo qua SMS đã được tác
giả thực hiện thành công trên cả môi trường ảo hóa lẫn máy chủ thực và bước đầu làm việc tốt
với thiết bị D-Com 3G của Viettel.
Tài liệu thích hợp với các quản trị viên đã làm quen với hệ điều hành Linux và có kiến thức cơ
bản về công cụ giám sát mạng Nagios. Dù đã thử nghiệm kỹ lưỡng nhưng có thể vẫn còn thiếu
sót nên tác giả rất mong nhận được phản hồi tích cực từ mọi người.
VỀ TÁC GIẢ
Mẫn Thắng hiện đang là Kỹ sư Hệ thống tại Phòng Bảo mật và Tích hợp thuộc Công ty Cổ phần
Tin học Lạc Tiên, với chuyên môn là các giải pháp ứng dụng, tích hợp trên nền mã nguồn mở và
các dịch vụ tư vấn, thiết kế hệ thống, hạ tầng CNTT theo hướng bảo mật, đánh giá và khắc phục
lỗ hổng về an ninh thông tin cho các tổ chức và doanh nghiệp. Ngoài giờ làm, tác giả còn thích
chia sẻ, trao đổi với cộng đồng về các tin tức, bài viết nổi bật trong lĩnh vực an toàn thông tin tại
Blog (https://manthang.wordpress.com) và Fanpage (https://www.facebook.com/vninfosec).
# make install-config
# make install-commandmode
- Thay vì phải tắt SELinux hoặc chuyển về chế độ Permissive, có thể sử dụng lệnh sau để chạy
các CGI dưới chế độ Enforcing/Targeted:
# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
# chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
Khi máy Nagios cần kiểm tra các tài nguyên/dịch vụ trên máy Linux/Unix ở xa:
Nagios sẽ thực thi plugin check_nrpe và cho biết tài nguyên/dịch vụ nào cần kiểm tra
Plugin check_nrpe sẽ liên lạc với daemon NRPE trên máy ở xa. 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 tài nguyên/dịch vụ đượ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
Lưu ý, NRPE daemon yêu cầu các Nagios plugin cần được cài đặt trên các máy Linux/Unix ở xa.
3. Sửa lại quyền hạn truy cập cho các thư mục chứa Nagios plugin
# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec
Như vậy là xong phần cài đặt và cấu hình NRPE cho máy Linux/Unix cần giám sát.
Lưu ý có thể firewall trên máy Nagios hoặc firewall giữa nó với máy ở xa cản trở việc liên
lạc. Lúc này cần điều chỉnh lại rule cho thích hợp.
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 tài nguyên, dịch vụ cần được giám sát trên
máy ở xa
Dưới đây là nội dung mẫu, 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 3
check_command check-host-alive
notification_period 24×7
notification_interval 30
notification_options d,r
contact_groups admins
register 0
}
- Sau đó, tạo mới một object definition cho máy cần giám sát và definition cho các tài nguyên,
dịch vụ chạy trên máy đó. Ở đây lấy tên tập tin là centos.cfg:
# vi /usr/local/nagios/etc/objects/centos.cfg
Dưới đây là nội dung mẫu, tùy nhu cầu mà thay đổi các mục cho thích hợp:
define host{
use linux-box
host_name centos-vm
define service{
use generic-service
host_name centos-vm
service_description CPU Load
check_command check_nrpe!check_load
define service{
use generic-service
host_name centos-vm
service_description Current Users
check_command check_nrpe!check_users
define service{
use generic-service
host_name centos-vm
service_description Total Processes
check_command check_nrpe!check_total_procs
}
Ngoài 3 tài nguyên cơ bản ở trên là: CPU Load, Current Users, Total Processes, ta có thể
giám sát thêm nhiều dịch vụ khác như SSH, HTTP, v.v..
- Cuối cùng, thêm 2 object trên vào tập tin cấu hình chính của Nagios bằng cách mở tập tin
/usr/local/nagios/etc/nagios.cfg và thêm vào 2 dòng sau:
cfg_file=/usr/local/nagios/etc/objects/linux.cfg
cfg_file=/usr/local/nagios/etc/objects/centos.cfg
5. Kiểm tra lại các tập tin cấu hình và khởi động lại Nagios
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# /etc/init.d/nagios restart
6. Truy cập vào web interface của Nagios để xem kết quả!
http://<nagios_IP_address>/nagios/
2. Nếu đang chạy daemon NRPE dưới dịch vụ xinetd thì không cần khởi động lại daemon này
và ngược lại, cần khởi động lại NRPE nếu nó chạy độc lập.
define host{
use linux-server
host_name oracle-db
alias Oracle DB 11g
address 192.168.1.14
}
2. Thêm object trên vào tập tin cấu hình chính của Nagios bằng cách mở tập tin
/usr/local/nagios/etc/nagios.cfg và thêm vào dòng sau:
cfg_file=/usr/local/nagios/etc/objects/oracle.cfg
3. Kiểm tra lại các tập tin cấu hình và khởi động lại Nagios
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# /etc/init.d/nagios restart
Các phần tiếp theo sẽ giải trình các bước để thực hiện cài đặt, cấu hình và vận hành hệ thống
cảnh báo qua SMS này.
Nếu thấy output như dưới đây thì ta chuyển qua tiếp theo
USB Serial support registered for GSM modem (1-port)
option 1-1:1.0: GSM modem (1-port) converter detected
usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
(để ý là tập tin đại diện cho thiết bị là /dev/ttyUSB0)
- Nếu output trống rỗng thì cần thêm gói usb_modeswitch. Trình tự cài đặt như sau:
# tar jxf usb-modeswitch-data-20120531.tar.bz2
# cd usb-modeswitch-data-20120531
# make install
# tar jxf usb-modeswitch-1.2.3.tar.bz2
# cd usb-modeswitch-1.2.3
# make install
Ngoài ra còn có 2 lệnh sau để theo dõi hoạt động của thiết bị cũng như thông tin về mạng di
động:
# gammu –-monitor
# gammu –-networkinfo
- Nagios chạy với quyền của user nagios, vậy nên nếu muốn Nagios gửi được SMS thì user
nagios phải có quyền truy cập tới các tập tin device, config và binary của Gammu. Chạy các
lệnh sau để gán các quyền thích hợp đó cho user nagios:
# cp /etc/gammurc /home/nagios/.gammurc
# chown nagios.nagios /home/nagios/.gammurc
# chmod 4755 /usr/bin/gammu
# usermod -a -G dialout nagios
Nếu số điện thoại trong câu lệnh ở trên nhận được thông điệp “test SMS nagios” thì việc cấu
hình để Gammu gửi đi SMS đã thành công. Tiếp theo sẽ cấu hình cho Nagios.
- Đầu tiên, cần thêm vào 2 câu lệnh để thực hiện việc gửi SMS tới các số điện thoại của các
contact được định nghĩa trong tập tin contacts.cfg. Mở tập tin
/usr/local/nagios/etc/objects/commands.cfg và bổ sung nội dung mẫu sau:
# 'notify-host-by-sms' command definition
define command{
command_name notify-host-by-sms
command_line /usr/bin/printf "%b" "*** Nagios ***\n Notification Type:
$NOTIFICATIONTYPE$\n Host: $HOSTNAME$\n State: $HOSTSTATE$\n Address:
$HOSTADDRESS$\n Info: $HOSTOUTPUT$\n Date/Time: $LONGDATETIME$" |
/usr/local/bin/gammu --sendsms TEXT $CONTACTPAGER$
}
# 'notify-service-by-sms' command definition
define command{
command_name notify-service-by-sms
command_line /usr/bin/printf "%b" "*** Nagios ***\n Notification Type:
$NOTIFICATIONTYPE$\n Service: $SERVICEDESC$\n Host: $HOSTALIAS$\n Address:
$HOSTADDRESS$\n State: $SERVICESTATE$\n Date/Time: $LONGDATETIME$\n Additional
Info: $SERVICEOUTPUT$" | /usr/local/bin/gammu --sendsms TEXT $CONTACTPAGER$
- Sau đó, tùy chỉnh lại mẫu generic-contact mà Nagios cung cấp sẵn sau khi cài đặt để các
contact được tạo ở bước sau sẽ nhận được thông báo qua SMS. Mở tập tin
/usr/local/nagios/etc/objects/templates.cfg và sửa mục generic-contact như sau:
define contact{
name generic-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-sms,notify-service-by-
email
host_notification_commands notify-service-by-sms,notify-host-by-email
register 0
}
- Tiếp đến, thêm mới các contact cho những người muốn nhận thông báo qua email và SMS từ
Nagios. Mở tập tin /usr/local/nagios/etc/objects/contacts.cfg và bổ sung nội dung
mẫu sau:
define contact{
contact_name manthang
use generic-contact
alias Thang Man (Sysadmin)
email manthang@gmail.com
pager +84983xxxxxx //thay bằng sđt thực
}
define contact{
contact_name hoangbao
use generic-contact
alias Bao Hoang (Database)
email hoangbao@gmail.com
pager +84123xxxxxx //thay bằng sđt thực
}
- Giờ ta sẽ gom nhóm các contact để gửi các thông báo thích hợp. Ví dụ, các thông báo liên
quan tới thiết bị mạng chỉ được gửi tới nhóm network, thông báo liên quan tới máy chủ sẽ
được gửi tới nhóm system, thông báo liên quan tới CSDL thì gửi tới nhóm database, v.v…
Cũng trong tập tin contacts.cfg trên, tạo thêm các contactgroup theo mẫu sau:
define contactgroup{
contactgroup_name db-admins
alias Database Administrators
members hoangbao,manthang
}
define contactgroup{
contactgroup_name unix-admins
alias Linux System Administrator
members manthang
}
- Việc khai báo các contact ở trên không có nghĩa là họ sẽ nhận được thông báo mà ta cần liên
kết các contactgroup tới một dịch vụ hoặc máy tính nào đó cần giám sát. Ví dụ, trong thư
- Cuối cùng, chạy các lệnh sau để kiểm tra cấu hình và khởi động lại Nagios
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# /etc/init.d/nagios restart
- Giờ thử ngưng hoạt động của một máy tính, thiết bị hay dịch vụ nào đó thì sau một khoảng
thời gian quy định trước, Nagios sẽ kiểm tra trạng thái và gửi đi SMS và email thông báo tình
trạng của chúng tới số điện thoại và hộp thư của người quản trị.
3. Giải nén gói trên và chép tập tin SendMail tới thư mục /usr/local/bin
4. Cấp thêm quyền excute và đổi owner thành user nagios cho tập tin trên
# chmod +x /usr/local/bin/SendMail
# chown nagios.nagios /usr/local/bin/SendEmail
5. Mở tập tin cấu hình /usr/local/nagios/etc/resource.cfg rồi thêm vào 3 dòng mới sau:
$USER5$=your_email_address //email của người gửi
$USER6$=your_email_password //password của email trên
$USER7$=your_SMTP_mail_server //IP hoặc domain của SMTP server
6. Mở tập tin cấu hình /usr/local/nagios/etc/objects/commands.cfg rồi sửa lại phần dành
cho email notification như mẫu sau:
define command{
command_name notify-host-by-email
define command{
command_name notify-service-by-email
9. Kiểm tra bằng cách thử tắt một host nào đó rồi mở file log của SendMail và nếu thấy nội
dung như “Email was sent successfully” thì mọi thứ đã hoàn tất.