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

đồ án xây dựng giải pháp giám sát hạ tầng thiết bị

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 (1.81 MB, 72 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Lê Mạnh Hà

XÂY DỰNG GIẢI PHÁP GIÁM SÁT HẠ TẦNG
THIẾT BỊ DỰA TRÊN CÁC CÔNG CỤ PHẦN MỀM
MÃ NGUỒN MỞ

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin

HÀ NỘI - 2016


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Lê Mạnh Hà

XÂY DỰNG GIẢI PHÁP GIÁM SÁT HẠ TẦNG
THIẾT BỊ DỰA TRÊN CÁC CÔNG CỤ PHẦN MỀM
MÃ NGUỒN MỞ

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin

Cán bộ hướng dẫn: TS. Hoàng Xuân Tùng

HÀ NỘI - 2016



VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING AND TECHNOLOGY

Le Manh Ha

CONSTRUCTING A MONITORING SOLUTION
FOR NETWORK INFRASTRUCTURE BASED ON
OPEN SOURCE SOFTWARE TOOLS

Major: Information Technology

Supevisor: Dr. Hoang Xuan Tung

HA NOI - 2016


TÓM TẮT
Tóm tắt: Hiện nay khái niệm “giám sát mạng” không còn xa lạ gì trong ngành công nghệ thông
tin. Nó đã trở thành một trong những lĩnh vực nghiên cứu chính về mạng máy tính và là một
công việc quan trọng không thể thiếu trong các hệ thống máy tính của các tổ chức, doanh
nghiệp… Theo hướng nghiên cứu trên, khóa luận này tập trung vào việc nghiên cứu vấn đề
giám sát hoạt động của hạ tầng thiết bị, dựa trên nền tảng mã nguồn mở Icinga 2, Net-SNMP
và Python chạy trên hệ điều hành CentOS 7. Nêu các vấn đề trong quá trình xây dựng một hệ
thống giám sát, từ đó đưa ra các cách giải quyết phù hợp cho các vấn đề, với mục đích cuối
cùng là xây dựng được một giải pháp giám sát hạ tầng thiết bị mang tên DiMS, có khả năng mở
rộng và đạt hiệu quả cao. Đồng thời, phát triển bộ công cụ hỗ trợ cho việc triển khai hệ thống
bao gồm công cụ đóng gói (hỗ trợ khả năng tích hợp, đóng gói) và công cụ cấu hình (hỗ trợ khả
năng cấu hình, mở rộng tính năng cho hệ thống).
Từ khóa: Giám sát mạng, Icinga 2, Net-SNMP, Python.



ABSTRACT
Abstract: Nowadays, the concept "network monitoring" is not new in the information
technology. It becomes one of the main research field about networking and an important task
in enterprise computer systems. This study focuses on investigating and integrating an
infrastructure monitoring solution base on open source software tools including Icinga 2, NetSNMP and Python and CentOS 7. After list issues in the process of building monitoring system,
I give some suitable solution for each one to build a complete extendable and effective
infrastructure equipment monitoring solution, namely DiMS. Also developing a set of support
tool for system development including archving tools (intergrate ability and packing) and
configuration tool (configure ability and extend system feature).
Keywords: Network monitoring, Icinga 2, Net-SNMP, Python.


LỜI CẢM ƠN
Lời đầu tiên, tôi xin gửi lời cảm ơn sâu sắc nhất đến thầy giáo, TS. Hoàng Xuân
Tùng người đã tận tình chỉ bảo, hướng dẫn tôi trong suốt quá trình thực hiện khóa luận
này.
Tôi xin chân thành cảm ơn đến những thầy cô đã giảng dạy tôi trong suốt bốn năm
qua, giúp tôi trang bị những kiến thức quý báu, cũng như những kinh nghiệm hữu ích
để có thể phát triển trong tương lai.
Lời cuối cùng, tôi muốn gửi lời cảm ơn đến gia đình, cùng toàn thể bạn bè của tôi,
những người luôn bên cạnh ủng hộ, giúp đỡ tôi trong suốt quá trình học tập, rèn luyện
tại trường và động viên tôi vượt qua những khó khăn trong cuộc sống.
Hà Nội, ngày 28 tháng 04 năm 2016
Sinh viên

Lê Mạnh Hà



LỜI CAM ĐOAN
Tôi xin cam đoan nội dung khóa luận này là do tôi thực hiện dưới sự hướng dẫn
của TS. Hoàng Xuân Tùng.
Tất cả những tham khảo từ các nghiên cứu liên quan đều được nêu nguồn gốc một
các rõ ràng từ danh mục tài liệu tham khảo trong khóa luận. Trong khóa luận, không có
việc sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ về tài liệu
tham khảo.
Hà Nội, ngày 28 tháng 04 năm 2016
Sinh viên

Lê Mạnh Hà


MỤC LỤC
DANH SÁCH KÝ HIỆU, CHỮ VIẾT TẮT ....................................................................i
DANH SÁCH HÌNH VẼ, BẢNG BIỂU ........................................................................ ii
MỞ ĐẦU .........................................................................................................................1
Chương 1. Tổng quan về giám sát hạ tầng mạng và các công cụ mã nguồn mở phổ
biến hiện nay....................................................................................................................3
1.1. Giám sát hạ tầng mạng ..........................................................................................3
1.1.1. Giám sát mạng là gì? ......................................................................................3
1.1.2. Tầm quan trọng của hoạt động giám sát mạng ...............................................3
1.2. Các công cụ mã nguồn mở phổ biến hiện nay ......................................................4
Chương 2. Giới thiệu Icinga 2, SNMP và các phần mềm cần thiết cho một giải pháp
giám sát hạ tầng ...............................................................................................................6
2.1. Giới thiệu về Icinga 2............................................................................................6
2.1.1. Lịch sử phát triển ............................................................................................6
2.1.2. Tại sao sử dụng Icinga 2? ...............................................................................7
2.2. Giao thức giám sát SNMP ..................................................................................10
2.2.1. Giao thức SNMP là gì? .................................................................................10

2.2.2. Ưu điểm của giao thức SNMP......................................................................10
2.2.3. Các thành phần trong SNMP ........................................................................11
2.2.4. Hai phương thức giám sát POLL và ALERT ...............................................12
2.2.4.1. Phương thức Poll ....................................................................................12
2.2.4.2. Phương thức Alert ..................................................................................12
2.2.4.3. Sử dụng Poll hay Alert? .........................................................................13
2.2.5. Object ID ......................................................................................................13
2.2.6. Management Information Base (MIB) .........................................................14
2.3. Các phần mềm cần thiết khác .............................................................................15
Chương 3. Tổng quan về hệ thống và các vấn đề trong xây dựng hệ thống .................15


3.1. Mô hình kiến trúc của hệ thống ..........................................................................16
3.1.1. Device ...........................................................................................................16
3.1.2. Icinga 2 Core ................................................................................................17
3.1.2.1. Các khái niệm giám sát cơ bản ..............................................................17
3.1.2.2. Các tính năng của Icinga 2 .....................................................................26
3.1.3. DataBase .......................................................................................................29
3.1.4. User Interface ...............................................................................................30
3.2. Các vấn đề trong xây dựng hệ thống ..................................................................31
3.2.1. Vấn đề tích hợp.............................................................................................31
3.2.2. Vấn đề mở rộng tính năng ............................................................................33
3.2.3. Tùy chỉnh và tối ưu giao diện người dùng ...................................................34
Chương 4. Xây dựng và tích hợp giải pháp đề xuất ......................................................34
4.1. Công cụ đóng gói ................................................................................................34
4.1.1. Giải quyết vấn đề tích hợp ............................................................................34
4.1.1.1. Vấn đề đóng gói .....................................................................................35
4.1.1.2. Vấn đề quản lý cấu hình .........................................................................36
4.1.1.3. Vấn đề cài đặt tự động hóa.....................................................................39
4.1.2. Giải quyết vấn đề tùy chỉnh và tối ưu giao diện ...........................................42

4.2. Công cụ cấu hình.................................................................................................43
Chương 5. Thực nghiệm và kết quả đạt được ...............................................................50
5.1. Thực nghiệm .......................................................................................................50
5.2. Kết quả đạt được .................................................................................................55
Kết luận..........................................................................................................................58
TÀI LIỆU THAM KHẢO .............................................................................................59


DANH SÁCH KÝ HIỆU, CHỮ VIẾT TẮT
API

Application Programming Interface

CPU

Central Processing Unit

DB

DataBase

DiMS

Dicom Monitoring System

DNS

Domain Name System

ECP


External Command Pipe

FTP

File Transfer Protocol

HTTP

HyperText Transfer Protocol

IDO

Icinag Data Output

ICMP

Internet Control Message Protocol

IP

Internet Protocol

IT

Information Technology

ITL

Icinga Template Library


MIB

Management Information Base

OID

Object Identifier

RAM

Random Access Memory

SNMP

Simple Network Management Protocol

SLA

Service Level Agreement

TCP

Transmission Control Protocol

UI

User Interface

i



DANH SÁCH HÌNH VẼ, BẢNG BIỂU
Hình 2.1: Giao diện người dùng Icinga Web 2 ...............................................................9
Hình 2.2: Mô hình kiến trúc SNMP ..............................................................................11
Hình 2.3: Hình minh họa cơ chế Poll [1] ......................................................................12
Hình 2.4: Hình minh họa cơ chế Alert [1] .....................................................................13
Hình 2.5: Ví dụ minh họa cây MIB [1] .........................................................................14
Hình 3.1: Mô hình kiến trúc của hệ thống DiMS ..........................................................16
Hình 4.1: Giao diện Icinga Web 2 đã tùy chỉnh ............................................................43
Hình 4.2: Thông tin đối tượng oduOnlineStatus trong MIB .........................................45
Hình 4.3: Thông tin đối tượng oduIpAddress trong MIB .............................................46
Hình 4.4: Ví dụ định nghĩa mức độ cảnh báo thông tin theo dòng text ........................46
Hình 4.5: Mô hình kiến trúc của GenCode....................................................................47
Hình 4.6: Các thành phần trong cấu trúc dữ liệu của cây MIB .....................................48
Hình 5.1: Kiểm tra thông số hoạt động của CPU và Memory ......................................50
Hình 5.2: Nhập input kịch bản giám sát thông số cấu hình Ethernet ............................51
Hình 5.3: Kịch bản giám sát thông số cấu hình Ethernet được sinh .............................52
Hình 5.4: Nhập input kịch bản giám sát trạng thái Online ............................................52
Hình 5.5: Kịch bản giám sát trạng thái Online được sinh .............................................53
Hình 5.6: Nhập input cho kịch bản giám sát Passive check ..........................................54
Hình 5.7: Kịch bản giám sát Passive Check được sinh .................................................54
Hình 5.8: Màn hình đăng nhập ......................................................................................55
Hình 5.9: Màn hình giám sát chính ...............................................................................56
Hình 5.10: Màn hình giám sát tổng quan các host trong nhóm HCM-City ..................56
Hình 5.11: Màn hình giám sát chi tiết host HCMC-Mux-1 cùng đồ thị dữ liệu hiệu suất
.......................................................................................................................................57
Hình 5.12: Màn hình giám sát các service của host HCMC-Mux-1 và chi tiết service
HW Version ...................................................................................................................57


ii


Bảng 3.1: Các trạng thái của host ..................................................................................18
Bảng 3.2: Các trạng thái của service .............................................................................19
Bảng 3.3: Trạng thái hard và soft của host/service .......................................................19
Bảng 3.4: Các loại log trong Icinga 2 ............................................................................27
Bảng 3.5: Một số bảng tiêu biểu trong cơ sở dữ liệu Icinga 2 ......................................30
Bảng 5.1: Thời gian cập nhật dữ liệu trên giao diện Web của DiMS ...........................51

iii


MỞ ĐẦU
Để tạo ra bước đà phát triển của công nghệ thông tin, việc đầu tư mở rộng quy mô
và chất lượng cho các hạ tầng mạng là điều tất yếu. Tuy nhiên, đi cùng với những lợi
ích khi phát triển hạ tầng mạng như khối lượng dữ liệu trong mạng lớn, đáp ứng được
nhu cầu của người dùng, hệ thống mạng phải đối đầu với rất nhiều thách thức như các
cuộc tấn công bên ngoài, tính sẵn sàng của thiết bị, tài nguyên của hệ thống… Với nhiều
khó khăn và thách thức như vậy thì việc theo dõi các thiết bị, dịch vụ trong hệ thống
mạng một cách liên tục là rất cần thiết. Một trong những giải pháp hữu hiệu nhất để giải
quyết vấn đề này là thực hiện giải pháp giám sát mạng, dựa trên những thông tin thu
thập được thông qua quá trình giám sát, các nhân viên quản trị mạng có thể nắm bắt
được tình hình mà không mất thời gian, chi phí đi lại, có thể phân tích, đưa ra những
đánh giá, dự báo, giải pháp nhằm giải quyết những vấn đề trên. Để thực hiện giám sát
mạng có hiệu quả, một chương trình giám sát phải đáp ứng được các yêu cầu sau: phải
đảm bảo chương trình luôn hoạt động, tính linh hoạt, chức năng hiệu quả, đơn giản trong
triển khai, chi phí thấp.
Trên thị trường hiện nay, có khá nhiều phần mềm mã nguồn mở thực hiện công
việc giám sát hệ thống như Nagios, Icinga, Cacti, Zabbix, MRTG... Trong khóa luận

này, tôi đề cập tới Icinga 2, một công cụ phần mềm mã nguồn mở mới, được cho là tối
ưu trong việc giám sát hạ tầng thiết bị. Từ khi ra đời phiên bản Icinga đầu tiên năm 2009
đến nay, Icinga đã liên tục phát triển để cho ra những phiên bản mới với nhiều tính năng
và hoàn thiện hơn (phiên bản mới nhất 2.4.4). Đặc biệt, Icinga có khả năng phân tán và
khả năng mở rộng vô cùng mạnh mẽ, chính vì thế mà nó có thể giám sát cho các mạng
khổng lồ. Trên thế giới hiện nay có rất nhiều tập đoàn, công ty, doanh nghiệp nổi tiếng
lựa chọn Icinga 2 làm công cụ để xây dựng giải pháp giáp sát cho hệ thống của họ, có
thể kể ra vài cái tên tiêu biểu như Audi, SAS, Adobe, GBM, Debian,... [3]
Tuy nhiên, chỉ với Icinga 2 vẫn chưa đủ, để xây dựng được một giải pháp giám sát
hoàn chỉnh phải cần tới rất nhiều các phần mềm mã nguồn mở liên quan khác. Vấn đề
đặt ra phải tích hợp các phần mềm ấy lại với nhau như thế nào thành một khối thống
nhất, hoạt động hiệu quả nhằm phục vụ cho việc giám sát hạ tầng thiết bị.
Mục tiêu của khóa luận này là xây dựng giải pháp giám sát hạ tầng thiết bị mang
tên DiMS, có khả năng mở rộng, dựa trên Icinga 2, Net-SNMP và Python; đồng thời,
phát triển bộ công cụ hỗ trợ triển khai bao gồm công cụ đóng gói (hỗ trợ khả năng tích
hợp, đóng gói) và công cụ cấu hình (hỗ trợ khả năng cấu hình, mở rộng tính năng cho
hệ thống). Bên cạnh đó, bài khóa luận cũng sẽ trình bày về các vấn đề trong quá trình
1


xây dựng giải pháp và các cách giải quyết cho từng vấn đề, để người đọc có thể hiểu rõ
hơn về quá trình xây dựng một hệ thống giám sát hoàn chỉnh.
Bố cục khóa luận:
 Chương 1: Trình bày tổng quan về giám sát hạ tầng mạng và các công cụ giám
sát hệ thống mã nguồn mở phổ biến hiện nay
 Chương 2: Giới thiệu Icinga 2 và đưa ra lý do tại sao Icinga 2 lại được lựa
chọn. Đồng thời, trình bày tổng quan về giao thức giám sát SNMP và các phần
mềm cần thiết cho một giải pháp giám sát hạ tầng.
 Chương 3: Trình bày tổng quan về hệ thống và phân tích các thành phần trong
hệ thống. Sau đó, nêu các vấn đề trong quá trình xây dựng, để từ đó đưa ra

được các cách giải quyết hợp lý, hiệu quả cho từng vấn đề.
 Chương 4: Trình bày chi tiết các bước xây dựng hệ thống và tích hợp các giải
pháp đề xuất để giải quyết cho các vấn đề đã được đặt ra trong chương 3, bao
gồm công cụ đóng gói và công cụ cấu hình GenCode.
 Chương 5: Thực nghiệm và rút ra những kết quả đã đạt được.

2


Chương 1. Tổng quan về giám sát hạ tầng mạng và các công cụ mã
nguồn mở phổ biến hiện nay
Trước khi đến với các nội dung chi tiết về giải pháp giám sát mà tôi đã xây dựng
và sẽ trình bày trong bài khóa luận, chúng ta hãy cùng nhau điểm qua những nét cơ bản
nhất về khái niệm giám sát hạ tầng mạng nói chung, đồng thời, kể tên một số công cụ
giám sát đang được sử dụng phổ biến nhất hiện nay trên thế giới.

1.1. Giám sát hạ tầng mạng
1.1.1. Giám sát mạng là gì?
Giám sát mạng là một thuật ngữ dùng để chỉ việc sử dụng một hệ thống liên tục
(có thể là một chương trình hoặc một thiết bị) để theo dõi tất cả các hoạt động của các
thiết bị, các dịch vụ trong một hệ thống mạng.
Đối với hệ thống mạng, điều quan trọng nhất là nắm được những thông tin chính
xác nhất vào mọi thời điểm. Những thông tin cần nắm bắt khi giám sát một hệ thống
mạng bao gồm:
 Tính sẵn sàng của thiết bị (Router, Switch, Server…): những thiết bị giữ cho
mạng hoạt động.
 Các dịch vụ trong hệ thống (dns, ftp, http,…): những dịch vụ này đóng vai trò
quan trọng trong một công ty, tổ chức, nếu các dịch vụ này không được đảm
bào hoạt động bình thường và liên tục, nó sẽ ảnh hưởng nghiêm trọng đến công
ty, tổ chức đó.

 Tài nguyên trong hệ thống: Các ứng dụng đều đòi hỏi tài nguyên hệ thống,
việc giám sát tài nguyên sẽ đảm bảo cho chúng ta có những can thiệp kịp thời,
tránh ảnh hưởng đến hệ thống
 Lưu lượng trong mạng: nhằm đưa ra những giải pháp, ngăn ngừa hiện tượng
quá tải trong mạng.
 Các chức năng về bảo mật: nhằm đảm bảo an ninh trong hệ thống.
 Nhiệt độ, thông tin về các thiết bị: giúp tránh hư hỏng xảy ra.
 Tạo log: thu được thông tin về những thay đổi trong hệ thống.
1.1.2. Tầm quan trọng của hoạt động giám sát mạng
Mỗi một hệ thống mạng được xây dựng đều kèm theo một dự án quản lý, giám sát
hệ thống đó. Đây là một điều hoàn toàn tất yếu, đơn giản vì không gì là hoàn hảo, lỗi
gây rối cho hệ thống có thể xảy ra bất cứ khi nào và đến từ bất kì đâu. Giám sát mạng
3


sẽ đóng vai trò duy trì sức khỏe của mạng lưới và đảm bảo tính sẵn sàng. Nó cũng có
thể giúp chúng ta xây dựng cơ sở dữ liệu thông tin quan trọng, từ đó có thể dùng để lên
kế hoạch trong sự phát triển trong tương lai.
Giám sát mạng giống như sự viếng thăm của một bác sĩ đa khoa. Nếu ông ta đang
theo dõi sức khỏe của chúng ta để tìm ra triệu chứng bệnh thông qua việc kiểm tra chức
năng các bộ phận và hoạt động tuần hoàn trong cơ thể, thì hệ thống giám sát mạng cũng
đang theo dõi dữ liệu chuyển qua toàn bộ các thiết bị trong hệ thống mạng để thu thập
thông tin.
Một ví dụ nữa sẽ cho thấy tầm quan trọng của việc sử dụng hệ thống giám sát mạng
theo một khía cạnh khác, đặc biệt là trong các hệ thống mạng lớn. Giả sử một quản trị
viên đang quản lý một hệ thống mạng của công ty bao gồm 10 Server. Trong mỗi Server,
quản trị viên đó phải lần lượt kiểm tra 10 tham số (kiểm tra hoạt động các dịch vụ, bộ
nhớ...). Như vậy, mỗi ngày phải kiểm tra 100 tham số, việc đó tiêu tốn khoảng thời gian
khá lớn. Nếu hệ thống mạng càng lớn, việc kiểm tra từng tham số như vậy là không khả
quan. Vì vậy, việc sử dụng một hệ thống giám sát là rất cần thiết. Sử dụng hệ thống giám

sát, chúng ta có thể tiết kiệm khá nhiều thời gian, thay vì tốn hàng tiếng đồng hồ để kiểm
tra toàn bộ, chúng ta chỉ tốn khoảng vài phút. Hơn nữa, khi biết được những sự cố xảy
ra trong mạng, chúng ta có thể khắc phục được những sự cố đó một cách kịp thời, đồng
thời đưa ra được những chính sách hợp lý trong việc giới hạn truy cập, quản lý băng
thông, bảo trì, nâng cấp hệ thống...
Những công việc giám sát sẽ luôn hoạt động 24/7, hàng ngày, hàng giờ và thậm
chí từng phút, từng giây, giúp cho việc quản trị trở nên dễ dàng, có hiệu quả, nâng cao
hiệu suất làm việc.

1.2. Các công cụ mã nguồn mở phổ biến hiện nay
Trong bài khóa luận này, tôi sẽ liệt kê ra 5 công cụ giám sát hệ thống mã nguồn
mở trực quan trên nền web [2]. Những công cụ này sẽ giám sát hầu như tất cả các khía
cạnh của công việc mà một người quản trị hệ thống phải làm.
 Nagios:
Đây là một trong những hệ thống giám sát Linux hiển thị kết quả trên nền web khá
lâu đời và phổ biến nhất hiện nay. Nagios cho phép giám sát độ sẵn sàng và thời gian
đáp ứng của các dịch vụ mạng, sử dụng tài nguyên hệ thống như tải CPU, phân bổ RAM,
số lượng người dùng đăng nhập...

4


Cơ chế hoạt động của Nagios là Nagios sẽ thu thập thông tin từ các máy chủ cần
giám sát thông qua Nagios client (Agent), điều này có nghĩa rằng có thể cài đặt Nagios
client trên máy chủ linux, BSD, window... sau đó trỏ chúng đến máy chủ Nagios và xem
trạng thái của các dịch vụ hoặc các quá trình của chúng ở một nơi dựa trên công cụ giám
sát Nagios web. Trong trường hợp có bất kỳ sự bất thường nào được phát hiện bởi
Nagios trên các máy chủ được giám sát thì chúng ta sẽ nhận được một cảnh báo từ
Nagios. Điều quan trọng là Nagios hỗ trợ một loạt các cảnh báo bằng email, tin nhắn
SMS, chat hoặc thậm chí các thông báo bằng cuộc gọi điện thoại.

Nagios có thế mạnh là chạy nhanh, ổn định và có một số lượng lớn bên thứ ba tích
hợp với nhiều tính năng chuyên sâu, phức tạp để có thể giám sát hầu hết mọi yếu tố.
Điểm yếu duy nhất của Nagios có lẽ chỉ là giao diện.
 Icinga:
Icinga là một sản phẩm cải tiến từ Nagios, với phiên bản ra mắt đầu tiên năm 2009.
Nó có một framework giám sát và cảnh báo xuyên suốt, được thiết kế khá tiện dụng và
kế thừa tất cả các tính năng và tuỳ chọn Nagios, nhưng có vài điểm khác biệt về giao
diện web. Icinga 1 giống với Nagios, trong khi Icinga 2 được viết lại nhằm tối ưu hiệu
suất, đơn giản trong cấu hình và cải thiện khả năng mở rộng vô cùng mạnh mẽ.
 Cacti:
Cacti là một hệ thống giám sát giao diện web khác được viết bằng ngôn ngữ PHP.
Không giống như Nagios mô tả ở trên, Cacti được thiết kế chủ yếu thể hiện kết quả dưới
dạng đồ thị. Cacti thăm dò các dịch vụ khác nhau và sau đó sẽ cho người dùng thấy các
kết quả giám sát dưới dạng đồ thị bằng công cụ RRDTool. Vì vậy, có thể xem đồ thị tải
của CPU, RAM, số liệu thống kê thời gian hoạt động các dịch vụ, băng thông sử dụng
và nhiều thông tin thu thập được từ các host khác nhau. Cũng giống như Nagios, Cacti
hỗ trợ giao thức SNMP nên nó có thể giám sát hầu như bất kỳ các thiết bị trong hệ thống
mạng: máy chủ linux, BSD, window, thiết bị Cisco, VOIP phone, Router, Switch...
Theo mặc định Cacti không cung cấp cảnh báo vì thế nên cài đặt plugin của bên
thứ ba để tích hợp kèm theo.
 Zabbix:
Zabbix là hệ thống giám sát với các chức năng đầy ấn tượng và mạnh mẽ và được
viết bằng ngôn ngữ PHP. Zabbix có thể làm các nhiệm vụ tương tự như Nagios và Cacti
ở mặc định, Zabbix dễ dàng tạo đồ thị kết quả dữ liệu theo dõi và gửi các cảnh báo cho

5


người sử dụng trong trường hợp có bất kỳ vấn đề nào xảy ra. Sử dụng Zabbix có thể tạo
bản đồ của các máy chủ, nhóm máy chủ ở nhiều loại khác nhau.

Zabbix có thể thu thập dữ liệu từ máy chủ xa nơi Zabbix Agent/client đang chạy
(như Nagios). Zabbix có các loại đồ thị bao gồm số liệu thống kê mạng, tải CPU, RAM
(giống Cacti)... Zabbix có vẻ khá phức tạp đối với người mới bắt đầu.
 MRTG:
MRTG là công cụ giám sát mã nguồn mở khác, được tạo ra bởi tác giả của
RRDTool Obi Oetiker. Công cụ này thu thập dữ liệu ở local hoặc máy chủ tử xa bằng
giao thức SNMP, nhưng đơn giản hơn nhiều so với Nagios, Icinga, Cacti và Zabbix vì
vậy có thể là một lựa chọn tốt nhất cho các dự án nhỏ. Lợi thế MRTG là nó rất dễ dàng
để triển khai. Một trong những ứng dụng phổ biến nhất của MRTG là giám sát các giao
diện mạng, CPU, bộ nhớ sử dụng.

Chương 2. Giới thiệu Icinga 2, SNMP và các phần mềm cần thiết cho
một giải pháp giám sát hạ tầng
2.1. Giới thiệu về Icinga 2
2.1.1. Lịch sử phát triển
Tháng 5 năm 2009, Icinga [19] được công bố với toàn thế giới bởi chính một nhóm
phát triển từ cộng đồng đồng Nagios, với lý do họ không hài lòng với sự phát triển trì
trệ của Nagios tại thời điểm đó, đồng thời họ cũng mong muốn dự án của họ sẽ đáp ứng
được nhu cầu phát triển nhanh và ngày càng mạnh mẽ của các mạng lưới hạ tầng.
Ngay từ năm đầu tiên, khi các nhà phát triển Icinga cho ra mắt những phiên bản
riêng biệt về các thành phần Core, API và Web, chúng đã nhanh chóng đạt được hơn
10.000 lượt tải.
Năm thứ 2, dự án Icinga chính thức phát hành phiên bản ổn định, hợp nhất Icinga
Core và Web; hỗ trợ dual-stack IPv4 và IPv6, tối ưu hóa kết nối cơ sở dữ liệu và cải tiến
giao diện người dùng Icinga Web, tích hợp thêm rất nhiều các add-on (PNP4Nagios,
LConf, Heatmap...). Số lượng lượt tải trong thời gian này đã lên tới hơn 70.000, đồng
thời đội ngũ phát triển cũng đã tăng lên thành 23 thành viên.
Sang đến năm thứ 3, số lượng lượt tải và sử dụng Icinga ngày càng tăng và đã đạt
tới con số 100.000, lúc này Icinga API đã được tích hợp vào trong Icinga Web; cải thiện
6



báo cáo SLA (Service Level Agreement); chính thức mở ra nhóm Freenode IRC và phát
triển máy ảo chuyên dụng Icinga (Icinga Virtual Appliance) trên các hệ điều hành
Debian, OpenSUSE và CentOS.
Tháng 10 năm 2012, nhóm phát triển đã cho ra mắt Icinga 2 Technology Preview
– một sản phẩm công nghệ hoàn toàn mới và được phát triển song song với phiên bản
Icinga đã có trước đó. Các nhà phát triển đã bày tỏ ý tưởng của mình để viết lại Icinga
với mục đích sửa chữa những thiếu sót như hạn chế về cấu hình và khả năng mở rộng
trong việc triển khai các dự án lớn. Icinga 2 core được viết bằng C++, thành phần kiến
trúc được thiết kế mới và đồng thời tu sửa lại quá trình thực hiện việc kiểm tra giám sát.
Tháng 6 năm 2014, dự án Icinga chính thức phát hành phiên bản ổn định đầu tiên
của Icinga 2. Cho đến thời điểm hiện tại, Icinga 2 vẫn không ngừng cải tiến và phát triển,
liên tục cho ra các phiên bản mới với nhiều tính năng được bổ sung và ngày một hoàn
thiện hơn.
2.1.2. Tại sao sử dụng Icinga 2?
Ở các phần trước, tôi đã giới thiệu một số công cụ giám sát hệ thống mã nguồn
phổ biến trên thị trường hiện nay. Tùy theo mục đích giám sát hay quy mô của hệ thống,
người dùng sẽ lựa chọn công cụ phù hợp nhất để xây dựng giải pháp giám sát cho hệ
thống của mình. Trong bài khóa luận này, tôi đã lựa chọn Icinga 2 là mục tiêu nghiên
cứu của mình. Đây là một sản phẩm công nghệ hoàn toàn mới, được cho là một công cụ
hoàn hảo cho các giải pháp giám sát hạ tầng hiện nay.
Trong tài liệu chính thức của Icinga [6] có nêu rõ : “Icinga 2 là hệ thống giám sát
mã nguồn mở có khả năng mở rộng vô cùng mạnh mẽ, theo dõi, giám sát tính sẵn sàng
các máy chủ và dịch vụ được chỉ định, thông báo cho người quản trị sự cố xảy ra và tạo
dữ liệu hiệu suất cho báo cáo. Icinga 2 có thể giám sát các môi trường lớn phức tạp trên
nhiều địa điểm khác nhau.”. Trên thực tế, điều quan tâm đầu tiên và cũng là tối quan
trọng của mọi dự án dù lớn hay nhỏ, cũng như trong bất cứ lĩnh vực nào đó chính là kinh
phí. Đối với Icinga 2, chúng ta không cần phải mảy may lo lắng bất cứ điều gì về vấn
đề này, đơn giản là vì nó là một phần mềm mã nguồn mở – hoàn toàn miễn phí cho mọi

đối tượng người dùng.
Nói về độ tin cậy, chúng ta hoàn toàn có thể an tâm. Icinga được cải tiến từ một
sản phẩm đã và đang có hơn 1 triệu người dùng là Nagios [17], cho nên số lượng người
chủ động tiếp cận và sử dụng nó xuất phát từ bộ phận này cũng không hề nhỏ. Trên thế
giới hiện nay, cộng đồng Icinga 2 đang dần lớn mạnh cả về chất và lượng. Icinga 2 có
7


mặt ở khắp mọi nơi trên Internet, từ trên các diễn đàn lớn nhỏ cho đến các mạng xã hội
Twitter, Facebook, Linkedln... Đặc biệt, không thể không nhắc tới tên những “ông lớn”
là khách hàng của Icinga 2 như Audi, SAS, Adobe, GBM, Debian,... [3]
Icinga 2 bản chất là một sản phẩm cải tiến, cho nên tính kế thừa không thể không
nhắc đến. Ngoài những tính năng ưu việt hơn thì Icinga nói chung và Icinga 2 nói riêng
vẫn kế thừa những tính năng tốt mà Nagios sẵn có; đặc biệt nhất chính là có thể tích hợp
hàng trăm plugin của Nagios vào hệ thống của mình – một trong những điều làm nên sự
tuyệt vời của Nagios cũng như Icinga 2 hiện tại. Nhờ những plugin chuyên sâu và rất đa
dạng ấy mà Icinga 2 gần như có thể đi sâu vào từng ngõ ngách của hạ tầng thiết bị để
làm công việc giám sát.
Hiệu suất là một đặc điểm làm nên thương hiệu cho Icinga 2. Nhờ thiết kế đa luồng
của mình, Icinga 2 có thể cho phép chạy 1 triệu kiểm tra trong vòng 1 phút để theo dõi
60.000 máy chủ mà không hề xảy ra bất cứ một vấn đề gì [4] – điều mà Nagios không
thể làm được. Thực tế cũng đã chứng minh khả năng về hiệu suất của Icinga 2, thông
qua cách mà các công ty, tập đoàn lớn sử dụng Icinga 2 để giám sát hệ thống khổng lồ
của họ. Ví dụ, ở Audi, Icinga 2 đang làm nhiệm vụ giám sát cho hơn 10.000 máy chủ
cùng hơn 50.000 dịch vụ đi kèm; hay ở SAS, những con số cũng lần lượt tương ứng là
6.000 máy chủ cùng với 60.000 dịch vụ [3]. Đây đều là những con số khổng lồ không
thể không tin cậy.
Icinga 2 rất dễ dàng trong cài đặt. Ngược lại với những sản phẩm tiền nhiệm là
Nagios và Icinga 1, các module thường hay được sử dụng như IDO (Icinga Data Output),
Livestatus, performance data, log... đều đã được đính kèm cùng với Icinga 2. Mọi thứ ta

cần hầu hết đều đã được tích hợp sẵn, sẽ không còn cảnh chúng ta phải lọ mọ tìm chúng
trên Internet. Giờ đây với Icinga 2, đơn giản chỉ cần nhập lệnh cli “icinga2
feature enable” hoặc “icinga2 feature disable” khi cấu hình, chúng
ta đã có thể bật hoặc tắt những module mình muốn.
Một lý do khác thuyết phục tôi lựa chọn Icinga 2 đó là Icinga 2 rất linh hoạt trong
việc mở rộng cấu hình. Định dạng cấu hình của Icinga 2 đã được thiết kế lại hoàn toàn
mới, rất logic và rõ ràng theo phong cách hướng đối tượng. Giờ đây, việc thêm hoặc bớt
các đối tượng trong Icinga 2 đã không còn gì trở ngại với bất kỳ ai.
Ngoài ra, Icinga 2 được xây dựng với rất nhiều back-end, cho nên việc tích hợp
thêm các add-on cũng khá dễ dàng. Đặc biệt, khi module Perfdata được bật, Icinga 2
đơn giản hóa việc tích hợp các công cụ hiệu suất đồ họa phổ biến như PNP4Nagios,

8


inGraph và Graphite.Trên thực tế, Icinga 2 hỗ trợ native Graphite, truyền dữ liệu hiệu
suất thông qua một kết nối trực tiếp với TCP socket của nó. Cho nên chúng ta có thể tận
hưởng cái cách mà dữ liệu hiệu suất được hiển thị trên đồ họa theo thời gian thực. Điều
này sẽ giúp giảm tải cho hệ thống, dữ liệu không cần phải ghi hay xóa trên ổ cứng theo
một kịch bản như trong Icinga 1 và Nagios [5]. Hiếm có ai có thể nói không với điều
này, dù là những người khó tính nhất trong ngành IT.
Điều cuối cùng tôi muốn nói đến là giao diện người dùng của Icinga 2. Nó được
xây dựng trên một nền tảng vững chắc và cung cấp mọi thứ ta cần cho một bộ mặt giám
sát tuyệt vời. Giao diện người dùng của Icinga 2 thiết kế thật sự rất đẹp, thân thiện với
người dùng theo phong cách hiện đại. Tuy nhiên, với đầy đủ sự tiện nghi như vậy không
có nghĩa là nó sẽ cồng kềnh. Để cài đặt được nó, chúng ta cũng chỉ mất một vài phút mà
thôi.

Hình 2.1: Giao diện người dùng Icinga Web 2
Tóm lại, Icinga 2 với sự vượt trội của nó đã và đang dần chiếm lĩnh thị trường làm

giám sát. Mọi công việc đều trở nên dễ dàng với người sử dụng khi đang có trong tay
công cụ Icinga 2. Tất cả các điều ở trên chính là câu trả lời cho câu hỏi “Tại sao tôi sử
dụng Icinga 2?”.
9


2.2. Giao thức giám sát SNMP
2.2.1. Giao thức SNMP là gì?
SNMP [1] là “giao thức quản lý mạng đơn giản”, dịch từ cụm từ “Simple Network
Management Protocol”.
Giao thức là một tập hợp các thủ tục mà các bên tham gia cần tuân theo để có thể
giao tiếp được với nhau. Trong lĩnh vực thông tin, một giao thức quy định cấu trúc, định
dạng (format) của dòng dữ liệu trao đổi với nhau và quy định trình tự, thủ tục để trao
đổi dòng dữ liệu đó. Nếu một bên tham gia gửi dữ liệu không đúng định dạng hoặc
không theo trình tự thì các bên khác sẽ không hiểu hoặc từ chối trao đổi thông tin. SNMP
là một giao thức, do đó nó có những quy định riêng mà các thành phần trong mạng phải
tuân theo.
Một thiết bị hiểu được và hoạt động tuân theo giao thức SNMP được gọi là “có hỗ
trợ SNMP” (SNMP supported) hoặc “tương thích SNMP” (SNMP compartible).
SNMP dùng để quản lý mạng, nghĩa là nó được thiết kế để chạy trên nền TCP/IP
và quản lý các thiết bị có nối mạng TCP/IP. Các thiết bị không nhất thiết phải là máy
tính mà có thể là switch, router, firewall, adsl gateway, và cả một số phần mềm cho phép
quản trị bằng SNMP.
SNMP là giao thức đơn giản, do nó được thiết kế đơn giản trong cấu trúc bản tin
và thủ tục hoạt động, và còn đơn giản trong bảo mật (trừ SNMP version 3). Sử dụng
phần mềm SNMP, người quản trị mạng có thể quản lý, giám sát tập trung từ xa toàn
mạng của mình.
2.2.2. Ưu điểm của giao thức SNMP
SNMP được thiết kế để đơn giản hóa quá trình quản lý các thành phần trong mạng.
Nhờ đó các phần mềm SNMP có thể được phát triển nhanh và tốn ít chi phí.

SNMP được thiết kế để có thể mở rộng các chức năng quản lý, giám sát. Không
có giới hạn rằng SNMP có thể quản lý được cái gì. Khi có một thiết bị mới với các thuộc
tính, tính năng mới thì người ta có thể thiết kế “custom” SNMP để phục vụ cho riêng
mình.
SNMP được thiết kế để có thể hoạt động độc lập với các kiến trúc và cơ chế của
các thiết bị hỗ trợ SNMP. Các thiết bị khác nhau có hoạt động khác nhau nhưng đáp ứng
SNMP là giống nhau. Ví dụ ta có thể dùng SNMP để theo dõi dung lượng ổ cứng còn
trống của các máy chủ chạy hệ điều hành Windows và Linux; trong khi nếu không dùng
10


SNMP mà làm trực tiếp trên các hệ điều hành này thì phải thực hiện theo các cách khác
nhau [1].
2.2.3. Các thành phần trong SNMP

Hình 2.2: Mô hình kiến trúc SNMP
SNMP Manager, còn được gọi là NMS (Network Management Station), thường là
một máy tính chạy phần mềm quản lý SNMP (SNMP management application), dùng
để giám sát và điểu khiển tập trung các network element.
Network element là các thiết bị, máy tính hoặc phần mềm tương thích SNMP. Như
vậy element bao gồm device, host và application.
Một manager có thể quản lý nhiều element, một element cũng có thể được quản lý
bởi nhiều manager. Vậy nếu một element được quản lý bởi 2 manager thì điều gì sẽ xảy
ra Nếu manager lấy thông tin từ element thì cả 2 manager sẽ có thông tin giống nhau.
Nếu 2 manager tác động đến cùng một element thì element sẽ đáp ứng cả 2 tác động
theo thứ tự cái nào đến trước.
Một khái niệm khác là SNMP agent. SNMP agent là một tiến trình chạy trên
network element, có nhiệm vụ cung cấp thông tin của element cho manager, nhờ đó
manager có thể quản lý được element. Chính xác hơn là application chạy trên station và
agent chạy trên element mới là 2 tiến trình SNMP trực tiếp liên hệ với nhau. Các ví dụ

minh họa sau đây sẽ làm rõ hơn các khái niệm này:
 Để dùng một máy chủ (= manager) quản lý các máy con (= element) chạy hệ
điều hành Windows thông qua SNMP thì chúng ta phải: cài đặt một phần mềm

11


quản lý SNMP (= application) trên máy chủ, bật SNMP service (= agent) trên
máy con.
 Để dùng một máy chủ (= manager) giám sát lưu lượng của một router (=
element) thì chúng ta phải: cài phần mềm quản lý SNMP (= application) trên
máy chủ, bật tính năng SNMP (= agent) trên router.
2.2.4. Hai phương thức giám sát POLL và ALERT
2.2.4.1. Phương thức Poll
Nguyên tắc hoạt động: Trung tâm giám sát (manager) sẽ thường xuyên hỏi thông
tin của thiết bị cần giám sát (device). Nếu Manager không hỏi thì Device không trả lời,
nếu Manager hỏi thì Device phải trả lời. Bằng cách hỏi thường xuyên, Manager sẽ luôn
cập nhật được thông tin mới nhất từ Device [1].

Hình 2.3: Hình minh họa cơ chế Poll [1]
2.2.4.2. Phương thức Alert
Nguyên tắc hoạt động: Mỗi khi trong Device xảy ra một sự kiện (event) nào đó thì
Device sẽ tự động gửi thông báo cho Manager, gọi là Alert (cách gọi khác là Trap).
Manager không hỏi thông tin định kỳ từ Device.
Device chỉ gửi những thông báo mang tính sự kiện chứ không gửi những thông tin
thường xuyên thay đổi, nó cũng sẽ không gửi Alert nếu chẳng có sự kiện gì xảy ra.
Chẳng hạn khi một port down/up thì Device sẽ gửi cảnh báo, còn tổng số byte truyền
12



qua port đó sẽ không được Device gửi đi vì đó là thông tin thường xuyên thay đổi. Muốn
lấy những thông tin thường xuyên thay đổi thì Manager phải chủ động đi hỏi Device,
tức là phải thực hiện phương thức Poll [1].

Hình 2.4: Hình minh họa cơ chế Alert [1]
2.2.4.3. Sử dụng Poll hay Alert?
Hai phương thức Poll và Alert có điểm thuận lợi và bất lợi ngược nhau, do đó nhiều
trường hợp ta nên sử dụng kết hợp cả Poll lẫn Alert để đạt được hiệu quả kết hợp của cả
hai [1].
Các ví dụ ứng dụng cơ chế Poll & Alert :
 Giao thức Syslog: mỗi khi có sự kiện xảy ra thì thiết bị sẽ gửi bản tin syslog
đến Syslog Server.
 Phần mềm NetworkView, giám sát tình trạng các server bằng cách ping liên
tục.
 Giao thức STP, phát hiện loop trong mạng bằng cách gửi nhận các gói BPDU
và gửi bản tin Topology change mỗi khi phát hiện thay đổi.
 Trong quản lý người ta luôn thực hiện song song chế độ kiểm tra và báo cáo,
thường xuyên kiểm tra để phát hiện vấn đề và báo cáo ngay khi xảy ra vấn đề.
2.2.5. Object ID
Một thiết bị hỗ trợ SNMP có thể cung cấp nhiều thông tin khác nhau, mỗi thông
tin đó gọi là một object [1]. Ví dụ:

13


×