Biên dịch và cài đặt Nagios - Giải nén gói mã nguồn của Nagios và chuyển vào thư mục mới được tạo ra # tar xzf nagios-3.4.1.tar.gz # cd nagios - Chạy configure script với tham số tru
Trang 1Chuyên đề IT Monitoring TRIỂN KHAI HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO QUA
EMAIL, SMS (DÙNG USB 3G) VỚI NAGIOS
Mẫn Thắng | thang.manvan@lactien.com
https://manthang.wordpress.com https://www.facebook.com/vninfosec
Tp Hồ Chí Minh, tháng 9/2012
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 3
VỀ TÁC GIẢ 4
1 Cài đặt Nagios trên CentOS 5
1.1 Yêu cầu chuẩn bị 5
1.2 Các bước thực hiện 5
2 Giám sát các máy Unix/Linux 7
2.1 Yêu cầu chuẩn bị 7
2.2 Các bước thực hiện 8
2.2.1 Thực hiện trên máy Linux/UNIX ở xa 8
2.2.2 Thực hiện trên máy Nagios 9
3 Kiểm tra trạng thái của Oracle Database 12
3.1 Yêu cầu và chuẩn bị 12
3.2 Các bước thực hiện 12
3.2.1 Thực hiện trên máy Oracle Database 12
3.2.2 Thực hiện trên máy Nagios 12
4 Gửi thông báo qua SMS bằng USB 3G 13
4.1 Yêu cầu chuẩn bị 14
4.2 Các bước thực hiện 14
4.2.1 Kết nối USB 3G tới máy Nagios 14
4.2.2 Biên dịch và cài đặt Gammu 14
4.2.3 Cấu hình Gammu để gửi SMS 15
4.2.4 Cấu hình Nagios để gửi SMS theo nhóm 16
5 Gửi thông báo qua email với SendEmail 18
5.1 Các bước thực hiện 18
Trang 3LỜI NÓI ĐẦU
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
Chân thành cảm ơn!
Trang 4VỀ 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)
VỀ LẠC TIÊN JSC
Được thành lập vào tháng 10 năm 2008, với đội ngũ các kỹ sư tốt nghiệp ngành CNTT từ các
trường hàng đầu ở Việt Nam và Thụy Sĩ, hiện nay Lạc Tiên là nhà cung cấp chuyên nghiệp các
giải pháp phần mềm quản trị doanh nghiệp trên môi trường Internet (CRM, HRM, Project
Management, Collaboration, Groupware, Portal,…), các thiết bị bảo mật (UTM, RAD – Remote
Access Device, Wireless Access Controller), các giải pháp 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 Đặc biệt, Lạc Tiên là
đơn vị đầu tiên trong nước sản xuất thành công thiết bị bảo mật tích hợp RexShield UTM với
các tính năng như: tường lửa, quản trị người dùng, lọc nội dung, chống thất thoát dữ liệu
Trang 51 CÀI ĐẶT NAGIOS TRÊN CENTOS
Tuy không đề cập tới các tùy chọn cài đặt nâng cao nhưng chỉ với các bước cơ bản trong phần
này cũng đáp ứng phần lớn nhu cầu của đại đa số người dùng muốn bắt đầu làm quen với
Nagios Sau khi làm xong thì mặc định:
Nagios và các plug-in sẽ nằm dưới thư mục là: /usr/local/nagios
Nagios tự động giám sát vài thông số của máy cục bộ như: CPU load, disk usage, v.v
Nagios web interface có thể được truy cập qua URL: http://localhost/nagios/
1.1 Yêu cầu chuẩn bị
Các gói phần mềm cần được cài trước là: Apache, Perl, PHP, GCC Compiler, GD
development library Nếu chưa có thì có thể cài nhanh thông qua lệnh yum như sau:
# yum install httpd php perl gcc glibc glibc-common gd gd-devel
Tải gói mã nguồn mới nhất của Nagios Core 3.4.1 và Nagios Plugins 1.4.15 tại 2 URL sau:
http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.1.tar.gz
http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
Một số giai đoạn cài đặt cần quyền root (có dấu # đằng trước câu lệnh)
1.2 Các bước thực hiện
1 Tài khoản và nhóm
- Tạo mới user nagios và group nagcmd
# useradd -m nagios
# passwd nagios
# groupadd nagcmd
- Sau đó thêm 2 user nagios, apache vào group nagcmd
# usermod -a -G nagcmd nagios
# usermod -a -G nagcmd apache
2 Biên dịch và cài đặt Nagios
- Giải nén gói mã nguồn của Nagios và chuyển vào thư mục mới được tạo ra
# tar xzf nagios-3.4.1.tar.gz
# cd nagios
- Chạy configure script với tham số truyền vào là group nagcmd
# /configure with-command-group=nagcmd
- Biên dịch Nagios
# make all
- Lần lượt cài đặt các tập tin binary, init script, sample config và thiết lập quyền hạn truy cập
trên thư mục chứa external command
# make install
# make install-init
Trang 6# make install-config
# make install-commandmode
3 Cấu hình Nagios web interface
- Cài đặt tập tin web config của Nagios vào thư mục /etc/httpd/conf.d của Apache
#make install-webconf
- Tạo tài khoản nagiosadmin và đặt mật khẩu để truy cập vào web interface của Nagios
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
- Khởi động lại Apache Webserver
# service httpd restart
4 Biên dịch và cài đặt Nagios Plugins
- Giải nén gói mã nguồn của Nagios Plugins và chuyển vào thư mục mới được tạo ra
# tar xzf nagios-plugins-1.4.15.tar.gz
# cd nagios
- Chạy configure script với tham số user và group truyền vào đều là nagios
# /configure with-nagios-user=nagios with-nagios-group=nagios
- Biên dịch Nagios Plugins
# make
- Cài đặt Nagios Plugins
# make install
5 Khởi chạy Nagios
- Thêm Nagios vào danh sách các system service và tự động khởi động cùng hệ thống
# chkconfig add nagios
# chkconfig nagios on
- Xác nhận các các tập tin cấu hình cho Nagios đang làm việc đúng
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
- Nếu không có lỗi gì thì kích hoạt Nagios
# service nagios start
6 Chỉnh lại thiết lập của SELinux
Mặc định SELinux trên CentOS hoạt động ở chế độ Enforcing Điều này có thể dẫn tới thông
báo “Internal Server Error” khi thử truy cập vào Nagios CGI Thực hiện các bước sau để
kiểm tra và khắc phục vấn đề này
- Kiểm tra nếu SELinux đang ở Enforcing mode
# getenforce
- Đặt SELinux ở chế độ Permissive
# setenforce 0
Để thiết lập này có hiệu lực mãi mãi thì chỉnh sửa lại trong tập tin /etc/selinux/config
Trang 7- 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/
7 Đăng nhập vào Nagios web interface
Vào địa chỉ http://localhost/nagios (hoặc thay localhost bằng địa chỉ IP của máy Nagios)
Sau đó đăng nhập thử với tên tài khoản là nagiosadmin và mật khẩu thiết lập ở bước 3 Lưu ý
là cần cấu hình lại rule cho firewall nếu muốn truy cập từ xa tới máy Nagios
2 GIÁM SÁT CÁC MÁY UNIX/LINUX
Phần này sẽ trình bày cách cài đặt và cấu hình cho NRPE - một addon cho Nagios giúp thực thi
các plugin khác để giám sát/kiểm tra các tài nguyên (CPU load, memory usage, swap usage, disk
usage, logged in users, running processes, v.v ) và dịch vụ (http, ftp, v.v ) trên các máy
Linux/Unix ở xa
NRPE addon bao gồm 2 thành phần:
Plugin check_nrpe: chạy trên máy Nagios
Daemon NRPE: chạy trên máy Linux/Unix ở xa cần giám sát
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
2.1 Yêu cầu chuẩn bị
Thử nghiệm trên môi trường CentOS 6.2 Khi làm cần có quyền root trên máy Linux/Unix
cần giám sát và tài khoản nagios trên máy Nagios
Quá trình biên dịch và cài đặt thì cần có các gói make, gcc, perl, openssl, openssl-devel
Tải gói mã nguồn mới nhất của NRPE 2.13 và Nagios Plugins 1.4.15 tại 2 URL sau:
http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
Trang 82.2 Các bước thực hiện
2.2.1 Thực hiện trên máy Linux/UNIX ở xa
1 Chuyển qua root và tạo thêm tài khoản mới là nagios
# su – root
# /usr/sbin/useradd nagios
# passwd nagios
2 Giải nén gói Nagios plugins rồi tiến hành biên dịch và cài đặt
# 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
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
4 Cài đặt xinetd
# yum install xinetd
5 Cài đặt NRPE daemon
- Giải nén gói NRPE rồi tiến hành biên dịch
# tar xzf nrpe-2.13.tar.gz
# cd nrpe-2.13
# /configure
# make all
- Cài đặt NRPE plugin (chỉ để kiểm tra), daemon, và tập tin cấu hình
# make install-plugin
# make install-daemon
# make install-daemon-config
- Chạy NRPE daemon như là một dịch vụ dưới xinetd
# make install-xinetd
- Mở tập tin /etc/xinetd.d/nrpe và thêm vào địa chỉ IP của máy Nagios ở dòng only_from
only_from = 127.0.0.1 <nagios_ip_address>
- Mở tập tin /etc/services và thêm vào NRPE daemon
nrpe 5666/tcp # NRPE
- Khởi động lại xinetd
# service xinetd restart
6 Kiểm tra NRPE daemon
Trang 9- Đảm bảo rằng NRPE daemon đang chạy dưới xinetd
# netstat -at | grep nrpe
tcp 0 0 *:nrpe *:* LISTEN
- Đảm bảo rằng NRPE đang làm việc đúng
# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.13
7 Tạo rule trên firewall
Để đảm bảo rằng firewall cục bộ trên máy Linux/Unix ở xa cho phép NRPE daemon được
truy cập từ các máy Nagios, tạo rule sau và lưu lại cấu hình của iptables
# iptables –I INPUT -p tcp -m tcp –dport 5666 -j ACCEPT
# service iptables save
8 Tùy chỉnh lại các NRPE command
- Trong tập tin cấu hình mẫu của NRPE daemon có chứa một vài định nghĩa câu lệnh
(command definition) mà ta cần dùng để giám sát các tài nguyên và dịch vụ trên máy cục bộ
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 tập tin /usr/local/usr/local/nagios/etc/nrpe.cfg
- Dùng một vài command có sẵn sau để kiểm tra các tài nguyên trên máy cục bộ
# /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
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
2.2.2 Thực hiện trên máy Nagios
1 Giải nén gói check_nrpe rồi tiến hành biên dịch và cài đặt
# 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
(192.168.137.3 là địa chỉ IP của máy Linux/Unix ở xa)
Output cần như sau:
NRPE v2.13
Trang 10Lư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
3 Tạo một command definition để sử dụng check_nrpe plugin
Mở tập tin /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 tài nguyên, dịch vụ cần được giám sát trên
máy ở xa
4 Tạo host và service definition
- Trước tiên nên tạo mới một template cho các loại máy khác nhau sẽ được giám sát Ở đâ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 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
Trang 11alias Oracle DB 11g
address 192.168.137.3
}
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/