IT Monitoring With Nagios_Lac Tien_Man Thang

20
Công ty Cphn Tin hc Lc Tiên KC52/1/18 Hunh Tn Phát Tân Thun Tây, Q7 - TpHCM Điện thoi: (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. HChí Minh, tháng 9/2012

description

Config and show how to use Nagios.The main point of using Nagios is to monitor all resources of the system. This document will tell you how to do that.

Transcript of IT Monitoring With Nagios_Lac Tien_Man Thang

Page 1: IT Monitoring With Nagios_Lac Tien_Man Thang

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

Page 2: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 2

MỤ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

Page 3: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 3

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!

Page 4: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 4

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

Page 5: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 5

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:

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

Page 6: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 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

Page 7: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 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

Page 8: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 8

2.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

Page 9: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 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

Page 10: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 10

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

host_name centos-vm

Page 11: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 11

alias 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/

Page 12: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 12

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

3.2 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 linux-server

host_name oracle-db

alias Oracle DB 11g

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

Page 13: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 13

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.

Page 14: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 14

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, libusb-

1.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.

4.2 Các bước thực hiện

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

Page 15: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 15

- 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 //đường dẫn tới tập tin device của thiết bị

connection = at19200 //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 : /dev/ttyUSB3 Manufacturer : ZTE CORPORATION

Model : unknown (MF190S)

Firmware : BD_MF190SV1.0.0B01

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

Page 16: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 16

# 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 generic-contact

service_notification_period 24x7

host_notification_period 24x7

service_notification_options w,u,c,r

Page 17: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 17

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 [email protected]

pager +84983xxxxxx //thay bằng sđt thực

}

define contact{

contact_name hoangbao

use generic-contact

alias Bao Hoang (Database)

email [email protected]

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ư

Page 18: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 18

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 linux-server

host_name email-server

alias Zimbra Server

address 192.168.1.16

contact_groups unix-admins //nhóm Unix sẽ nhận notify

}

// trong db-server.cfg

define service{

use generic-service

host_name mysql-db

service_description MySQL Database Status

contact_groups db-admins //nhóm DB sẽ nhận notify

check_command 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

Page 19: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 19

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

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$”

}

Page 20: IT Monitoring With Nagios_Lac Tien_Man Thang

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ẫn Thắng | [email protected] 20

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.

--- ---