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
Trang 1ĐẠ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
Trang 2ĐẠ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
Trang 3VIETNAM 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
Trang 4TÓ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
Trang 5ABSTRACT
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, Net-SNMP 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
Trang 6LỜ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à
Trang 7LỜ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à
Trang 8MỤ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
Trang 93.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
Trang 10i
DANH SÁCH KÝ HIỆU, CHỮ VIẾT TẮT
Trang 11ii
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
Trang 12iii
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
Trang 131
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
Trang 142
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:
sát hệ thống mã nguồn mở phổ biến hiện nay
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
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 đề
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
Trang 153
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
Trang 164
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
Trang 175
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
Trang 18 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
Trang 197
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ó
Trang 208
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
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,
Trang 219
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?”
Trang 22là 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
Trang 23để 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
Trang 242.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
Trang 2513
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ụ:
Trang 2614
Máy tính có thể cung cấp các thông tin : tổng số ổ cứng, tổng số port nối mạng, tổng số byte đã truyền/nhận, tên máy tính, tên các process đang chạy…
Router có thể cung cấp các thông tin : tổng số card, tổng số port, tổng số byte
đã truyền/nhận, tên router, tình trạng các port của router…
Mỗi object có một tên gọi và một mã số để nhận dạng object đó, mã số gọi là Object ID (OID) [1] Ví dụ:
Tên thiết bị được gọi là sysName, OID là 1.3.6.1.2.1.1.5
Tổng số port giao tiếp (interface) được gọi là ifNumber, OID là 1.3.6.1.2.1.2.1
Địa chỉ Mac Address của một port được gọi là ifPhysAddress, OID là 1.3.6.1.2.1.2.2.1.6
2.2.6 Management Information Base (MIB)
MIB (cơ sở thông tin quản lý) [1] là một cấu trúc dữ liệu gồm các đối tượng được quản lý (managed object), được dùng cho việc quản lý các thiết bị chạy trên nền TCP/IP MIB là kiến trúc chung mà các giao thức quản lý trên TCP/IP nên tuân theo, trong đó
có SNMP MIB được thể hiện thành 1 file (MIB file), và có thể biểu diễn thành 1 cây (MIB tree) MIB có thể được chuẩn hóa hoặc tự tạo
Hình 2.5: Ví dụ minh họa cây MIB [1]
Trang 2715
Một node trong cây là một object, có thể được gọi bằng tên hoặc ID Muốn hiểu được một OID nào đó thì chúng ta cần có file MIB mô tả OID đó Một MIB file không nhất thiết phải chứa toàn bộ cây ở trên mà có thể chỉ chứa mô tả cho một nhánh con Bất
cứ nhánh con nào và tất cả lá của nó đều có thể gọi là một MIB
2.3 Các phần mềm cần thiết khác
Để xây dựng DiMS thành một giải pháp giám sát hoàn chỉnh, ngoài Icinga 2 và SNMP là các thành phần chính, hệ thống phải cần phải tích hợp thêm rất nhiều các thành phần mã nguồn mở liên quan khác Đây thực sự là một thách thức cho quá trình xây dựng Dưới đây, tôi sẽ liệt kê những phần mềm đó:
Apache: Chương trình máy chủ HTTP (Web Server), phục vụ cho việc thiết
lập giao diện người dùng trên Web của Icinga 2
PHP: Ngôn ngữ và các module của PHP, hỗ trợ Web Server
MySQL: Cơ sở dữ liệu lưu trữ thông tin hệ thống
Icinga Web 2: Giao diện người dùng của Icinga 2
Nagios plugins: Các plugin của Nagios được tích hợp với Icinga 2, được sử
dụng trong các phương thức giám sát
PNP4Nagios: Công cụ xử lý dữ liệu hiệu suất cho Icinga 2 và hiển thị dưới
dạng đồ thị trên giao diện Web
Net-SNMP: Công cụ để sử dụng và triển khai giao thức SNMP Net-SNMP
gồm hai thành phần chính là SNMPD và SNMPTRAPD Trong đó, SNMPD giúp giả lập agent và SNMPTRAPD là chương trình daemon manager giúp nhận các thông tin mà agent gửi tới
SNMPTT: Công cụ xử lý Trap (Alert) trong SNPM
Python: Công cụ tạo nên những kịch bản phục vụ trong quá trình giám sát
Chương 3 Tổng quan về hệ thống và các vấn đề trong xây dựng hệ thống
Trong chương 2, bài khóa luận đã trình bày sơ bộ về Icinga 2, SNMP cũng như giới thiệu các phần mềm cần thiết cho một giải pháp giám sát hạ tầng Trong chương 3 này, tôi sẽ giới thiệu mô hình tổng quan của hệ thống DiMS, cũng như trình bày kỹ hơn
về các thành phần của nó 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 đề
Trang 2816
3.1 Mô hình kiến trúc của hệ thống
Hình 3.1: Mô hình kiến trúc của hệ thống DiMS
Như đã giới thiệu ở các phần trước, giải pháp DiMS là một hệ thống được tích hợp rất nhiều các công cụ phần mềm mã nguồn mở, dựa trên cốt lõi Icinga 2, tạ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ị
Trang 2917
Các thiết bị vệ tinh, thiết bị khuếch đại sóng
Các thiết bị vừa là bộ phận, vừa là mục tiêu giám sát của hệ thống Mỗi một thiết
bị hoạt động trong hệ thống có nhiệm vụ cung cấp các thông tin phục vụ cho công việc giám sát Những thông tin ấy sẽ tương ứng với từng thành phần có thể giám sát được trong các thiết bị Chúng có thể là thông tin về các dịch vụ mạng đang chạy trong thiết
bị (HTTP, DNS, SNMP, PING ), cũng có thể là thông tin về tài nguyên máy (Load CPU, Disk, RAM ), thậm chí cả thông tin về cảm biến nhiệt của thiết bị đó và còn rất nhiều các loại thông tin khác Chúng ta có thể quy ước gọi mỗi một thành phần có thể
giám sát được trong thiết bị là một thành phần thuộc tính của thiết bị đó Và cách mà chúng ta có thể giám sát được các thiết bị, hay chính xác là giám sát các thành phần thuộc tính của các thiết bị như thế nào thì tôi sẽ trình bày rõ hơn ở phần tiếp theo
3.1.2 Icinga 2 Core
Có rất nhiều thứ để nói về Icinga 2 Tuy nhiên, trong phạm vi bài khóa luận, tôi sẽ chỉ trình bày một cách cơ bản nhất những thành phần của Icinga 2 liên quan đến hệ thống mà tôi xây dựng Nếu người đọc muốn hiểu sâu và rộng hơn về Icinga 2, hãy truy cập vào đường dẫn http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc, tại đây
sẽ cung cấp tất cả các thông tin cơ bản cần thiết
3.1.2.1 Các khái niệm giám sát cơ bản
Để hiểu được về Icinga 2 – cốt lõi của hệ thống DiMS, trước tiên tôi sẽ trình bày
về các khái niệm giám sát cơ bản [7] hay được sử dụng nhất trong Icinga 2
Host và service
Như đã giới thiệu ở mục 2.1 Giới thiệu về Icinga 2, Icinga 2 có thể sử dụng để
theo dõi, giám sát tính sẵn sàng của các máy chủ (host) và dịch vụ (service) được chỉ định Host và service thuộc nhóm các đối tượng chính trong Icinga 2 Chúng ta có thể
dễ dàng nhận ra rằng, các host chính là các thiết bị được chỉ định giám sát, và các service
sẽ tương ứng là các thành phần thuộc tính của các thiết bị đó như tôi đã trình bày ở mục 3.1.1 Device Giám sát nhiều thành phần thuộc tính trên một thiết bị đồng nghĩa với việc sẽ có nhiều service ứng với một host Không có giới hạn nào về việc một host chỉ được định nghĩa tối đa bao nhiêu service
Mỗi một đối tượng host cung cấp một cơ chế giúp cho một nhóm nhiều service có
thể hoạt động được trên cùng một thiết bị Dưới đây, tôi sẽ đưa ra một ví dụ về việc một
đối tượng host sẽ định nghĩa hai đối tượng service:
Trang 30Ví dụ trên tạo ra hai service “ping4” và “http” cho đối tượng host “Manh-Ha” Nó
cũng chỉ ra rằng, đối tượng host “Manh-Ha” có một kiểm tra riêng của nó bằng cách sử
dụng check command “hostalive”
Các đối tượng host đều được định danh một cách rõ ràng và được xác định qua địa
chỉ IP của đối tượng đó bằng thuộc tính address
Trạng thái của host:
Trong quá trình hoạt động, host tồn tại hai trạng thái khác nhau:
UP Host đang ở trạng thái sẵn sàng (Hoạt động tốt)
DOWN Host đang ở trạng thái không sẵn sàng (Có sự cố)
Bảng 3.1: Các trạng thái của host
Trang 3119
Trạng thái của service:
Đối với service, chúng tồn tại bốn trạng thái khác nhau:
OK Service đang hoạt động tốt, ổn định
WARNING Service đang gặp vẫn đề nhưng vẫn có thể hoạt động
CRITICAL Service đang trong tình trạng khẩn cấp
UNKNOWN Không xác định được trạng thái của dịch vụ
Bảng 3.2: Các trạng thái của service
Trạng thái hard và soft:
Trong quá trình hoạt động, khi phát hiện ra một vấn đề nào đó dù đối với host hay service, Icinga 2 sẽ thực hiện quá trình kiểm tra lại (re-check) đối tượng xảy ra vấn đề
trong một số lần cố định (được xác định thông qua việc cài đặt các tham số
max_check_attemps và retry_interval) trước khi gửi thông báo đi Điều này sẽ đảm bảo
rằng không có một thông báo không cần thiết cho những sự cố xảy ra tạm thời Trong
khoảng thời gian re-check này, đối tượng sẽ có trạng thái soft
Sau khi tất cả các re-check được thực hiện, đối tượng vẫn có trạng thái khác OK (Warning, Critical hoặc Unknown), thì đối tượng đó sẽ được chuyển sang trạng thái
hard, và lúc này thông báo mới được gửi đi
HARD Trạng thái của host/service gần đây không có sự thay đổi
SOFT Trạng thái của host/service mới bị thay đổi và đang trong
quá trình kiểm tra lại
Bảng 3.3: Trạng thái hard và soft của host/service
Kiểm tra host và service:
Host và service kiểm tra trạng thái của chúng bằng cách chạy những lệnh kiểm tra (check command) trong những khoảng thời gian thường xuyên
Trang 32Lệnh kiểm tra “hostalive” là một trong những check command được xây dựng sẵn
trong Icinga 2 Nó gửi ICMP echo request đến địa chỉ IP được gắn trong thuộc tính
address để xác định xem host có đang online hay không
Trong Icinga 2, check command dành cho service được chia thành hai loại là active check và passive check
Active check: Hoạt động dựa theo nguyên lý phương thức Poll của SNMP Cụ thể
là, Icinga 2 chủ động hỏi thông tin của thiết bị cần giám sát để thiết bị phản hồi lại Bằng cách hỏi thường xuyên và theo chu kỳ thời gian nhất định, Icinga 2 sẽ luôn cập nhật được thông tin mới nhất từ thiết bị
Passive check: Hoạt động dựa theo nguyên lý phương thức Alert của SNMP Mỗi khi thiết bị xảy ra một sự kiện (event) nào đó, thì thiết bị sẽ tự động gửi thông báo đến
cho Icinga 2 được biết Icinga 2 sẽ không hỏi thông tin định kỳ từ thiết bị như đối với
active check Thiết bị sẽ 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 Ví dụ như khi thiết bị đang hoạt động, nhiệt độ của thiết bị có thể thay đổi tùy theo môi trường hay mức độ hoạt động của thiết bị đó Nhưng nếu nhiệt độ thay đổi trong ngưỡng cho phép (thiết bị vẫn có thể hoạt động tốt) thì thiết bị sẽ không gửi thông báo đi rằng nhiệt độ hiện tại đang là bao nhiêu, nó chỉ gửi thông báo khi nhiệt độ tăng hoặc giảm vượt ngưỡng cho phép gây ảnh hưởng tới hoạt động của thiết bị đó Chính vì thế, nếu người quản trị muốn lấy những thông tin thường
xuyên thay đổi thì phải chủ động đi hỏi thông tin của thiết bị, tức là phải sử dụng active check
Icinga 2 có rất nhiều những check command được xây dựng sẵn Tuy nhiên, chúng
ta cũng có thể tự định nghĩa được các check command của riêng mình và chúng sẽ được
hướng dẫn chi tiết ở các phần tiếp theo của bài khóa luận này
Template
Mẫu (template) được sử dụng để có thể gán một tập các thuộc tính cho một nhóm
đối tượng Nếu các đối tượng có nhiều thuộc tính giống nhau, thì thay vì định nghĩa riêng ở từng đối tượng, ta có thể gộp các thuộc tính giống nhau đó thành một mẫu rồi sử dụng chung sẽ tiện lợi và hiệu quả hơn rất nhiều:
Trang 33Các đối tượng cũng như các template hoàn toàn có thể nhập (import) thêm các template khác để sử dụng Các thuộc tính được kế thừa từ template cũng có thể được
ghi đè trong các đối tượng nếu cần thiết
Ngoài những template có sẵn trong Icinga 2, chúng ta hoàn toàn có thể tự định nghĩa các template khác của riêng mình Nhưng có một lưu ý nhỏ, tên của các template không được trùng với tên của bất kỳ một đối tượng nào Mỗi đối tượng và template đều
Trang 3422
Các thuộc tính tùy chọn được định nghĩa sau ký hiệu “vars.” Như trong ví dụ trên, tôi đã định nghĩa một thuộc tính tùy chọn mới là “location” để xác định vị trí của host “Manh-Ha” là tại Hà Nội Các giá trị của một thuộc tính tùy chọn có thể là:
Chuỗi, số hoặc các giá trị boolean
object CheckCommand “my-ping” {
Trong ví dụ trên, chúng ta sử dụng macros $address$ để trỏ đến thuộc tính
address của host “Manh-Ha-Router” Ngoài ra, macros cũng có thể sử dụng để trỏ đến
thuộc tính tùy chọn, ví dụ như “$ping_wrta$”
Trang 3523
Một điểm cần luôn chú ý rằng, các macros phải được định nghĩa trong cặp dấu $$
Group
Group là tập các đối tượng tương đồng nhau theo một hoặc nhiều thuộc tính Group
giúp phân chia các nhóm đối tượng, làm cho các đối tượng hiển thị trực quan và dễ quản
lý hơn trên giao diện web
Mội đối tượng có thể tự định nghĩa cho bản thân nó thuộc group nào Ví dụ, tôi có một hostgroup tên là “linux”, và tôi muốn gán từng host vào group này, bước đầu tiên phải làm chính là tạo ra đối tượng hostgroup:
object HostGroup “linux” {
display_name = “Linux Servers”
}
Sau đó, tôi bắt đầu thêm các host của mình vào nhóm:
template Host “linux-server” {
trên các thuộc tính của chúng:
object HostGroup “Servers-HN” {
display_name = “Servers Ha Noi”
assign where host.vars.location == “Ha-Noi”
}
Trang 3624
Ở ví dụ này, tất cả các host có thuộc tính tùy chọn “location” là “Ha-Noi” sẽ được
thêm vào hostgroup “Servers-HN” bằng cú pháp “assign where”
Notification
Thông báo (notification) cho các vấn đề gặp phải với host và service là một phần
không thể tách rời trong việc thiết lập một hệ thống giám sát
Khi host hoặc service đang trong thời gian chết (downtime), một vấn đề đã được phát hiện hoặc Icinga 2 không thể truy cập để xác định được trạng thái của host/service,
thì cũng không hề có một thông báo nào gửi đi
Trên thực tế, để gửi một thông báo có rất nhiều cách: email, SMS, XMPP, IRC Tuy nhiên, tự Icinga 2 không tự biết cách làm thể nào để có thể gửi một thông báo đi
Nó phải hoạt động dựa trên một kịch bản mới có thể gửi được thông báo cho người quản
trị Vì thế, chúng ta cần xác định rõ user hoặc nhóm user (usergroup) sẽ được nhận thông báo và gán những thuộc tính cho user/usergroup đó:
object User “icingaadmin” {
display_name = “Icinga 2 Admin”
enable_notifications = true
state = [ Warning, Critical ]
type = [ Problem, Recovery ]
email = “lemanhha57@gmail.com”
}
Trong ví dụ trên, user “icingaadmin” được xác định sẽ chỉ nhận được các thông báo có kiểu là “Problem” hoặc “Recovery” với trạng thái của host/service là “Warning” hoặc “Critical” Nếu chúng ta không cấu hình các thuộc tính state và type, thì một khi
đã bật thuộc tính “enable_notifications = true”, tất cả các thông báo sẽ được gửi mà không ngoại lệ trường hợp nào
Một điều vô cùng quan trọng cần chú ý, đó là chúng ta phải bật tính năng
notification trong Icinga 2 để các lệnh thông báo (notification commands) có thể thực
hiện [13]
Command
Icinga 2 sử dụng ba loại đối tượng lệnh khác nhau để làm các công việc: chỉ định
việc kiểm tra các host/service (check command), chỉ định cách mà thông báo được gửi (notification command), và các sự kiện cần được sử lý (event command)