Config and show how to use Nagios. The main point of using Nagios is to monitor all resources of the system. This docum...
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected]
Chuyê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 |
[email protected] https://manthang.wordpress.com https://www.facebook.com/vninfosec
Tp. Hồ Chí Minh, tháng 9/2012
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected]
MỤC LỤC LỜI NÓI ĐẦU ................................................................................................................................ 3 VỀ TÁC GIẢ .................................................................................................................................. 4 1
2
3
4
5
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
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
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
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
Gửi thông báo qua email với SendEmail .............................................................................. 18 5.1
Các bước thực hiện ......................................................................................................... 18
Mẫn Thắng |
[email protected]
2
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected]
LỜ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!
Mẫn Thắng |
[email protected]
3
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected]
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). 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...
Mẫn Thắng |
[email protected]
4
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] 1
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: 1.1
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/ 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
1.2
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). 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
Mẫn Thắng |
[email protected]
5
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] # 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
Mẫn Thắng |
[email protected]
6
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] -
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
Mẫn Thắng |
[email protected]
7
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] Các bước thực hiện
2.2
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
-
Mở tập tin /etc/services và thêm vào NRPE daemon nrpe
-
= 127.0.0.1 5666/tcp # NRPE
Khởi động lại xinetd # service xinetd restart
6. Kiểm tra NRPE daemon
Mẫn Thắng |
[email protected]
8
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] -
Đả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 /usr/local/nagios/libexec/check_nrpe /usr/local/nagios/libexec/check_nrpe /usr/local/nagios/libexec/check_nrpe /usr/local/nagios/libexec/check_nrpe
-H -H -H -H -H
localhost localhost localhost localhost localhost
-c -c -c -c -c
check_users check_load check_hda1 check_total_procs 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
Mẫn Thắng |
[email protected]
9
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] 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. 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 command_line }
check_nrpe #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 use check_period check_interval retry_interval max_check_attempts check_command notification_period notification_interval notification_options contact_groups register }
-
linux-box generic-host 24×7 5 1 3 check-host-alive 24×7 30 d,r admins 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 host_name
Mẫn Thắng |
[email protected]
linux-box centos-vm
10
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] alias address
Oracle DB 11g 192.168.137.3
} define service{ use host_name service_description check_command
generic-service centos-vm CPU Load check_nrpe!check_load
} define service{ use host_name service_description check_command
generic-service centos-vm Current Users check_nrpe!check_users
} define service{ use host_name service_description check_command
generic-service centos-vm Total Processes 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/
Mẫn Thắng |
[email protected]
11
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] 3
KIỂM TRA TRẠNG THÁI CỦA ORACLE DATABASE
Phần này sẽ trình bày việc cấu hình cho Nagios để giám sát dịch vụ Oracle Database có đang hoạt động hay không (up/down) sử dụng addon NRPE để thực thi plugin check_tcp trên máy chủ Oracle Database. 3.1
3.2
Yêu cầu và chuẩn bị Một máy chủ chạy Nagios (xem thêm Phụ lục A) có sẵn plugin NRPE. Một máy chủ chạy Oracle Database với port của listener là 1521 và được cài daemon NRPE (xem thêm Phụ lục B). Các bước thực hiện
3.2.1 Thực hiện trên máy Oracle Database 1. Mở tập tin cấu hình cho NRPE là /usr/local/nagios/etc/nrpe.cfg và thêm vào định nghĩa cho câu lệnh check_tcp như mẫu sau: command[check_tcp]=/usr/local/nagios/libexec/check_tcp –p 1521
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. 3.2.2 Thực hiện trên máy Nagios 1. Định nghĩa một service mới để kiểm tra listener port trên máy Orace Database bằng cách tạo mới một tập tin /usr/local/nagios/etc/objects/oracle.cfg với nội dung mẫu như sau: define host{ use host_name alias address }
linux-server oracle-db Oracle DB 11g 192.168.1.14
//kiểm tra listener port của Oracle define service{ use generic-service host_name oracle-db service_description Oracle Listener Port check_command check_nrpe!check_tcp }
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: Mẫn Thắng |
[email protected]
12
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] 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
4
GỬI THÔNG BÁO QUA SMS BẰNG USB 3G
Hệ thống cảnh báo qua SMS gồm các thành phần như được mô tả như hình dưới đây:
Máy Monitor sẽ gồm: - Phần mềm Nagios giúp giám sát các bộ phận, thông số quan trọng của hạ tầng CNTT như: system metric (CPU load, RAM usage, disk usage, loaded processes, v.v..), network protocol (HTTP, SSH, FTP, SMTP, IMAP, POP3, v.v..), application (mail, web, database v.v..), service (DNS, DHCP, v.v..), server (Windows, UNIX, v.v..), network device (router, switch, firewall, v.v..). - Phần mềm Gammu giúp truy cập tới các thiết bị điện thoại (trong đó có USB 3G), điều khiển việc gửi và nhận SMS cùng nhiều chức năng khác về quản lý cuộc gọi và danh bạ. - Thiết bị D-Com 3G đóng vai trò làm GSM modem, liên lạc với nhà mạng di động để thực hiện việc gửi tin nhắn SMS. Khi có các sự kiện ngưng trễ hoặc khôi phục hoạt động từ các thành phần được giám sát, Nagios sẽ tự động tạo ra các thông báo. Nội dung của thông điệp cảnh báo này sẽ được truyền cho Gammu và từ đó đẩy tới thiết bị USB 3G rồi gửi tới số điện thoại của người quản trị.
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. Mẫn Thắng |
[email protected]
13
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] 4.1
Yêu cầu chuẩn bị Một Nagios monitoring server. Một USB 3G, ở đây sử dụng thiết bị D-Com 3G của Viettel. Gói mã nguồn của Gammu, tải về phiên bản 1.32.0 tại địa chỉ: http://sourceforge.net/projects/gammu/files/gammu/1.32.0/gammu-1.32.0.tar.bz2 o Các gói phụ thuộc bắt buộc cho Gammu là: CMake, pkg-config o Các gói phụ thuộc tùy chọn giúp mở rộng tính năng cho Gammu là: Bluez-libs, libusb1.0, libCURL, libiconv, Gettext, MySQL, PostgreSQL, unixODBC, libdbi, Python SQLite + libdbi-drivers + SQLite. Nếu máy Nagios chưa nhận ra D-Com 3G như là một USB modem thì cần cài thêm gói usb_modeswitch để chuyển từ chế độ storage sang modem. Tải về mã nguồn của phiên bản 1.2.3 tại: http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20120531.tar.bz2 http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-1.2.3.tar.bz2 o Các gói phụ thuộc cần thiết cho usb_modeswitch là: libusb-devel, tcl Các gói make, gcc để phục vụ quá trình biên dịch và cài đặt chương trình từ mã nguồn. Cần tới quyền root trong quá trình cài đặt và cấu hình hệ thống. Các bước thực hiện
4.2
4.2.1 Kết nối USB 3G tới máy Nagios - Kiểm tra xem máy Nagios đã nhận ra USB 3G là một GSM modem hay chưa. Gõ lệnh sau: # dmesg | grep GSM
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
4.2.2 Biên dịch và cài đặt Gammu - Giải nén gói mã nguồn của Gammu: # tar jxvf gammu-1.32.0.tar.bz2
Mẫn Thắng |
[email protected]
14
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] -
Chuyển vào thư mục vừa được giải nén ở trên: # cd gammu-1.32.0
-
Chạy các lệnh sau để cấu hình, biên dịch và cài đặt Gammu: # ./configure # make # make install
-
Kiểm tra bằng lệnh: # gammu
-
Nếu nhận được thông báo lỗi liên quan tới library thì chạy 2 dòng lệnh sau: # ln -s /usr/local/lib/libGammu.so.7 /usr/lib/libGammu.so.7 # ln -s /usr/local/lib/libgsmsd.so.7 /usr/lib/libgsmsd.so.7
4.2.3 Cấu hình Gammu để gửi SMS - Tạo tập tin chứa thông số cấu hình của USB 3G cho Gammu: # vi /etc/gammurc
Với nội dung mẫu như sau: [gammu] port = /dev/ttyUSB0 connection = at19200
//đường dẫn tới tập tin device của thiết bị //loại kết nối, tương thích với tập lệnh AT
Ngoài ra, có thể sử dụng lệnh sau để cấu hình dễ dàng cấu hình các thông số bằng giao diện đồ họa: # gammu-config
-
Xác nhận USB 3G đã được nhận dạng thành công: # gammu --identify Device Manufacturer Model Firmware IMEI
: : : : :
/dev/ttyUSB3 ZTE CORPORATION unknown (MF190S) BD_MF190SV1.0.0B01 864482000915806
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
Mẫn Thắng |
[email protected]
15
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] # usermod -a -G dialout apache
-
Chuyển qua user nagios và thử gửi một SMS mẫu: # su - nagios # echo "test SMS nagios" | gammu --sendsms TEXT +84932xxxxxx If you want break, press Ctrl+C... Sending SMS 1/1....waiting for network answer..OK, message reference=181
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. 4.2.4 Cấu hình Nagios để gửi SMS theo nhóm Phần này sẽ trình bày các bước để khởi tạo và định nghĩa các contact cho những cá nhân và nhóm sẽ nhận được cảnh báo khi một máy tính, thiết bị hay dịch vụ nào đó trong hệ thống xảy ra sự cố. -
Đầ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 service_notification_period host_notification_period service_notification_options
Mẫn Thắng |
[email protected]
generic-contact 24x7 24x7 w,u,c,r
16
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] host_notification_options d,u,r service_notification_commands notify-service-by-sms,notify-service-byemail 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 use alias email pager } define contact{ contact_name use alias email pager }
-
hoangbao generic-contact Bao Hoang (Database)
[email protected] +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 alias members } define contactgroup{ contactgroup_name alias members }
-
manthang generic-contact Thang Man (Sysadmin)
[email protected] +84983xxxxxx //thay bằng sđt thực
db-admins Database Administrators hoangbao,manthang
unix-admins Linux System Administrator 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ư
Mẫn Thắng |
[email protected]
17
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] mục /usr/local/nagios/etc/objects/ tạo ra 2 tập tin email-server.cfg và db-server.cfg rồi định nghĩa như sau: // trong email-server.cfg define host{ use host_name alias address contact_groups } // trong db-server.cfg define service{ use host_name service_description contact_groups check_command } -
linux-server email-server Zimbra Server 192.168.1.16 unix-admins
//nhóm Unix sẽ nhận notify
generic-service mysql-db MySQL Database Status db-admins //nhóm DB sẽ nhận notify check_nrpe!check_mysql_db
Kế đến, 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/email-server.cfg cfg_file=/usr/local/nagios/etc/objects/db-server.cfg
-
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ị.
5
GỬI THÔNG BÁO QUA EMAIL VỚI SENDEMAIL
Phần này sẽ thực hiện cấu hình Nagios để gửi email thông báo về tình trạng, hoạt động của các thành phần, dịch vụ được giám sát trong hệ thống mạng. Việc gửi email tới SMTP outgoing server này sẽ yêu cầu thiết lập tài khoản email tại máy Nagios để xác thực. Ở đây sử dụng một Perl script là SendEmail. 5.1
Các bước thực hiện
1. Cài thêm các gói phụ thuộc để hỗ trợ mã hóa và xác thực bằng SSL/TLS cho các email được gửi đi # yum install perl # yum install perl-IO-Socket-SSL
Mẫn Thắng |
[email protected]
18
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected]
2. Tải về SendMail tại: http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
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 $USER6$=your_email_password $USER7$=your_SMTP_mail_server
//email của người gửi //password của email trên //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 command_line /usr/local/bin/sendEmail -o tls=yes -s $USER7$ -xu $USER5$ -xp $USER6$ -t $CONTACTEMAIL$ -f $USER5$ -l /var/log/sendEmail -u “** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” -m “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n” } define command{ command_name notify-service-by-email command_line /usr/local/bin/sendEmail -o tls=yes -s $USER7$ -xu $USER5$ -xp $USER6$ -t $CONTACTEMAIL$ -f $USER5$ -l /var/log/sendEmail -u “** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” -m “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$” }
Mẫn Thắng |
[email protected]
19
Công ty Cổ phần Tin học Lạc Tiên KC52/1/18 Huỳnh Tấn Phát – Tân Thuận Tây, Q7 - TpHCM Điện thoại: (84-8) 2211 5070 - Fax: (84-8)6262 1286 Website: http://lactien.com Email:
[email protected] 7. Tạo log file cho SendMail và thay đổi owner cho nó # touch /var/log/SendEmail # chown nagios.nagios /var/log/SendEmail
8. Khởi động lại service nagios # service nagios restart
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.
--- ---
Mẫn Thắng |
[email protected]
20