Tải bản đầy đủ (.pdf) (20 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (983.96 KB, 20 trang )

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: Email:

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 |

/>
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: Email:

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 |

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: Email:

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 |

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: Email:

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 () và Fanpage ( />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 |

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: Email:
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:
/> />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 |

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: Email:
# 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 |

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: Email:
-

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:
/> />
Mẫn Thắng |

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: Email:
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 <nagios_ip_address>
5666/tcp # NRPE

Khởi động lại xinetd
# service xinetd restart

6. Kiểm tra NRPE daemon


Mẫn Thắng |

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: Email:
-

Đả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 |

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: Email:
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 |

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: Email:
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_IP_address>/nagios/


Mẫn Thắng |

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: Email:
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 |

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: Email:
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 |

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: Email:
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ỉ:
/>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:
/> />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 |

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: Email:
-

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 |

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: Email:
# 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 |

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: Email:
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)

+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)

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

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: Email:
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 |

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: Email:

2. Tải về SendMail tại:
/>
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 |


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: Email:
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 |

20



×