Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 72 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
72
Dung lượng
1,81 MB
Nội dung
ĐẠ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 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 khái niệm “giám sát mạng” khơng cịn xa lạ ngành cơng nghệ thơng tin Nó trở thành lĩnh vực nghiên cứu mạng máy tính công việc quan trọng thiếu hệ thống máy tính tổ chức, doanh nghiệp… Theo hướng nghiên cứu trên, khóa luận tập trung vào việc nghiên cứu vấn đề giám sát hoạt động hạ tầng thiết bị, dựa tảng mã nguồn mở Icinga 2, Net-SNMP Python chạy hệ điều hành CentOS Nêu vấn đề trình xây dựng hệ thống giám sát, từ đưa cách giải phù hợp cho vấn đề, với mục đích cuối xây dựng giải pháp giám sát hạ tầng thiết bị mang tên DiMS, có khả mở rộng đạt hiệu cao Đồng thời, phát triển 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ả tích hợp, đóng gói) cơng cụ cấu hình (hỗ trợ khả cấu hình, mở rộng tính 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 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, xin gửi lời cảm ơn sâu sắc đến thầy giáo, TS Hồng Xn Tùng người tận tình bảo, hướng dẫn tơi suốt q trình thực khóa luận Tôi xin chân thành cảm ơn đến thầy cô giảng dạy suốt bốn năm qua, giúp trang bị kiến thức quý báu, kinh nghiệm hữu ích để phát triển tương lai Lời cuối cùng, muốn gửi lời cảm ơn đến gia đình, tồn thể bạn bè tôi, người bên cạnh ủng hộ, giúp đỡ tơi suốt q trình học tập, rèn luyện trường động viên vượt qua khó khăn 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 thực hướng dẫn TS Hoàng Xuân Tùng Tất tham khảo từ nghiên cứu liên quan nêu nguồn gốc rõ ràng từ danh mục tài liệu tham khảo khóa luận Trong khóa luận, khơng có việc chép tài liệu, cơng trình nghiên cứu người khác mà không rõ 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 Chương Tổng quan giám sát hạ tầng mạng công cụ mã nguồn mở phổ biến 1.1 Giám sát hạ tầng mạng 1.1.1 Giám sát mạng gì? 1.1.2 Tầm quan trọng hoạt động giám sát mạng .3 1.2 Các công cụ mã nguồn mở phổ biến Chương Giới thiệu Icinga 2, SNMP phần mềm cần thiết cho giải pháp giám sát hạ tầng .6 2.1 Giới thiệu Icinga 2.1.1 Lịch sử phát triển 2.1.2 Tại sử dụng Icinga 2? .7 2.2 Giao thức giám sát SNMP 10 2.2.1 Giao thức SNMP gì? 10 2.2.2 Ưu điểm giao thức SNMP 10 2.2.3 Các thành phần SNMP 11 2.2.4 Hai phương thức giám sát POLL 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 Tổng quan hệ thống vấn đề xây dựng hệ thống 15 3.1 Mơ hình kiến trúc hệ thống 16 3.1.1 Device 16 3.1.2 Icinga Core 17 3.1.2.1 Các khái niệm giám sát 17 3.1.2.2 Các tính Icinga .26 3.1.3 DataBase .29 3.1.4 User Interface .30 3.2 Các vấn đề 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 33 3.2.3 Tùy chỉnh tối ưu giao diện người dùng 34 Chương Xây dựng 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 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 vấn đề tùy chỉnh tối ưu giao diện 42 4.2 Cơng cụ cấu hình .43 Chương Thực nghiệm kết đạt .50 5.1 Thực nghiệm .50 5.2 Kết đạt 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 thông tin cấu hình, output thường liệu thơ Chúng ta xuất trực tiếp chúng lên giao diện mà người quản trị hiểu thơng tin Dưới ví dụ đối tượng thơng tin cấu hình oduIpAddress: Hình 4.3: Thơng tin đối tượng oduIpAddress MIB Ngồi ra, có điểm cần ý, phải phân tích mức độ cảnh báo cho thơng tin nhận Như trình bày phần 3.1.2.1 Các khái niệm giám sát bản, xác định trạng thái, service có ba trạng thái OK, Warning Critical Khi thực kiểm tra, Icinga quy định tham số trả tương ứng với trạng thái OK, Warning Critical Vì ta phải phân tích mức độ cảnh báo thơng tin cho phù hợp Trong khóa luận, tơi phân tích MIB tự định nghĩa mức độ cảnh báo thông tin nhận file text Thông tin nhận thông tin thuộc dịng file text, tương ứng với trạng thái OK service, thuộc dòng tương ứng với trạng thái Warning, thuộc dịng tương ứng với trạng thái Critical Hình 4.4: Ví dụ định nghĩa mức độ cảnh báo thơng tin theo dòng text Kịch giám sát cho service passive check có đơi chút khác biệt với kịch giám sát cho service active check Các thông tin giám sát tự động trả có kiện xảy ra, kịch cần phân tích ý nghĩa thơng tin gửi lệnh cho Icinga qua ECP 46 Sau phân tích kịch giám sát, tơi bắt đầu sâu vào mơ hình kiến trúc cơng cụ GenCode Hình 4.5: Mơ hình kiến trúc GenCode Dữ liệu đầu vào GenCode nhập từ giao diện, đường dẫn plugin giám sát, đường dẫn tuyệt đối file MIB thiết bị cần giám sát OID quy định MIB Cơng việc mà GenCode cần phải làm phân tích biểu diễn liệu MIB thành cấu trúc Với OID nhập vào, GenCode truy xuất vào sở quản lý thông tin MIB theo cấu trúc vừa tạo, để tìm xác thơng tin OID đó, nhằm phục vụ sinh kịch giám sát theo khuôn mẫu Trước tiên, để sử dụng thư viện Net-SNMP dự án GenCode, cần khai báo thư viện cần thiết GenCode core: #include #include #include #include #include #include #include Một chức sử dụng thư viện Net-SNMP GenCode để phân tích MIB biểu diễn lại MIB theo cấu trúc 47 Hình 4.6: Các thành phần cấu trúc liệu MIB GenCode Core bao gồm hàm Tất chúng viết C/C++ thuần, tách biệt với giao diện QT: Hàm ParseMib: Với liệu đầu vào đường dẫn file MIB tên file MIB, hàm có nhiệm vụ phân tích MIB để biểu diễn MIB dạng cấu trúc liệu với hỗ trợ thư viện Net-SNMP: netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIB_WARNINGS, 2); netsnmp_ds_toggle_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_SAVE_MIB_DESCRS); netsnmp_init_mib(); add_mibdir(ch_mibDir); tree_head = read_mib(ch_mibPath); Hàm trả giá trị tree_head tương đương với giá trị root thông thường Hàm GetSyntax: Với đầu vào MIB mảng gồm có nhãn OID nhập vào từ giao diện, GetSyntax có nhiệm vụ duyệt MIB theo kiểu preoder, để lấy thông tin “SYNTAX INTEGER” đối tượng (được gán struct enum_list) GetSyntax chia làm ba hàm nhỏ, dùng cho ba loại check command khác (Active check cấu hình, Active check trạng thái, Passive Check) 48 Hàm GetLabel: Với liệu đầu vào mảng string OID nhập vào từ giao diện, nhiệm vụ GetLabel phải chuyển đổi string OID dạng mảng theo định dạng đối tượng oid net-snmp int num = 0; oid id_oid[30]; while (p != NULL){ //p biến char* chứa OID id_oid[num] = atol(p); num++; p = strtok(NULL, "."); } Sau đó, sử dụng hàm thư viện net-snmp để chuyển đổi từ OID sang nhãn nó: fprint_objid(fp, id_oid, id_len); // fp: id_oid: OID, id_len: độ dài mảng chứa OID stdout, Cuối tối ưu nhãn Hàm CutLabel: Với đầu vào nhãn kiểu string, hàm có nhiệm vụ tối ưu nhãn cách loại bỏ phần hiển thị không cần thiết cho nhãn Ví dụ, đối tượng có nhãn odu::oduTemperatureStatus tối ưu thành oduTemperatureStatus Hàm GetReStatus: Hàm có nhiệm vụ đối chiếu output với mức cảnh báo file text định nghĩa trước (như nói trên), để lấy giá trị trả số nguyên 0, tương ứng Hàm GetObj: Trả đối tượng tham chiếu đối tượng thuộc kiểu Event Mỗi đối tượng kiểu Event có đối tượng tham chiếu Nhiệm vụ hàm duyệt MIB để lấy tên đối tượng tham chiếu (được gán struct varbind_list) Các kịch cần xây dựng có ba loại: Active check cấu hình, Active check trạng thái, Passive Check Mỗi loại có cấu trúc khác nhau, cách sinh mã cho ba loại kịch quy định riêng biệt Cuối cùng, biên dịch chương trình Ban đầu, chạy chương trình QT Creator, chương trình lúc chưa chạy có sử dụng thư viện Net-SNMP Tuy nhiên, QT Creator tạo sẵn cho Makefile Để biên dịch chạy GenCode, cần phải thêm tùy chọn Net-SNMP vào Makefile: 49 Thêm `net-snmp-config libs` vào lệnh phần “Build Rules” Makefile Thêm `net-snmp-config cflags` vào lệnh phần “Compile” Makefile Chương Thực nghiệm kết đạt 5.1 Thực nghiệm Bài khóa luận tiến thành thực nghiệm, đo đạc hiệu hệ thống DiMS máy ảo CentOS 7-15.03-01x64, RAM 1G, processcors Hệ thống có 21 host 187 service hoạt động Sử dụng công cụ top để kiểm tra memory CPU, ta thấy tiến trình icinga2 chiếm 1% CPU, 1% Memory Ngoài ra, tiến trình khác hoạt động liên quan đến hệ thống mysqld chiếm 0.7% CPU, 12.1% Memory; snmpd chiếm 0.3% CPU, 1.1% Memory Hình 5.1: Kiểm tra thơng số hoạt động CPU Memory 50 Đo thời gian cập nhật liệu giao diện Web: Số lần thực Thời gian cập nhật (Giây) 6.1 6.5 7.0 5.9 6.5 Trung bình 6.4 Bảng 5.1: Thời gian cập nhật liệu giao diện Web DiMS Tiến hành thực nghiệm sinh kịch giám sát công cụ GenCode: Sinh kịch cho việc giám sát thông số cấu hình Ethernet (địa IP Subnet mask) thiết bị BUC (Block Up Converter – ComTech): Hình 5.2: Nhập input kịch giám sát thơng số cấu hình Ethernet 51 Hình 5.3: Kịch giám sát thơng số cấu hình Ethernet sinh Sinh kịch cho việc giám sát trạng thái Online thiết bị BUC: Hình 5.4: Nhập input kịch giám sát trạng thái Online 52 Hình 5.5: Kịch giám sát trạng thái Online sinh 53 Sinh kịch Passive check cho việc giám sát chung hai thông số PowerSupply24V1 Temperature thiết bị BUC: Hình 5.6: Nhập input cho kịch giám sát Passive check Hình 5.7: Kịch giám sát Passive Check sinh 54 5.2 Kết đạt Hệ thống DiMS xây dựng hoàn thiện gói gọn cài có dung lượng 77MB Việc cài đặt hoàn toàn tự động kịch soạn sẵn nên nhanh gọn tiện dụng, đem lại xác q trình cài đặt Với kết thực nghiệm phần trước, thấy hệ thống DiMS hoạt động mượn mà không tiêu tốn nhiều dung lượng memory hay CPU Thời gian cập nhật liệu giao diện Web mức chấp nhận (Trung bình 6,4 giây) Ngồi ra, dễ dàng mở rộng tính hệ thống với hỗ trợ đắc lực công cụ GenCode Tạo kịch giám sát khơng cịn phức tạp, nhanh nhiều so với việc soạn kịch tay Cuối cùng, kết thúc khóa luận số hình ảnh giao diện Web hệ thống DiMS triển khai: Hình 5.8: Màn hình đăng nhập 55 Hình 5.9: Màn hình giám sát Hình 5.10: Màn hình giám sát tổng quan host nhóm HCM-City 56 Hình 5.11: Màn hình giám sát chi tiết host HCMC-Mux-1 đồ thị liệu hiệu suất Hình 5.12: Màn hình giám sát service host HCMC-Mux-1 chi tiết service HW Version 57 Kết luận Trên đây, khóa luận trình bày tổng quan khái niệm liên quan đến giám sát hạ tầng mạng công cụ phần mềm giám sát mã nguồn mở phổ biến Từ đó, khóa luận tích hợp nhiều phần mềm lại với tạo thành giải pháp giám sát hạ tầng – hệ thống DiMS, dựa Icinga 2, Net-SNMP Python Cùng với đó, nêu vấn đề tồn trình xây dựng giải pháp giám sát, để tìm cách giải cho vấn đề, làm cho hệ thống DiMS trở nên hoàn hảo hơn, bao gồm cơng cụ đóng gói cơng cụ cấu hình Bên cạnh điều đạt được, khóa luận cịn vấn đề hạn chế thông tin phản hồi lên giao diện người dùng chưa thực realtime Vì vậy, giải pháp chưa thật tốt nhất, cần phải có nghiên cứu sâu để giải triệt để vấn đề Ngồi ra, cơng cụ hỗ trợ sinh kịch giám sát GenCode chưa thật linh hoạt, cần phát triển, cải tiến thêm để đạt kết cao xác Tuy nhiên, với làm được, hệ thống DiMS đạt hiệu định triển khai cho dự án thực tế Hiện Việt Nam, Icinga chưa phổ biến phát triển, cho nên, tơi mong khóa luận nguồn tham khảo hữu ích cho cơng trình nghiên cứu giải pháp giám sát hạ tầng mạng dựa Icinga tương lai 58 TÀI LIỆU THAM KHẢO [1] Diệp Thanh Nguyên, SNMP toàn tập, 2010, chương [2] Tây Ninh IT, Top công cụ giám sát hệ thống mã nguồn mở, http://tayninhit.info/top-5-cong-cu-giam-sat-he-thong-ma-nguon-mo-10.html [3] Icinga, Icinga User, https://www.icinga.org/community/icinga-users/ [4] Icinga, Icinga Has Arrived, https://www.icinga.org/2014/06/16/icinga-2-0-hasarrived/ [5] Icinga, Architecture – Integration, https://www.icinga.org/products/icinga- 2/architecture/#integration [6] Icinga Documentation, What is Icinga 2, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc#!/icinga2/latest/doc/modul e/icinga2/chapter/about-icinga2#what-is-icinga2 [7] Icinga Documentation, Monitoring Basics, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc#!/icinga2/latest/doc/modul e/icinga2/chapter/monitoring-basics#monitoring-basics [8] Icinga Documentation, Language Reference – Array, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/languagereference#array [9] Icinga Documentation, Language Reference – Dictionary, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/languagereference#dictionary [10] Icinga Documentation, Custom Attribute – Function, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoringbasics#custom-attributes-functions [11] Icinga Documentation, Icinga Template Library, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/icinga-templatelibrary#icinga-template-library [12] Icinga Documentation, Configuring Icinga first steps, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/configuring-icinga2first-steps#constants-conf [13] Icinga Documentation, Enable Features, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/clicommands#enable-features 59 [14] Icinga Documentation, External Command List Detail, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/appendix#externalcommands-list-detail [15] Icinga Documentation, Objecttype – PerfdataWrite, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/objecttypes#objecttype-perfdatawriter [16] Icinga Documentation, Setting Up Icinga Web 2, http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc#!/icinga2/latest/doc/modul e/icinga2/chapter/getting-started#setting-up-icingaweb2 [17] Nagios, Nagios Community, https://www.nagios.org/about/community/ [18] SNMP Trap Translator, SNMP Trap Translator Convert MIB, http://snmptt.sourceforge.net/docs/snmpttconvertmib.shtml [19] Wikipedia, Icinga, https://en.wikipedia.org/wiki/Icinga 60 ... nhằm phục vụ cho việc giám sát hạ tầng thiết bị Mục tiêu khóa luận xây dựng giải pháp giám sát hạ tầng thiết bị mang tên DiMS, có khả mở rộng, dựa Icinga 2, Net-SNMP Python; đồng thời, phát triển... trình xây dựng giải pháp cách giải cho vấn đề, để người đọc hiểu rõ q trình xây dựng hệ thống giám sát hồn chỉnh Bố cục khóa luận: Chương 1: Trình bày tổng quan giám sát hạ tầng mạng công cụ giám. .. Chúng ta quy ước gọi thành phần giám sát thiết bị thành phần thuộc tính thiết bị Và cách mà giám sát thiết bị, hay xác giám sát thành phần thuộc tính thiết bị tơi trình bày rõ phần 3.1.2 Icinga